Mycat+docker+mysql实现主从复制(一主一从)

本文档详细介绍了在Mycat1.6.7.3和MySQL5.7环境下,如何通过docker部署并实现MySQL的一主一从复制配置。涉及配置文件修改、权限授权、主从同步状态检查以及Mycat中schema.xml的设置。重点强调了不能使用MySQL8.0,以免出现兼容性问题。最后提供了远程连接Mycat的命令及负载均衡类型的说明。
摘要由CSDN通过智能技术生成

一、实验环境

1.mycat1.6.7.3
2.mysql5.7
3.docker最新版

注意选择环境情况

经过本人不断的查阅资料与我不断的实验,mycat连接mysql的版本5.7,不要使用MySQL8.0版本,不然会出现很多错误。

二、docker容器中的mysql实现主从复制(一主一从)

  • 主机配置文件
编辑mysql配置文件。如果不存在就自己新建my.cnf
添加代码:
[client]
port = 3306
[mysqld]
server-id=1   //ID不要重复
log-bin=mysql-bin    //日志名,可以在前面添加路径
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-do-db=db1  //需要复制的数据库
binlog_format=STATEMENT 
  • 从机配置文件
[client]
port = 3306
[mysqld]
server-id=2
relay-log=mysql-relay  //启动relay日志
  • 进入主机的mysql命令窗口
#在主机MySQL里执行授权命令
GRANT REPLICATION SLAVE ON *.* TO 'slave'@ %'IDENTIFIED BY '123123';  //创建slave用户供从机使用

输入:查看主机的状态,纪录日志文件名,从机复制的接入点:154
在这里插入图片描述

  • 进入从机的MySQL命令窗口
输入连接主机的命令:
 CHANGE MASTER TO MASTER_HOST='172.17.0.3', MASTER_USER='slave', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=154;

start slave;  //启动复制操作

show slave status\G; //查看状态连接情况

在这里插入图片描述
出现两个yes表示连接成功

  • Mycat中的schema.xml配置
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

        <schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1">
        </schema>
        <dataNode name="dn1" dataHost="localhost1" database="db1" />
        <dataHost name="localhost1" maxCon="1000" minCon="10" balance="3"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <!-- can have multi write hosts -->
                <writeHost host="hostM1" url="172.17.0.3:3306" user="root"
                        password="root">
                        <readHost host="hostS1" url="172.17.0.2:3306" user="root" password="root"/>
                </writeHost>
                <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
        </dataHost>
</mycat:schema>

远程连接Mycat的命令

mysql -uroot -p123456 -P8066 -h192.168.183.131 --default_auth=mysql_native_password
负载均衡类型,目前的取值有4种:
1、 balance="0",不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。
2、balance="1",全部的readHost与 stand by writeHost参与 select 语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且 M1与M2互为主备),正常情况下,M2,S1,S2都参与 select语句的负载均衡。
3、balance="2",所有读操作都随机的在 writeHost、readhost上分发。
4、 balance="3",所有读请求随机的分发到readhost执行,writerHost不负担读压力。
  • 安装mysql容器命令
docker run -d -p 9003:3306 --privileged=true  -v /myMysql/twoCopy/conf/s2:/etc/mysql -v /myMysql/twoCopy/data/s2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mysqlS2 mysql:5.7
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值