Docker搭建Mysql主从复制

1.运行已安装好的mysql

docker start mysql

 2.进入容器

docker exec -it mysql bash

3.编辑MySQL配置文件

cd /etc/mysql/conf.d/mysql.cnf

 4.添加一下配置

[mysqld]

#服务id,在一个主从复制集群中要唯一,值范围1-255

server-id = 1

#开启log-bin日志,非常重要,复制原理也是基于这一个,后面的值随便写我这里就写mysql-master-bin了

log-bin = mysql-master-bin

#从机复制时,忽略的数据库,也就是说这里配置的数据库不会被从机同步

binlog-ignore-db = mysql,information_schema,performance_schema,sys

#同步的数据库名称

binlog-do-db=db_test

 5.然后去登录MySQL,修改root用户密码插件

mysql -uroot -p123456

ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘123456’;

FLUSH PRIVILEGES;

6.重启容器

docker restart mysql

7.重新进入容器 登录mysql客户端 ,查看主机状态

        执行这个命令后出来的表,File和Position字段值,可以截个图钉在桌面上,后面会用

show master status;

 8.退出容器查看ip地址

        同样截图钉在桌面

docker inspect mysql-master | grep IPAddress

 9.使用命令再次启动一个MySQL镜像, 镜像名称改一下,端口改一下就行了

        使用原有的mysql版本就行,我用的是8.0.32

docker run --name mysql-slave -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.32

 10.进入容器内部

docker exec -it mysql-slave bash

11. 编辑MySQL的配置文件,加上这个配置,server-id不重复即可

        /etc/mysql/conf.d/mysql.cnf

[mysqld]

server-id = 2

12.重启mysql-slave

docker restart mysql-slave

13.在从机mysql-slave 中设置主机配置 

change master to
master_host='<第八步查出的IP地址>',
master_user='root',
master_password='123456',
master_log_file='<第七步查出的file值>',
master_log_pos=<第七步查出的position值>;

14.启动slave 命令

start slave; 

15.查看slave状态 

show slave status \G 

如果SlaveIORunning 和 SlaveSQLRunning的值都是Yes,代表你配置成功了,可以使用连接工具连接主机,然后建一个数据库db_test,再建一个表,添加一点数据,再连接从机,查看数据是否同步过来了

  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值