对大型数据库 (MyISAM / InnoDB) 进行 MySQL 备份的最佳方法

对大型数据库 (MyISAM / InnoDB) 进行 MySQL 备份的最佳方法

目前我们有一个强大的 MySQL 数据库,用于运行几个基于 Django 的高流量网站以及一些规模相当大的电子商务网站。因此,我们拥有大量使用 InnoDB 和 MyISAM 表的大型数据库。

不幸的是,我们最近由于流量太大而遇到了障碍,因此我设置了另一台主服务器来帮助减轻读取/备份的压力。

现在,我只是使用带有几个参数的 mysqldump,事实证明它很好……直到现在。显然,mysqldump 是一种缓慢而快速的方法,但我认为我们已经不再使用它了。我现在需要一个好的替代方案,并且一直在研究使用 Maatkitsmk-并行-转储实用程序或 LVM 快照解决方案。

简洁的简短版本:

  • 我有一个相当大的 MySQL 数据库需要备份
  • 当前使用 mysqldump 的方法效率低下且缓慢(导致问题)
  • 查看诸如 mk-parallel-dump 或 LVM 快照之类的内容

任何建议或想法都将不胜感激 - 因为我必须重新做我们正在做的事情,所以我宁愿以正确/最有效的方式完成它:)。

答案1

我使用 MySQL 复制和夜间 tarball 取得了很大成功。对于较小的数据库、mysql 数据库和架构,我使用旨在使用 mysqlhotcopy 和 mysqldump 的脚本组合。

数据库引擎InnoDB热备份是一款很棒的商业产品,但我不确定它如何处理同一数据库中的混合表。pQd 对 XtraBackup 的推荐可能与此相比不错。

其他人喜欢 LVM 快照,我认为这绝对是值得考虑的事情。最终,解决方案的组合可能是最好的。

值得注意的是,这是一个老话题。高性能 MySQL书,MySQL 手册以及之前的 ServerFault 问题——这在一般情况下已经用尽了。请参阅:

答案2

备份- 至少对于 innodb 来说。

答案3

解决此问题的最常见方法是设置另一台 MySQL 服务器(甚至可以在同一台机器上),并运行主/从复制。然后,您可以在从服务器上执行备份,而不会对主服务器产生任何影响。

答案4

如果您正在运行跨应用程序共享的数据库复制,那么似乎有一个显而易见的问题:您是否可以通过将数据库服务器专用于应用程序来提高许多事物(包括备份)的性能。共享很好,直到它不再好。

相关内容