【问题标题】:Backup multiple Databases[MySQL] at 1 time?一次备份多个数据库[MySQL]?
【发布时间】:2011-01-14 05:36:18
【问题描述】:

您好,我有多个数据库需要每天备份。目前,我正在使用 cronjob 设置一个批处理文件来备份它。这是我的情况,我有大约 10 个数据库需要备份,其中 3 个增长很快,让我给你看看当前的数据库大小:

  • DB1 = 35 mb
  • DB2 = 10 mb
  • DB3 = 9 mb
  • 其余:DBx = 5 mb

我的批处理文件代码是:

mysqldump -u root -pxxxx DB1 > d:/backup/DB1_datetime.sql
mysqldump -u root -pxxxx DB2 > d:/backup/DB2_datetime.sql
... and so for the rest

我已经运行了 2 天,对我来说似乎还不错。但我想知道,执行批处理文件时是否会影响我的网站性能。

如果这种方法不好,你如何备份多个数据库,同时它的大小每天都在增加?

【问题讨论】:

    标签: mysql backup cron database


    【解决方案1】:

    这取决于表类型。如果表是 innoDB,那么您应该使用 --single-transaction 标志,以便转储是连贯的。如果你的表是 MyISAM,你有一个小问题。如果按原样运行 mysqldump,则转储将导致表在执行转储时锁定(不写入)。随着数据库变得越来越大,这显然是一个巨大的瓶颈。您可以使用 --lock-tables=false 选项覆盖它,但可以保证备份中不会包含一些不一致的数据。

    理想的解决方案是在生产环境之外拥有一个备份复制从属服务器来进行转储。

    【讨论】:

    • 目前看来我需要设置“--lock-tables=false”选项。我还没有从服务器。好吧,有时文件会减少,例如昨天的大小是 35mb,但今天的大小是 28mb。我打开sql文件,文件损坏,我的意思是没有正确备份,是因为我没有锁表吗?
    • 这正是原因。目前,您应该真正允许表锁定并拥有那几秒钟的写锁定以实现一致的备份
    【解决方案2】:

    如果您仍在寻找实现此目的的方法,您可能会对:this 感兴趣。

    它使用转储为每个数据库创建一个文件,让您只需进行第一次配置即可节省大量时间。

    希望对你有帮助,问候。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-28
      • 1970-01-01
      • 1970-01-01
      • 2018-05-21
      • 1970-01-01
      • 1970-01-01
      • 2011-11-10
      • 1970-01-01
      相关资源
      最近更新 更多