繁体   English   中英

我怎样才能安全备份庞大的数据库?

[英]how can I safely backup a huge database?

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

我无法用PHPMyAdmin做到这一点,我刚开始构建.sql文件时遇到错误。

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

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

感谢输入的人。

一次在很多表上使用mysqldump是否安全

我使用mysqldump在服务器上运行每日备份10倍这么大:15000+表,100 + GB。

如果你还没有检查mysqldump生成的文件的内容......你应该,因为看到它的输出是为了理解为什么它是一个本质安全的备份工具:

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

在这种形式中,它们的内容很容易用sedgrep以及perl等无处不在的工具进行操作,例如,它们可以用来从文件中提取一个表进行恢复。

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

从mysqldump创建的备份恢复并不快,因为服务器必须执行所有这些SQL语句,但从安全的角度来看,我认为没有更安全的替代方案,因为它是规范的备份工具,任何错误都可能由于庞大的用户群而被发现和修复,如果没有别的话。

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

最重要的是,通过将备份还原到其他服务器来测试备份。 如果你还没有这样做,你真的没有备份。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM