为了方便操作,这里使用docker(docker安装与使用详见:链接)
环境准备
- 创建网桥
docker network create nw-ms - 主MySQL环境:
docker run -it --name=master --network=nw-ms --network-alias=master uetty/mysql:5.7.23 vim /etc/mysql/mysql.conf.d/mysqld.cnf添加两行
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log- 重启MySQL
service mysql restart - 退出容器
ctrl + p && ctrl + q - 从MySQL环境:
docker run -it --name=slave --network=nw-ms --network-alias=slave uetty/mysql:5.7.23 vim /etc/mysql/mysql.conf.d/mysqld.cnf添加两行
server-id = 100
log_bin = /var/log/mysql/mysql-bin.log- 修改从服务器UUID使其不跟主服务器一样(使用docker部署同一台机子上会出现uuid一样的情况)
vim /var/lib/mysql/auto.cnf - 重启MySQL
service mysql restart - 退出容器
ctrl + p && ctrl + q
创建从服务器登陆主服务器账号并授权
- 进入主服务器
docker exec -it master bash - 登陆mysql:
mysql -uroot -p123456 - 创建账号并授权
create user root@'slave.nw-ms' identified by '123456';登陆用户ip限制根据需要随意放宽
grant replication slave on *.* to 'root'@'slave.nw-ms' identified by ‘123456’;
flush privileges; - 查看当前log文件名及位置作为同步起始点(保证主库停止更新的情况下,如果还有更新任务,应暂时锁表禁止更新
FLUSH TABLES WITH READ LOCK,待主从库数据相同,并且记录下主库file和position之后再解除UNLOCK TABLES;)
show master status;如下所示,记录下File和Position
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 752 | | | |
+------------------+----------+--------------+------------------+-------------------+
- 退出主服务器
ctrl + p && ctrl + q
从服务器配置
确保从服务器数据与主服务器相同
- 进入从服务器
docker exec -it slave bash - 登陆mysql:
mysql -uroot -p123456 - 设置同步参数
change master to master_host='master', master_user='root', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=752;注:此处master_host对应docker容器运行时的--network-alias,也可直接使用ip地址,master_log_file和master_log_pos即对应前面show master status;所显示的数据 - 开始同步
start slave; - 验证是否成功
show slave status\G,查看列出的信息内的以下两个参数值是否不为NO,否则同步失败,若同步失败可关注Last_IO_Error参数找出同步失败原因
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
- 最后就可以在主库中写一些数据试试看了

本文详细介绍了如何使用Docker环境快速搭建MySQL主从复制系统,包括环境准备、主从服务器配置、账号授权、数据同步等关键步骤。
927





