我是否需要关闭我的网站才能使用 mysqldump?

我是否需要关闭我的网站才能使用 mysqldump?

我有一个 LAMP 网站,带有 mysql 后端和 InnoDb 引擎用于表

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

我很惊讶我找不到这些信息 - 甚至在 mySQL 文档中也没有。 很多文章都提到了 mysqlhotcopy,但它只适用于 IMSAM 表 - 因此对我来说没有兴趣/用处。

是否有人知道是否(如何?)可以使用 mysqldump 复制/转储仍在使用的数据库?

官方文档的链接非常有用,因为我想确保我完全正确地理解了这一点。

我在 Ubuntu 10.0.4 LTS 上运行

答案1

不,您不必关闭网站即可进行 MySQL 备份。您不仅可以在正在运行的 MySQL 数据库上使用 mysqldump,而且实际上服务器必须正在运行,mysqldump 才能连接到它。使用 InnoDB 表这一事实是一个优点,因为任何锁定都很短暂,并且您的用户不太可能会意识到它们。

如果您对执行备份感到紧张或犹豫,那么运行另一个 MySQL 实例并设置主/从复制并在从服务器上执行备份就没什么大不了的。这样,您就可以完全确定网站不会受到备份的影响。

答案2

这取决于您的负载有多高,但是 Janne 的建议是大多数管理员在进行备份时考虑到负载而采用的建议。

对于 InnoDB,在备份方面您没有太多选择:

我对它们都没有任何经验 - 但是几个月前当我们考虑将 MyISAM 转移到 InnoDB 时我研究过这个问题(我们没有,因为有太多的全文索引搜索)。

答案3

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

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

mysqldump可能会影响您服务器的性能(就像任何备份一样),因此在投入生产之前请进行测试。

另一个选择是,如果你在 MySQL 下使用 LVM,那么可以使用mylvm备份- 这将获取 LVM 卷的快照,以便您可以随意备份数据文件。

答案4

官方文档中介绍了如何使用 mysqldump 备份 InnoDB 表

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

您不会遇到任何问题。我每天都会使用它定期备份一组数据库,频率最高为 15 分钟。

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

相关内容