【问题标题】:how can I safely backup a huge database?我怎样才能安全地备份一个巨大的数据库?
【发布时间】:2015-09-16 22:25:41
【问题描述】:

我需要备份一个庞大的 Drupal 数据库。所以它有超过 1500 个表(别怪我,它是 Drupal 的东西),大小为 10GB。

我不能用 PHPMyAdmin 来做,我刚开始构建 .sql 文件时出错。

我想确保当我尝试备份它时不会破坏任何东西或关闭服务器或任何东西。

我打算在我的服务器上尝试一个 mysqldump,然后将文件复制到本地,但意识到这可能会导致无法预料的问题。所以我的问题是,一次在这么多表上使用 mysqldump 是否安全,即使它是安全的,这么大的文件是否会在未来重建数据库时导致任何问题?

感谢大家的意见。

【问题讨论】:

标签: mysql database drupal phpmyadmin mysqldump


【解决方案1】:

使用mysqlhotcopy 可以很好地处理大型数据库

  • 仅适用于 MyISAM 和 ARCHIVE 表。
  • 仅在存储数据库的服务器上工作。
  • 此实用程序在 MySQL 5.6.20 中已弃用,并在 MySQL 5.7 中删除

【讨论】:

    【解决方案2】:

    一次在这么多表上使用mysqldump安全吗

    我每天使用 mysqldump 在 10 倍于这个大小的服务器上运行备份:15000+ 个表,100+ GB。

    如果您还没有检查过由mysqldump 生成的文件的内容......您应该检查它,因为查看它的输出可以理解为什么它是一个本质安全的备份实用程序:

    备份是人类可读的,并且完全由必要的 SQL 语句组成,以创建与您备份的数据库完全相同的数据库。

    在这种形式中,它们的内容很容易使用sedgrepperl 等无处不在的工具进行操作,例如,这些工具可用于从文件中仅提取一个表进行恢复。

    如果恢复失败,错误将指示文件中发生错误的行号。这通常与创建备份的服务器版本中的错误行为有关(例如 MySQL Server 5.1 允许您在服务器本身不接受其自己的 SHOW CREATE VIEW 语句的输出的某些情况下创建视图。创建同一服务器不认为语句是有效的视图定义,但这不是 mysqldump 或备份文件中的缺陷,本身。

    从 mysqldump 创建的备份恢复并不快,因为服务器必须执行所有这些 SQL 语句,但从安全的角度来看,我认为没有更安全的选择,因为它是规范的备份工具和任何错误都可能通过庞大的用户群找到并修复。

    请勿使用--force 选项,紧急情况除外。这将导致备份跳过备份运行时在服务器上遇到的任何错误,从而导致备份不完整且几乎没有警告。相反,查找并修复发生的任何错误。备份期间的典型错误与不再有效的视图有关,因为它们引用了已重命名或删除的表或列,或者最初创建视图的用户已从服务器中删除。通过正确重新定义视图来解决这些问题。

    最重要的是,通过将备份恢复到不同的服务器来测试您的备份。如果你没有这样做,你就没有备份。

    输出文件通常可以使用 gzip/pigz、bzip2/bpzip2、xz/pixz 或 zpaq 进行压缩。这些按节省的空间量(gzip 节省最少,zpaq 节省最多)和速度(gzip 最快,zpaq 最慢)按大致顺序列出。 pigz、pbzip2、pixz 和 zpaq 将利用多个内核,如果你有的话。其他人一次只能使用一个核心。

    【讨论】:

    • 完美的答案,正是我正在寻找的细节。谢谢迈克尔。您的知识可能可以解决我在使用 MySQLDump 后遇到的问题,如果您有空闲时间看一下,这里是问题的链接stackoverflow.com/questions/31141585/…
    猜你喜欢
    • 2012-10-02
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    • 2021-08-09
    • 2020-08-02
    • 2012-04-15
    • 1970-01-01
    相关资源
    最近更新 更多