【docker】使用Docker快速体验MySQL半同步复制机制

  • 准备工作 docker 拉取安装 docker 镜像
  • 配置外部conf 文件
    • 编辑主库配置
# 编辑
vi docker/mysql/master/conf/my.cnf
#内容
[mysqld]
binlog-format=ROW
log-bin=master-bin
log-slave-updates=true
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=2
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
server-id=1
report-port=3306
report-host=master
plugin_load="rpl_semi_sync_master=semisync_master.so"
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000
  • 编辑从库1配置
# 编辑
vi docker/mysql/slave1/conf/my.cnf
#内容
[mysqld]
binlog-format=ROW
log-bin=mysql-bin.log
log-slave-updates=true
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=2
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
server-id=11
report-port=3306
report-host=slave1
plugin_load="rpl_semi_sync_slave=semisync_slave.so"
rpl_semi_sync_slave_enabled=1
  • 编辑从库2配置
# 编辑
vi docker/mysql/slave2/conf/my.cnf
#内容
[mysqld]
binlog-format=ROW
log-bin=mysql-bin.log
log-slave-updates=true
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=2
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
server-id=12
report-port=3306
report-host=slave1
plugin_load="rpl_semi_sync_slave=semisync_slave.so"
rpl_semi_sync_slave_enabled=1
  • 运行多实例
# 主
docker run  -itd -p 3306:3306 -v /docker/mysql/master/conf:/etc/mysql/ --name mysql-master -e MYSQL_ROOT_PASSWORD=123456  mysql
# 从1
docker run  -itd -p 3307:3306 -v /docker/mysql/slave1/conf:/etc/mysql/ --name mysql-slave1 -e MYSQL_ROOT_PASSWORD=123456  mysql
# 从2
docker run  -itd -p 3308:3306 -v /docker/mysql/slave2/conf:/etc/mysql/ --name mysql-slave2 -e MYSQL_ROOT_PASSWORD=123456  mysql
  • 获取三个容器的IP
docker inspect --format '{{.NetworkSettings.IPAddress}}' master slave1 slave2
  • 进入主库容器 配置相关账号
  • 进入从库开启 slave
> CHANGE MASTER TO MASTER_HOST='172.17.0.100',MASTER_USER='slave',MASTER_PASSWORD='123456', MASTER_AUTO_POSITION=1;
> START SLAVE;
  • 查看同步状态
show slave status \G;
  • 验证【略】

参考博文https://cloud.tencent.com/developer/article/1338804https://www.cnblogs.com/songwenjie/p/9371422.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT从业者的职业生涯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值