基于Docker的MYSQL 配置主从复制
注意:主从复制是通过mysql的日志实现的,这里如果主库中已经有了一部分数据在进行从库配置的时候要先手动把这一部分旧的数据导入进来
Master(主) 配置
master(主) 修改 /etc/mysql/my.cnf
[mysqld]
## 同一局域网内注意要唯一
server-id=100
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
master 新增 slave用户,并授于REPLICATION SLAVE
权限、REPLICATION CLIENT
权限
CREATE USER ‘slave‘@‘%‘ IDENTIFIED BY ‘1234‘;
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO ‘slave‘@‘%‘;
通过 docker restart <CONTAINER ID>
重启master容器
进入master,使用show master status;
查看File、Position 供下面从库配置时使用
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 | 107 | | |
+------------------+----------+--------------+------------------+
Slave(从) 配置
slave(从) 修改 /etc/mysql/my.cnf
server-id=101
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin
slave连接master相关的信息,注意master库先不做修改,否则File和Position的值会发送状态变化,当master中的File和Position与master_log_file、master_log_pos不一致时修改一致就可
change master to master_host=‘172.17.0.3‘, master_user=‘slave‘, master_password=‘1234‘, master_port=3306, master_log_file=‘mysql-bin.000004‘, master_log_pos=107, master_connect_retry=30;
这个时候通过show slave status \G;
发现SlaveIORunning 和 SlaveSQLRunning 都是No。需要通过start slave
来开启主从复制。如果开启的过程中报错可以先使用stop slave
来停止复制,再通过reset slave
来重置一下slave相关的配置,最后再通过start slave
来开启主从复制。
核查:在master中通过show slave hosts;
来查看从库的节点
参考文章:
https://www.cnblogs.com/songwenjie/p/9371422.html
https://blog.csdn.net/lzj0470/article/details/42713463
https://blog.csdn.net/xiao90713/article/details/82563764