/ 中存储网

MySQLdump :--master-data 以及--dump-slave

2014-07-13 16:21:24 来源:中存储网
在线上运行的时候要建立master-slave并同步之前所有数据,可以用mysqldump的选项 --master-data 以及--dump-slave。 详见mysqldump --help.
有关--master-data和--dump-slave的区别:
转自http://blog.chinaunix.net/uid-451-id-3143431.html

[mysql@db2 ~]$ mysqldump -A --master-data=2 > master2.sql
[mysql@db2 ~]$ mysqldump -A --dump-slave=2 > slave2.sql
[mysql@db2 ~]$ mysqldump -A --master-data=1 > master1.sql

[mysql@db2 ~]$ mysqldump -A --dump-slave=1 > slave1.sql

[mysql@db2 ~]$ diff master2.sql master1.sql
22c22
---
> CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin2.000001', MASTER_LOG_POS=335;
845c845
---
> -- Dump completed on 2012-03-13 18:10:17
[mysql@db2 ~]$ diff slave2.sql slave1.sql
22c22
---
> CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000007', MASTER_LOG_POS=107;
845c845
---

> -- Dump completed on 2012-03-13 18:10:24

有上可知:
A. =1和=2的区别很明显,只是自动执行和手工执行的区别
B. --master-data用于在master端dump数据,用于建立slave
--dump-slave用户在slave端dump数据,建立新的slave,至少是第2个slave,也就是已经有A-->B,现在从B上导出数据建立A-->C的复制

这个不但可以用于建立slave,还可用于备份中,用于读binlog进行roll forward的起点

PS by 森哥:

     也就是说:

       如果是 --master-data就是记录自己的bin-log位置

               而--dump-slave就是记录其master的bin-log位置