2011-04-27 45 views
1

想要在c的生产模式下将经常从主服务器使用的一些大表复制到本地服务器。Mysql dump:复制生产中的MYI文件是安全的吗?

安全吗?

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

+0

为什么不使用http://dev.mysql.com/doc/refman/5.6/en/mysqldump.html? – 2011-04-27 17:27:18

+2

'mysqldump'可以慢得多,但它更可能产生一致的结果。 – pkaeding 2011-04-27 20:42:37

+0

明智的话通过pkaeding和值得投票 – 2011-04-27 21:30:06

回答

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快照可以得到一个干净的快照保持的另一种方式使用。

如果你打算经常这样做,我建议使用复制来保持本地服务器是最新的,或者设置一个可用于备份的slave(因为它不是主数据库你停止它,倾倒表等)的问题

0

是的,它是正常的,如果你

  • 关闭MySQL服务器下复制文件干净之前,至少需要一个全球性的读锁
  • 取.frm .MYI和.MYD文件。
  • 具有相同的my.cnf,而且每个系统

上运行相同版本的MySQL所以它基本上是好的,但不一定是一个好主意。

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

+0

好的建议,但...我不认为有很多配置选项,将导致问题与移动和次要版本之间移动应该没事。我看到的唯一问题是在MyISAM存储引擎格式发生变化的大版本差异(即4.x到5.0)上。 – 2011-04-27 21:54:01

+0

有很多边缘情况。特别是如果您使用全文索引。在某些情况下,它可能会产生一个表面上的表面,但有微妙的结构问题。 – MarkR 2011-04-28 16:17:38

相关问题