docker部署mysql主从复制

1.安装主从mysql服务

docker run -p 3339:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
docker run -p 3340:3306 --name mysql-slave1 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

 

2.配置master主机

(1)docker exec -it mysql-master /bin/bash

(2)vim /etc/mysql/my.cnf配置如下 内容

[mysqld]
## 同一局域网内注意要唯一
server-id=100
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin

(3)重启mysql服务使配置生效:service mysql restart

(4)重启容器:docker start mysql-master

(5)数据库创建数据同步用户,授予用户 slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据
mysql -uroot -p123456
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
flush privileges;

  

3.配置slave从机

(1)docker exec -it mysql-slave1 /bin/bash

(2)vim /etc/mysql/my.cnf配置如下 内容
[mysqld]
## 同一局域网内注意要唯一
server-id=101
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
## relay_log配置中继日志
relay_log=mysql-relay-bin

(3)重启mysql服务使配置生效:service mysql restart

(4)重启容器:docker start mysql-slave1

 

4.链接mater和slave

(1)在Master进入mysql,执行show master status;

(2)在Slave进入mysql,执行命令:
change master to master_host='172.17.0.2', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=617, master_connect_retry=30;
命令分析:
	master_host='172.17.0.2':主机容器ip地址,通过docker inspect mysql-master查看
	master_user='slave':主机数据同步用户账号
	master_password='123456':主机数据同步用户密码
	master_port=3306:主机容器内端口,非映射到宿主机的端口
	master_log_file='mysql-bin.000001':指定 Slave 从哪个日志文件开始复制数据,通过在master执行show master status查看
	master_log_pos=617:从哪个 Position 开始读,通过在master执行show master status查看
	master_connect_retry=30:如果连接失败,重试的时间间隔,单位是秒,默认是60秒

(3)开启主从复制,SlaveIORunning 和 SlaveSQLRunning 都是No,因为我们还没有开启主从复制过程。使用start slave;开启主从复制过程,然后再次查询主从同步状态show slave status \G;

(4)show slave status \G;查看Last_IO_Errno、Last_IO_Error、Last_SQL_Errno、Last_SQL_Error、SlaveIORunning 、SlaveSQLRunning等指标,查看主从复制是否配置成功

(5)主从复制排错:
	网络不通(检查ip,端口)
	密码不对(检查是否创建用于同步的用户和用户密码是否正确)
	pos不对(检查Master的 Position)

  

5.测试主从复制功能,测试主从数据库是否同步,简单的可以用navicat测试

 

 

注意:
1.docker容器安装vim
  apt-get update
  apt-get install -y vim

2.这里只配置一个从机,如若需要可以配置多个从机,配置与mysql-slave1一致

 

posted @ 2021-05-25 11:10  詹姆溪  阅读(195)  评论(0编辑  收藏  举报