mysql docker dual-machine hot standby read-write separation installation

  1. configure mysql cnf

    // 创建映射数据目录
    mkdir -pv /mysql/data 
    // 建立映射配置目录 
    mkdir -pv /mysql/101
    mkdir -pv /mysql/102
    // 编辑mysql配置目录
    vi /mysql/101/101.cnf
    
    [mysqld]
    log-bin=master-bin
    server-id=101
    
    vi /mysql/102/102.cnf
    
    [mysqld]
    log-bin=master-bin
    server-id=102
    
    
    
    
  2. install/start mysql

    // 101 root 123456
    docker run -d --name mysqlsrv101 -v /mysql/data/mysql101:/var/lib/mysql -v /mysql/101:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 reg.sierac.net:90/sierac-images/sierac-mysql:5.6.36
    // 102 root 123456
    docker run -d --name mysqlsrv102 -v /mysql/data/mysql102:/var/lib/mysql -v /mysql/102:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -p 3307:3306 reg.sierac.net:90/sierac-images/sierac-mysql:5.6.36
    
  3. main library create user

    // 设置语法兼容
    SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
    // 添加备库用户
    GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by '123456';
    
  4. Configure from library

    // 设置语法兼容
    SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
    // 设置与主服务器相关的配置参数
    // master_host:主容器ip,eg:172.17.0.2
    // master_log_file:在主库中通过show master status;查看得到
    // master_log_pos:在主库中通过show master status;查看得到
    change master to master_host='172.17.0.1',master_user='backup',master_password='123456',master_log_file='master-bin.000002',master_log_pos=320;
    
  5. Start the slave library and verify whether it takes effect

    start slave;
    // Waiting for master to send event 就是成功了 
    // Connecting to master 多半是连接不通
    show slave status;
    
  6. Read-write separation middleware mycat

    // 下载mycat镜像
    docker push registry.sieracpack.com:90/sierac-images/mycat:1.6
    // 启动容器
    docker run -d --name=mycat --memory="1024m" --restart=unless-stopped -p 8066:8066 -p 9066:9066 -e TZ="Asia/Shanghai" registry.sieracpack.com:90/sierac-images/mycat:1.6
    // 配置中间件用户和规则
    // server.xml添加
    
    <user name="root">
        <property name="password">123456</property>
        <property name="schemas">TESTDB</property>
    </user>
    // schema.xml替换如下
    // 参数详见http://songwie.com/attached/file/mycat_1.5.2.pdf
    
    <?xml version="1.0"?>
    <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
    <mycat:schema xmlns:mycat="http://io.mycat/">
    
    <!-- 数据库配置,与server.xml中的数据库对应 -->
    <schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100">
        <table name="product" dataNode="dn1" ruleRequired="false"/>
    </schema>
    
    <!-- 分片配置 -->
    <dataNode name="dn1" dataHost="dbhost" database="test" />
    
    
    <!-- 物理数据库配置 -->
    <dataHost name="dbhost" maxCon="1000" minCon="10" balance="3"  writeType="0" dbType="mysql" dbDriver="native">
        <heartbeat>select user();</heartbeat>
        <writeHost host="hostM1" url="172.17.0.3:3306" user="root" password="123456">
        <readHost host="hostS1" url="172.17.0.4:3306" user="root" password="123456">
        </readHost>
        </writeHost>
    </dataHost>
    
    </mycat:schema>
    
    
  7. test mycat

    // 用navicat链接逻辑mycat数据库
    // 查询见下图
    select * from product;
    // 插入见下图
    INSERT INTO `TESTDB`.`product` (
        `pro_code`,
        `ck`,
        `kw`,
        `ck_status`,
        `get_confirm`
    )
    VALUES
    (
    	'3232424242421',
    	'2号仓库',
    	'2号库位',
    	'待出库',
    	'收获已经确认'
    );
    

image

Guess you like

Origin blog.csdn.net/fzt12138/article/details/101065119