使用PHP备份MySql数据库

4
我在MySql中有一个相当大的数据库,需要每天或更频繁地备份它。我想能够从任何计算机进行备份,因此考虑制作一个PHP脚本并将其在线发布(当然要经过密码保护和授权等措施,以便只有我可以访问它)。不过,我想知道如何正确地完成这项工作?应该使用什么命令,并且是否可以更改备份的设置(例如添加AUTO_INCREMENT值=true)?我需要实际的示例... 另外,如果这是一种不好的方法(不安全,或者可能导致带有错误SQL文件的坏备份),那么什么其他方法更好呢?我可以使用shell访问并拥有VPS(ubuntu服务器)。我的Mysql版本是5.1。谢谢。
2个回答

8

备份数据库无需涉及PHP。你只需要一个使用mysqldump来备份数据库的脚本,并设置CRON定时任务来定期执行该脚本:

mysqldump db_name > backup-file.sql

这条命令将把你的数据库备份到一个文件中,通过将mysqldump的输出重定向到指定的文件名。

Peter提出了一个很好的观点,即该命令只会给您保留一天的存档——超过两天的任何存档都会被覆盖。这将允许你拥有一个滚动日志,可以追溯七天的数据:

CURRENT_DAY_OF_WEEK=`date '+%u'`
FILENAME="mysqlbackup_"$CURRENT_DAY_OF_WEEK".sql"

mysqldump db_name > $FILENAME

同时请注意文件权限 - 如果执行脚本的用户没有访问文件夹的权限,就无法写入文件。


2
当然,您可能不应该每天覆盖同一个文件。也许可以在文件名后面添加当前日期之类的东西... - Peter Ajtai

0

我同意OMG Ponies的观点,使用mysqldump + 脚本是最好的选择。

我使用的另一种选择是设置一个从服务器。这提供了几乎即时的备份,以防硬件故障,并且可以位于与主服务器不同的建筑物中。除非您有大量写入数据库的操作,否则您不一定需要非常强大的服务器,因为它只处理数据库更新而不是查询。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接