在5.5及以后版本的MySQL里面,增加了个参数--dump-slave,使用该参数,我们可以在slave节点导出数据用于建立新的slave,避免对主库的压力。

方法如下:
在slave上执行;
1、查看当前同步的状态
# show slave status\G  主要关注下面的部分:

Master_Log_File: mysql-bin.000095

Read_Master_Log_Pos: 50607116
Relay_Master_Log_File: mysql-bin.000095
Exec_Master_Log_Pos: 50607116

2、然后在slave上导出数据,如下:
# mysqldump -uroot -proot --single-transaction --dump-slave=2 -A > all.sql

3、查看导出的文件

# head -30 all.sql 可以看到类似如下的字段:

-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000095', MASTER_LOG_POS=50607116;

这样的话,我们拿着这个导出数据,恢复到某一台新的slave上,执行:

> CHANGE MASTER TO 
MASTER_HOST='master_ip', 
MASTER_USER='repluser', 
MASTER_PASSWORD='123456', 
MASTER_PORT=3306, 
MASTER_LOG_FILE='mysql-bin.000095', 
MASTER_LOG_POS=50607116, 
MASTER_CONNECT_RETRY=10;

> start slave; 即可在新的slave上启动复制了。

本文永久更新链接地址http://www.linuxidc.com/Linux/2016-07/132861.htm