备份 MySQL 数据库 - 当它仍在使用中时

MrE*_*yes 7 mysql backup

我目前使用 mysqldump 备份我的 MySQL 数据库,例如:

mysqldump --user USERX --password=PWDX DBNAMEX > dbbackup__`date '+%m-%d-%Y'`.sql
Run Code Online (Sandbox Code Playgroud)

当我执行备份(通过 cron 作业启动)时,我在我的站点上设置了一个 .htaccess 规则,以将任何请求重定向到静态“停机备份,稍后返回”页面。备份完成后,我删除规则并重新打开站点。

一切都很好,多年来一直如此,您可以想象这非常有效,而且我没有遇到任何问题。

然而...

我不想在备份期间关闭站点,所以问题是我可以用 mysqldump 来做到这一点吗?该工具是否能够处理备份启动后数据发生变化的情况?如果它进行实时备份,我能保证我不会得到损坏的备份吗?有没有更好的方法来进行实时备份?

Jef*_*and 4

  • 如果使用InnoDB,则可以并发读写。如果您还没有使用 InnoDB,您可能想使用它。
  • 使用 InnoDB 允许您使用 --single-transaction 标志运行备份。这将使数据库保持一致状态并实时转储,同时允许处理其他事务。
  • 如果你有一个足够大的数据库(听起来没有这个数据库你也能过得去),那么你需要别的东西。官方有一个付费的InnoDB热备份解决方案,但我回避这样的想法。如果您需要它,请查看http://www.percona.com/docs/wiki/percona-xtrabackup:start