MySQL 备份 - 增量

MySQL 备份 - 增量

我知道您可以使用mysqldump。我目前正在使用以下方式转储:

${MYSQLDUMP} --single-transaction -u ${MUSER} -h ${MHOST} -p${MPASS} $db | ${GZIP} -9 > $FILE

据我所知,这会锁定数据库并阻止任何类型的数据库使用,甚至可以锁定网站。如果数据库大小为 100mbs 甚至 1gbs,是否有更好的方法来对 MySQL 数据库进行每日/每小时备份?

答案1

你可能想要:

  • 不时地进行(理想情况下)非阻塞完整备份[取决于您的数据变化率和对恢复过程速度的要求] - 例如每天或每周一次
  • 经常备份 MySQL 二进制日志,这些日志可用于进行时间点恢复。你可以将这些日志视为增量日志 - 即在进行完整备份后发生的操作列表

为了使您的备份不阻塞,您需要对所有表使用 InnoDB 引擎。

对于替代方案(不与 MySQL 捆绑在一起的解决方案),请查看:

  • 备份- 这是对 mysql 进行完整/增量备份的另一种方法。
  • lvm [或其他存储级别] 快照 - 例如脚本

答案2

这只会锁定 MyISAM 表。--single-transaction仅通过将其运行到事务中来防止表锁定。

100MB 到 1GB 实际上是很小的规模,因此,如果您可以忍受出现不一致的可能性,则可以添加--skip-lock-tables并避免锁定 MyISAM 表。这样您的网站就不会受到影响。

如果某个应用程序更新了两个表,就会发生不一致。如果这种情况发生在备份两个表的时间间隔内,则备份可能包含对第二个表的更新,而不是第一个表的更新。

这种情况很少见,尤其是当您的数据库较小时。如果您无法忍受这种情况,您可能需要使用更复杂的解决方案,例如 lvm 快照或使用复制。

相关内容