我需要备份一个庞大的Drupal数据库。所以它有超过1500个表(不要怪我,它是Drupal的东西)并且是10GB大小。
我无法使用PHPMyAdmin,我刚刚开始构建.sql文件时出错。
我想确保在尝试备份时不会破坏任何内容或关闭服务器或其他任何内容。
我打算在我的服务器上尝试一个mysqldump,然后在本地复制该文件,但意识到这可能会导致无法预料的问题。所以我的问题是,一次在如此多的表上使用mysqldump是否安全,即使它是安全的,这样一个巨大的文件可能导致将来重建数据库有什么问题吗?
感谢输入人员。
答案 0 :(得分:11)
一次在如此多的表上使用mysqldump是否安全
我使用mysqldump
在服务器上运行每日备份10倍这样大小:15000+表,100 + GB。
如果你还没有检查mysqldump
生成的文件的内容......你应该,因为看到它的输出是为了理解为什么它是一个本质安全的备份工具:
备份是人类可读的,完全由必要的SQL语句组成,以创建与您备份的数据库完全相同的数据库。
在这种形式下,可以使用sed
和grep
以及perl
等无处不在的工具轻松操作其内容,这些工具可用于从文件中提取一个表进行恢复,例如。
如果恢复失败,则错误将指示文件中发生错误的行号。这通常与创建备份的服务器版本中的错误行为有关(例如,MySQL Server 5.1允许您在服务器本身不接受其自己的SHOW CREATE VIEW
语句输出的某些情况下创建视图。 create-statement不被同一服务器视为有效的视图定义,但这不是mysqldump或备份文件中的缺陷,本身。)
从mysqldump创建的备份恢复并不快,因为服务器必须执行所有这些SQL语句,但从安全的角度来看,我认为没有更安全的替代方案,因为它是规范的备份工具和任何错误都可能由于庞大的用户群而被发现和修复,如果没有别的话。
除紧急情况外,请勿使用--force
选项。它将导致备份跳过备份运行时在服务器上遇到的任何错误,导致备份不完整,几乎没有警告。而是查找并修复发生的任何错误。备份期间的典型错误与不再有效的视图相关,因为它们引用已重命名或删除的表或列,或者最初创建视图的用户已从服务器中删除的位置。通过正确地重新定义视图来修复这些问题。
最重要的是,通过将备份还原到其他服务器来测试备份。如果你还没有这样做,你就没有真正的备份。
输出文件通常可以使用gzip / pigz,bzip2 / bpzip2,xz / pixz或zpaq进行压缩。这些按大约顺序列出,节省的空间量(gzip保存最少,zpaq保存最多)和速度(gzip是最快的,zpaq是最慢的)。如果你有的话,pigz,pbzip2,pixz和zpaq将利用多个核心。其他人一次只能使用一个核心。
答案 1 :(得分:1)
使用mysqlhotcopy它可以很好地处理大型数据库