我如何重buildMySQL复制而不倾销主?

我们的MySQL数据库已经变得相当大,而且我正在使用主复制。 复制被破坏。 我正在尝试重build第二个主人而不冻结第一个主人在做一个mysqldump。 数据库足够大,转储需要几个小时,我不能让数据库脱机那么久。

我如何重buildMySQL复制而不倾销主?

看看Percona工具包 。 pt-table-checksum可以帮助你找出不同步的表,你可以在之后使用pt-table-sync

添加@ quanta的答案,如果您没有尝试比较和修复复制,您可以使用percona xtra-backup工具附带的innobackupex工具快速复制master,您可以将其还原到奴隶。 (需要一段时间才能运行,但locking表的时间比mysqldumpless得多)

基本上innobackupex可以同时使用innodb和myisam表,并且利用底层实现来大幅度地提高导出时间,从而以最短的locking时间产生一致的备份。

在网站上有一个由主人创build一个奴隶的例子。 http://www.percona.com/doc/percona-xtrabackup/howtos/setting_up_replication.html

汤姆H的build议也很棒。 如果你可以让Xtra恢复工作,这是非常好的。 我不确定在这种情况下什么是最好的,这将有助于知道:

MySQL版本的所有InnoDB? 所有MyISAM? 还是混合? 如果InnoDB,你是使用每个表的文件? 有多大? (50 GB与500 GB?)

如果由于某种原因,你不能得到Xtrabackup的工作,或者@ quanta的build议与pt工具,你可能必须去老学校,并停止mysql和复制数据目录到奴隶,相应地调整,并启动repl备份。 如果你正在处理100个GB的,你需要通过networking复制,你有多核心/ CPU你可能想看看使用pigz你的副本http://zlib.net/pigz/这帮助我们在那里需要花费4.5个小时来复制转储文件或者目录,减less到2个小时。

祝你好运,我知道这可以得到多大的压力。

如果mysql分区在LVM上,那么我们可以mylvmbackup 。 它会拍摄一张照片并保存坐标。 重buildmysql最快的方法是使用数据目录的备份。 然后您可以运行优化来优化。

如果你没有LVM,可以closuresmysql服务器。
1.对主设备执行读锁,并记下位置。
2.closuresmysql
3.将数据目录复制到目标机器。 您可以创build数据目录的本地副本,这通常比networking传输更快,以最大限度地减lessMySQL宕机时间。
4.启动mysql
5.在目标机器上确保ib_logfile的设置与master的设置相同,否则mysql会报错。

很less数据复制不会干净地发生,因此可能需要再次尝试。