【问题标题】:Is copying the /var/lib/mysql directory a good alternative to mysqldump?复制 /var/lib/mysql 目录是 mysqldump 的一个很好的替代方案吗?
【发布时间】:2011-01-29 18:18:32
【问题描述】:

由于我正在对整个 debian 系统进行完整备份,因此我在考虑是否拥有 /var/lib/mysql 目录的副本是使用 mysqldump 转储表的可行替代方案。

  • 该目录中是否包含所有需要的信息?
  • 可以在另一个mysql中导入单个表吗?
  • 在(可能略有)不同的 mysql 服务器版本上恢复这些文件时会出现问题吗?

【问题讨论】:

标签: mysql backup database-backups


【解决方案1】:

我会坚决反对。

根据我的经验,备份/恢复原始 mysql 数据文件只能在相同的操作系统/服务器版本上使用。它不适用于具有相同服务器版本的跨平台(例如 ubuntu/macos),也不适用于同一平台上的 mysql 服务器版本不同。

来自 Percona MySQL 发行版的Percona XtraBackup (innobackupex) 将让您进行实时和差异 mysql 备份,并为您提供可以通过复制到 /var/lib/mysql/ 来恢复的备份文件。您需要运行 Percona Server for MySQL 才能使用所有这些。

【讨论】:

    【解决方案2】:

    有关这 2 种策略的完整讨论,您需要阅读以下内容:https://dev.mysql.com/doc/refman/5.5/en/backup-types.html

    目前最好的免费和开源解决方案似乎是 Percona 的:http://www.percona.com/software/percona-xtrabackup

    【讨论】:

      【解决方案3】:

      这种方法只有在您先关闭数据库的情况下才能安全工作。否则,您之后很可能会陷入不一致的状态。首先使用 /etc/init.d/mysql 停止命令。然后,您可以在备份完成后重新启动它。

      【讨论】:

        【解决方案4】:
        • 是的
        • 如果表使用 MyISAM(默认)引擎,则是。如果它使用 InnoDB,则不会。
        • 可能没有,如果有,你只需要执行 mysql_upgrade 来修复它们

        为避免数据库处于不一致状态,您可以关闭 MySQL 或在备份前使用 LOCK TABLES 然后 FLUSH TABLES。第二种解决方案要好一些,因为 MySQL 服务器在备份期间将保持可用(尽管是只读的)。

        【讨论】:

        • 感谢大家提供此解决方案。它至少减少了一个小时的重新导入时间!如果你想在一条指令中完成:输入“FLUSH TABLES WITH READ LOCK;”。
        • 您能否详细了解“可以将单个表导入另一个mysql”的答案吗? “是的,只要它是 MyISAM”是一个相当稀疏的答案。
        【解决方案5】:

        只要你先关闭MySQL服务器并使用完全相同的版本来检索“备份”就可以了。否则不是。

        【讨论】:

          猜你喜欢
          • 2011-01-06
          • 1970-01-01
          • 1970-01-01
          • 2010-11-09
          • 1970-01-01
          • 2011-08-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多