在主从环境中复制数据库

我有许多大型数据库,每个350Gb +都有超过100个表格。 它们主要是MyISAM表格,其中有一些InnoDB表格被扔进去。

平台: – Linux,MySQL 5.1,MyISAM + InnoDB表(打开file_per_table选项)

我需要在主服务器上复制这些数据库,并且在从服务器上正确反映了这些重复,并且遇到了一些问题。

做一个mysqldump然后恢复是成功的,但非常缓慢,需要很长时间才能跟上。

做一个直接的数据文件拷贝似乎不工作,因为information_schema不能准确地反映复制的数据库 – 在某些情况下,即使myisamchk能够检查和修复索引成功。

有没有办法执行的数据文件的磁盘副本,并让information_schema准确地反映复制的数据库,或者我只是将不得不包容它,坚持转储/恢复选项? 如果我可以用这种方式复制数据库,我可以在不破坏复制状态的情况下对从站执行相同的步骤吗?

在此先感谢,戴夫

最安全的方法是取下主数据库,然后将二进制数据库文件从主服务器复制到从服务器,将它们都启动并启动复制。 用350GB的表格,我可以理解这可能是一个有问题的解决scheme。 您可以通过尽可能快地复制副本来获得一些时间,这通常意味着复制到主服务器上完全其他的一组磁盘。 然后,您可以将主服务器备份,您可以将时间移动到较慢的networking链接上。

从MySQL下面复制MyISAM文件将起作用,或者至less我知道在MySQL v3和v4的日子里。 (确保你在运行myisamchk时候closures了slave。)但是这对InnoDB文件不起作用。

有一个名为“MySqL热备份”的​​工具,或者这样的一个工具也能够以一种更聪明的方式做到这一点。 问题在于,您可能需要付费,至less对于InnoDB的支持。

你启用了LVM吗? 如果是的话,你可以使用它创build分区的快照而不closuresMySQL,然后你可以挂载快照并从中复制文件。 这里是描述该方法的文章 。

如果可以closures数据库,则可以复制原始数据文件 。 只要记住要正确logging你的主信息。