Mysql转储:在生产中复制MYI文件是安全的吗?

时间:2011-04-27 17:20:14

标签: mysql

想要在生产模式下复制一些经常从主服务器使用到本地服务器的大表。

安全吗?

欢迎提供一些建议,工具。 :)

2 个答案:

答案 0 :(得分:1)

我猜想从MYI表中询问所有表都是MyISAM表而不是InnoDb表。每个MyISAM表由三个文件组成:.frm,.MYD和.MYI它们分别包含结构,数据和索引。

人们建议不要从正在运行的系统中复制这些原始文件,但我发现只要你确定没有任何内容写入表格,那么复制它们就可以正常工作(我这样做的次数比我记得的要多)

如果您在副本上执行此操作,则只需在复制之前停止对从属设备的复制。如果它只是单个服务器或主服务器,我建议您在开始复制文件之前运行FLUSH TABLES WITH READ LOCK,这将阻止任何进程写入表。完成后,使用UNLOCK TABLES释放锁定。

我总是建议对你以这种方式复制的表格进行CHECK TABLE。我认为这是我过去使用的mysqlcheck --all-tables --fast --auto-repair

如果您在服务器上使用LVM,那么获取LVM快照可能是获取干净快照的另一种方法。

如果您要定期执行此操作,我建议您使用复制来保持本地服务器的最新状态,或者设置一个可用于备份的从服务器(因为它不是主数据库,所以没有问题与你停止,倾倒表等)

答案 1 :(得分:0)

是的,没关系,如果你

  • 在复制文件之前干净地关闭mysql服务器,或者至少采用全局读锁
  • 同时获取.frm .MYI和.MYD文件。
  • 拥有相同的my.cnf并在每个系统上运行相同的MySQL版本

所以它基本上没问题,但不一定是个好主意。

如果你有不同版本的mysql(你通常只能转移到更新的版本,而不是更旧的版本),或者运行时有一个截然不同的my.cnf(即任何全文索引参数都不同,而你有全文索引),您可能需要重建表。可以使用ALTER TABLE blah ENGINE = MyISAM在目标服务器上重建表。这可能仍然比mysqldump / restore快一点。