备份包含数百万个条目的数据库时需要考虑什么?是否有任何我可以使用的工具(可能与 MySQL 服务器捆绑在一起)?

最佳答案

根据您的要求,我自己使用了几个选项:

  • 如果您不需要热备份,请关闭数据库服务器并在文件系统级别备份,即。 e.使用 tar、rsync 或类似的。
  • 如果您确实需要数据库服务器继续运行,您可以从 mysqlhotcopy 工具(一个 perl 脚本)开始,它会锁定正在备份的表并允许您选择单个表和数据库。
  • 如果您希望备份可移植,您可能需要使用 mysqldump ,它会创建 SQL 脚本来重新创建数据,但比 mysqlhotcopy
  • 如果您在某个时间点有数据库的副本,您也可以将二进制日志(从那个时间点开始)保存在安全的地方。这很容易做到并且不会干扰服务器的操作,但可能不是最快的恢复,您必须确保不会错过部分日志。

  • 我还没有尝试过的方法,但这对我来说很有意义:
  • 如果你有一个像 ZFS 这样的文件系统或者在 LVM 上运行,通过做一个文件系统快照来做一个数据库的快照可能是一个好主意,因为它们非常非常快。请记住在整个操作期间确保数据库的状态一致,例如。 G。通过执行 FLUSH TABLES WITH READ LOCK (当然,之后不要忘记 UNLOCK TABLES)

  • 此外:
  • 您可以使用主从设置将您的生产服务器复制到另一台机器或同一台机器上的第二个实例,并对复制的副本执行上述任何操作,而让您的生产机器单独存在。除了连续运行之外,您还可以定期启动从站,让它读取二进制日志,然后再次将其关闭。
  • 我觉得,MySQL集群和企业行货版有更多的工具,但我从来没有尝试过。
  • 关于mysql - 如何备份 MySQL 数据库?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1524542/

    10-13 09:29
    查看更多