Docker搭建MySQL主从同步

下载MySQL镜像

docker pull mysql:5.7

启动MySQL

docker run -p 3339:3306 --name mysqlmaster -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

docker run -p 3340:3306 --name mysqlsalve -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

数据配置

docker exec -it 627a2368c865 /bin/bash

在编辑配置文件的时候需要现在容器中下载vim,否则无法使用编辑功能。

apt-get update
apt-get install vim

先进入 主数据库 /etc/mysql文件夹,使用vim my.cnf添加配置信息

[mysqld]
# 在一个局域网内需要唯一
server-id=1
# 开启二进制日志功能
log-bin=mysql-bin

重启mysql service mysql restart,重启mysql会导致Docker容器也重启, docker start mysqlmaster

在Master数据库需要创建一个同步的用户,授予用户 slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据。

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

再修改 从数据库

[mysqld]
server-id=2
# 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
# relay_log配置中继日志
relay_log=edu-mysql-relay-bin

链接Master和Slave

在Master数据库输入 show master status;

image-20200817214451502

在Slave数据库中需要使用到File和Position的值,在这一步之后,如果操作了Master数据库,会导致这两个字段变更。

在Slave执行连接操作。

change master to master_host='ip', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000002', master_log_pos= 5577, master_connect_retry=30;

开启主从同步过程

start slave

在正常情况下,就可以进行主从复制了。

无法同步问题排查

在从库查询同步状态 show slave status

image-20200817214330088

Slave_SQL_Running和Slave_IO_Running为no导致无法同步

如果 Slave_SQL_Running:no

stop slave;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE; 
start slave;

使用show slave status 查看是否变为 yes

如果Slave_IO_Running:no

查询助数据库状态 show master status查看File

image-20200817214351965

在Slave上

slave stop;
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=0;
slave start;
show slave status;

image-20200817214407170

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值