-
配置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
-
安装/启动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
-
主库创建用户
// 设置语法兼容 SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','')); // 添加备库用户 GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by '123456';
-
从库配置
// 设置语法兼容 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;
-
启动从库,并验证是否生效
start slave; // Waiting for master to send event 就是成功了 // Connecting to master 多半是连接不通 show slave status;
-
读写分离中间件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>
-
测试mycat
// 用navicat链接逻辑mycat数据库 // 查询见下图 select * from product; // 插入见下图 INSERT INTO `TESTDB`.`product` ( `pro_code`, `ck`, `kw`, `ck_status`, `get_confirm` ) VALUES ( '3232424242421', '2号仓库', '2号库位', '待出库', '收获已经确认' );
mysql docker 双机热备 读写分离安装
最新推荐文章于 2023-10-11 10:10:39 发布