我有一个要定期备份的MySQL数据库上运行的WordPress博客。使用mysqldump程序或mysqlhotcopy脚本进行备份会更好吗?各自的优缺点是什么?我还有其他选择吗?

#1 楼

我可以告诉你,我目前正在使用mysqldump维护数据库的备份。之所以这样做,是因为我的目标是保持每周备份,以便在某人删除其网页的情况下,最多可以在一周前恢复它。

这样做的好处是它是一个基本的文本文件,因此我可以将其导入到装有MySQL的任何计算机上,进行加载,然后搜索丢失的数据。注意:为了得到我想要的,我在脚本中使用的命令是这样的:

mysqldump --databases databaseName > /file/path


--databases是使mysqldump转储CREATE DATABASE IF NOT EXIST标头的原因可以将其导入到我想要的任何位置。

尽管此方法对我有用,但我确信有更好的方法可用于其他目的。我也可以说,对于任何备份解决方案,您都应该至少将其存储在另一台计算机上,如果可以的话,最好存储在异地(我们在云中)。

#2 楼

我会考虑使用一个名为“ WordPress数据库备份(WP-DB-Backup)”的WordPress插件,该插件也在Wordpress数据库备份指南中列出。该插件可以按计划备份数据库并将其通过电子邮件发送给您(假设它是一个小型数据库)。您也可以只在本地备份它。您可以排除垃圾评论和修订,以使数据库更小

控件较少,但易于实现。

MySQL转储为您提供了最大的控制权。您的托管服务也可能是一个限制因素。某些主机不允许您访问运行cron作业或运行mysqldump命令。

#3 楼

建议#1
如果执行MySQL实例的任何备份,则最好设置MySQL Replicaton,以免任何施加服务器负载或增加磁盘I / O的方式都不会影响生产数据库。
设置MySQL复制后,只要您在从站上运行这些mysqldumps,就可以用不同的方式编写mysqldump脚本(请参阅我在DBA StackExchange上的文章以了解各种技术)。
建议#2
如果您不能为MySQL复制设置另一个服务器,并且所有数据都是InnoDB,则必须执行时间点mysqldump。这可以通过在mysqldump中使用--single-transaction选项来完成。因此,如果您从午夜开始运行mysqldump并且备份在12:15 AM结束,则恢复时mysqldump的输出将反映截至12:00 AM的数据。
建议#3
另一个可用于MySQL的程序备份是Percona提供的XtraBackup。
XtraBackup是一种功能全面的工具,其行为类似于rsync,但具有一定的用途。它可以开始复制所有InnoDB数据和表空间。它具有在内部创建检查点并就地执行InnoDB崩溃恢复的功能,以帮助获得完美的时间点备份。 XtraBackup还具有一项额外功能,可用于创建增量备份。另一个附加功能是创建InnoDB日志文件,该文件也由就地崩溃恢复构建。还有一些包装软件也可以提供MyISAM表的冻结复制。备份的时间点基于备份完成的时间而不是备份的开始时间。因此,如果您从午夜开始运行XtraBackup并且备份在12:15 AM结束,则还原时mysqldump的输出将反映截至12:15 AM的数据。

#4 楼

取决于表的存储引擎。它仅适用于符合本MySQL手册页的ARCHIVE和MyISAM表,并且必须在同一台机器上运行(即,不使用本地套接字或TCP / IP)。

MySQL还说


如果要在
服务器上进行备份,并且您的表都是MyISAM
表,请考虑使用
mysqlhotcopy,因为它可以
完成更快的备份,并且恢复更快



#5 楼

我建议使用许多现有的mySQL备份脚本中的一种来消除正确操作带来的痛苦。服务器上的cron作业。它涵盖了几乎所有可能的备份情况:http://sourceforge.net/projects/automysqlbackup/。它已经为我完美地工作了好几年了-强烈推荐。

#6 楼

mysqlhotcopy是大约'05的Perl脚本。因此,它为Perl和各种Perl添加了依赖性。我将继续进行下去。

mysqldump是随MySQL分发并积极维护的C程序。如果您添加-x选项,它将锁定表,因此您很聪明。

我个人在cron中有此脚本(如果要手动运行,请删除那些`转义符。 ),这对我来说就像是一种魅力,将我的每个数据库备份到一个本地文件,以及所有数据库的完整转储。

如果那里有多个数据库,您还需要为他们转储赠款。 Maatkit将在这里为您提供帮助,您只需mk-show-grants -uroot -pPASSWORD > mygrantsdatabase.sql即可备份您的赠款表,并准备再次导入。

#7 楼

我也知道许多服务器管理工​​具(例如Interworx和Ensim)使用mysqldump备份数据库,然后使用简单的mysql命令进行还原。由此,我猜测这是最好的方法之一。