3:添加一个slave到已有的复制环境(基于二进制日志文件位置)
发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,服务器 192.168.1.2 (master) ,服务器 192.168.1.3 (old slave) 服务器 192.168.1.4 (new slave)您可以将另一个slave添加到现有复制
千家信息网最后更新 2025年11月10日3:添加一个slave到已有的复制环境(基于二进制日志文件位置)
- 服务器 192.168.1.2 (master) ,服务器 192.168.1.3 (old slave) 服务器 192.168.1.4 (new slave)
- 您可以将另一个slave添加到现有复制配置,而无需停止master。为此,您可以通过复制现有slave的数据目录并为新slave提供不同的server ID (由用户指定)和服务器UUID(在启动时生成)来设置新slave。
- 在old slave
- #停止复制
- mysql> stop slave;
- Query OK, 0 rows affected (0.00 sec)
- #查看主二进制日志文件和中继日志文件位置
- mysql> show slave status\G
- #关闭old slave的mysql服务
- [root@iZ2zee8t2icu340bpmaw23Z ~]# service mysqld stop
- Redirecting to /bin/systemctl stop mysqld.service
- [root@iZ2zee8t2icu340bpmaw23Z ~]# ps -ef |grep mysql
- root 14618 14474 0 21:33 pts/0 00:00:00 grep --color=auto mysql
- #将old slave的数据目录打包
- [root@iZ2zee8t2icu340bpmaw23Z ~]# cat /etc/my.cnf | grep datadir
- datadir=/var/lib/mysql
- [root@iZ2zee8t2icu340bpmaw23Z ~]# cd /var/lib/mysql
- [root@iZ2zee8t2icu340bpmaw23Z mysql]# tar -zcvf /tmp/file.tar.gz *
- #启动mysql
- [root@iZ2zee8t2icu340bpmaw23Z mysql]# service mysqld start
- #开始复制
- mysql> start slave;
- Query OK, 0 rows affected, 1 warning (0.00 sec)
- 在new slave上
- #先关闭mysql
- [root@iZ2ze7skefrz53o5o1at5hZ ~]# service mysqld stop
- Redirecting to /bin/systemctl stop mysqld.service
- #复制old slave的数据目录,进入本机的mysql数据目录
- [root@iZ2ze7skefrz53o5o1at5hZ ~]# cat /etc/my.cnf | grep datadir
- datadir=/var/lib/mysql
- [root@iZ2ze7skefrz53o5o1at5hZ ~]# cd /var/lib/mysql
- #利用scp把数据给拿过来
- [root@iZ2ze7skefrz53o5o1at5hZ mysql]# scp root@192.168.1.3:/tmp/file.tar.gz /tmp
- #这时候我们需要先把本机的数据给备份一下
- [root@iZ2ze7skefrz53o5o1at5hZ mysql]# tar -zcvf /tmp/mysql_back.tar.gz *
- #然后将old slave的数据给压缩
- [root@iZ2ze7skefrz53o5o1at5hZ mysql]# tar -zxvf /tmp/file.tar.gz
- #从当前机器上的数据目录副本中删除auto.cnf文件,以便使用不同的生成server UUID启动新slave服务器。 server UUID必须是唯一的。
- [root@iZ2ze7skefrz53o5o1at5hZ mysql]# rm auto.cnf
- rm: remove regular file 'auto.cnf'? y
- #为服务器配置server_id和--skip-slave-start选项,指定了--skip-slave-start的话,那么mysql启动的时候复制就不会启动
- #启动mysql服务器并登陆,查看有关信息(这里要注意,因为你直接复制的old slave的数据目录,所以登录mysql的时候要输入old slave对应的用户密码,最后需要修改过来)
- mysql> show slave status\G
- #如果跟step4可以对应的上,那就没有啥问题,然后启动复制
- mysql> start slave;
- ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository
- #1872 错误 这个时候我们查看一下错误日志
- [root@iZ2ze7skefrz53o5o1at5hZ ~]# tail -f /var/log/mysqld.log

- 意思是从./iZ2ze7skefrz53o5o1at5hZ-relay-bin.index找不到./iZ2zee8t2icu340bpmaw23Z-relay-bin.000004 relay log 文件,原因是由于我使用的是冷备份文件恢复的实例,在mysql库中的slave_relay_log_info表中依然保留之前relay_log的信息,所以导致启动slave报错。解决方法如下
- mysql> reset slave;
- Query OK, 0 rows affected (0.02 sec)
- mysql> start slave;
- Query OK, 0 rows affected (0.02 sec)
- mysql> show slave status\G
* - 那么就说明成功了
- 添加一下测试数据,看下数据是否同步
注意事项:
- 在新的slave上,一定要查看错误日志以及对比新slave和现有slave的show slave status内容,查看Master_Log_File和Read_Master_Log_Pos是否有差异
- 因为你直接复制的old slave的数据目录,所以登录new salve的mysql的时候要输入old slave对应的用户密码,最后需要修改过来
reset slave讲解:
- 参考链接: https://dev.mysql.com/doc/refman/5.7/en/reset-slave.html
- RESET SLAVE makes the slave forget its replication position in the master's binary log. This statement is meant to be used for a clean start: It clears the master info and relay log info repositories, deletes all the relay log files, and starts a new relay log file. It also resets to 0 the replication delay specified with the MASTER_DELAY option to CHANGE MASTER TO. RESET SLAVE does not change the values of gtid_executed or gtid_purged.
- RESET SLAVE会让slave忘记master的二进制文件的复制位置。主要用于干净的启动一个复制,它会清除主信息和中继日志信息库(就是清除mysql.slave_master_info和slave_relay_log_info这两个表),删除所有的中继日志文件,并且启动一个新的中继日志文件。会将CHANGE MASTER TO的 MASTER_DELAY选项指定的值重置为0,RESET SLAVE 不会更改gtid_executed或gtid_purged的值。
参考链接:https://dev.mysql.com/doc/refman/5.7/en/binlog-replication-configuration-overview.html
PREV: 2:基于二进制日志文件位置的复制 https://blog.51cto.com/itzhoujun/2351367
NEXT: 4:GTID简单介绍 https://blog.51cto.com/itzhoujun/2352688
数据
文件
日志
服务
服务器
目录
信息
时候
中继
二进制
位置
用户
错误
不同
备份
密码
链接
本机
参考
生成
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
海南的软件开发公司
小学网络安全课件
网络安全防护提升行动
数据库技术 sql 实践
网络安全怎么写字要少
罗克韦尔自动化大连软件开发中心
服务器安全怎么学
数据库表建索引意义
讨论题如何建立网络安全防线
自学网络安全有什么用
有关网络技术的资料
java 数据库超时异常
软件开发工作干不了怎么办
上海晨奚互联网科技
imfifs数据库怎么用
软件开发的电子设备有什么
长沙网络安全培训机构
12306数据库被删
网络安全态技术与应用
中职网络技术培训班
环境网络安全
例举数据库操作三大类指令
外包软件开发公司简介
网站数据库视频
佛山安卓软件开发方案
全球最新反倾销数据库
牡丹 基因组数据库
access数据库表格的使用
数据库中 的用法
qt中将结构体数据存入数据库