17.1.1.9 Introducing Additional Slaves to an Existing Replication Environment 引入额外的Slaves 到一个存在的复制

17.1.1.9 Introducing Additional Slaves to an Existing Replication Environment   引入额外的Slaves 到一个存在的复制环境:


如果添加另外的slave 到一个存在的复制配置,你可以这样做 不需要停止master.


代替的是,设置新的slave 通过 拷贝一份存在的slave,除了配置新的slave 使用不同的server-id值



复制现有的存在slave:

1.关闭存在的slave:

shell> mysqladmin shutdown

2.将数据目录从存在的slave 复制到新的slave,你可以通过创建tar或者WinZip文件,


或者通过执行一个cp或者rsync,确保也包括log files和relay log files.



一个通用的问题是遇到 当增加新的复制slaves 是新的slaves 失败 一系列的警告和错误信息如下:


071118 16:44:10 [Warning] Neither --relay-log nor --relay-log-index were used; so
replication may break when this MySQL server acts as a slave and has his hostname
changed!! Please use '--relay-log=new_slave_hostname-relay-bin' to avoid this problem.
071118 16:44:10 [ERROR] Failed to open the relay log './old_slave_hostname-relay-bin.003525'
(relay_log_pos 22940879)
071118 16:44:10 [ERROR] Could not find target log during relay log initialization
071118 16:44:10 [ERROR] Failed to initialize the master info structure


这是由于事实,如果--relay-log  选项没有被指定,relay log 文件包含了主机名作为文件名的部分


(这个对于relay log index 文件也是一样 如果  --relay-log-index 选项没有被指定 



为了避免这个问题,使用 相同的值对于--relay-log 在新的slave,和用于存在的slave

(如果选项没有被指定在存在的slave上,使用existing_slave_hostname-relay-bin.)


如果这个是不行的,复制存在的slave的relay log index file 到新的slave 设置 --relay-log-index

在新的slave 来匹配 在存在的slave上。(如果这个选项没有被指定在存在的slave上,使用existing_slave_hostname-relay-bin.index)


作为一种选择--如果你已经尝试启动新的slave(遵循下面存在的步骤)


a.如果你没有这么做,执行stop slave 在新的slave上


 如果 你已经启动存在的slave,执行一个stop slave 在存在的slave上


b. 复制存在的slave的relay log 文件的内容到新的slave的relay log index file,确保覆盖任何存在的文件的内容.



c.继续在本节中其余步骤:


复制master info 和relay log info 信息库从存在的slave到新的slave.

那些保留当前的log的位置对于master的binary log和slave的relay log



4.启动存在的slave


5.在新的slave上, 编辑配置和给定新的slave 一个唯一的server-id 不被master和其他任何的slave使用


开始新的slave,slave使用信息在它的master info 信息库来开始复制

原文地址:https://www.cnblogs.com/zhaoyangjian724/p/6199484.html