我发现自己需要在4000+ DB的MySQL服务器和第一个从设备之间build立主从复制。
该数据库目前正在处理生产工作量,并且启动复制必须完成而不会导致停机。
有没有工具或经过testing的程序来做到这一点? (以最小的locking转储所有的数据,并完全准确地保存master的binlog位置?)
到目前为止,我一直在琢磨数据库,同时保存binlog的位置,将数据加载到slave,然后用所有已加载数据库的replicate-do-db启动slave,一旦停止复制就停止复制已经赶上,冲洗,重复…但我不是100%肯定这是做到这一点的最好方法。
谢谢,拉雷斯
后来编辑:表大多是MyISAM,但有一些InnoDB。
您的MySQL数据库是纯粹的InnoDB,还是包含MyISAM? 如果是InnoDB,可以使用mysqldump和“–single-transaction –master-data”选项来为复制从服务器获得可靠的转储。
如果你有MyISAM不幸地得到一个可靠的转储,它必须locking服务器上的所有事务,直到整个备份完成为止。这个时间取决于数据库大小(以GB为单位)和总行数。
我已经创build了一个bash脚本,它可以从主服务器增量转储数据库,并将它们加载到从服务器中,同时跟踪replicate_do_db。
感谢Domas Mituzas对这个职位 ,允许我在即时更新replicate_do_db。 我也从转储的SQL拉master_log_file和master_log_pos发出START SLAVE UNTIL和SELECT MASTER_POS_WAIT为了加载数据在正确的点。
稍后编辑:为了这个按预期工作基于行的复制是必须的。