为了使用mysqldump,我需要把我的网站放下吗?

我有一个带有InnoDb引擎的mysql后端的LAMP网站

我希望能够使用mysqldump来定期转储数据库,而不必在备份期间停止mysql服务器(即closures网站)。

我很惊讶,我不能在任何地方find这个信息 – 甚至在mySQL文档中也没有。 有很多关于mysqlhotcopy的提及,但是这只适用于IMSAM表 – 因此对我没有任何兴趣/用处。

有谁知道是否(如何?)我可以使用mysqldump采取仍在使用的数据库的副本/转储?

官方文档的链接将是非常有用的,因为我想确保我得到这个绝对正确。

我在Ubuntu 10.0.4 LTS上运行

不,你不必去掉网站做一个MySQL备份。 您不仅可以在正在运行的MySQL数据库上使用mysqldump,而且事实上服务器必须正在运行mysqldump才能连接到它。 您使用InnoDB表的事实是一个优点,因为任何锁都是简短的,而且用户永远不会意识到这一点。

如果您对执行备份毫不紧张或犹豫不决,那么运行另一个MySQL实例并设置主/从复制,在从属设备上执行备份是没有什么大不了的。 这样你可以完全确定网站将不受备份的影响。

这取决于你有多大的负载,但是Janne的build议是大多数pipe理员在做备份时由于负载而解决的问题。

对于InnoDB,在备份方面你没有太多select:

  • InnoDB热备份 (商业,市场领导者)
  • Percona Xtrabackup (开源,付费支持,否则免费)

我没有任何经验,但是在几个月前,我们正在考虑一个MyISAM到InnoDB的移动(我们没有,有太多的全文索引search)。

是的,您可以使用mysqldump对运行的服务器 – 您必须 – mysqldump只是连接到服务器,并对服务器运行SQL命令来生成转储文件。

如果您担心转储文件的一致性,那么如果您主要在InnoDB表上运行,则可以使用--single-transaction 。 它会将转储包装在一个事务中。

mysqldump可能会影响你的服务器的性能(就像任何备份一样),所以在testing之前先进行testing。

另一种select是,如果您在MySQL下使用LVM,则使用mylvmbackup – 这会占用LVM卷的快照,因此您可以随意备份数据文件。

(啊,我看到你把这张贴给超级用户和这里,这是一些copypastah。)

通常的做法是设置一个MySQL的从属实例并从那里进行备份。 你不一定需要一个单独的物理服务器作为从属MySQL,在同一台服务器上运行它是完全可以的(如果你有磁盘空间和一些内存的话,没有太大的伤害)。

在这里的官方文档中,使用mysqldump来备份InnoDB表

http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html

你将没有任何问题。 我每天都会用它来定期备份一堆数据库,时间长达15分钟。

为了确保您的数据处于一致的状态,您应该在调用mysqldump时使用–single-transaction选项。 就这样。