在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上启动复制了。