我在MySql中有一个非常大的数据库,我需要每天都对它进行备份。
我需要能够从任何计算机上进行备份,因此我考虑制作一个php脚本来执行此操作并将此PHP脚本放在网上(使用密码保护和授权等进行处理,以便我只能访问它)。
我不知道,这怎么做得恰到好处?
我应该使用哪些命令,是否可以更改备份设置(例如Add AUTO_INCREMENT value = true
)?
我会很感激的例子......
另外,如果这是一种不好的方法(不安全,或者可能会给错误的sql文件提供错误的备份),那么还有哪种方法更受欢迎? 我有shell访问权限,我有一个VPS(ubuntu服务器)。
我的Mysql版本是5.1
由于
答案 0 :(得分:8)
没有必要让PHP参与数据库备份。您只需要一个使用mysqldump备份数据库的脚本,并setup a CRON job定期执行脚本:
mysqldump db_name > backup-file.sql
...将数据库备份到文件,方法是将mysqldump的输出重定向到指定的文件名。
彼得提出了一个很好的观点,即该命令只会给你一天的归档 - 任何两天以上的档案都会被覆盖。这将允许您有七天的滚动日志:CURRENT_DAY_OF_WEEK=`date '+%u'`
FILENAME="mysqlbackup_"$CURRENT_DAY_OF_WEEK".sql"
mysqldump db_name > $FILENAME
另请注意,文件权限将适用 - 如果执行脚本的用户没有该文件夹的权限,则无法写入文件。
答案 1 :(得分:0)
我同意OMG Ponies mysqldump +脚本是要走的路。
我使用的唯一其他选项是设置从属服务器。这为硬件故障提供了几乎即时的备份,并且可以位于与主服务器不同的建筑物中。除非你有大量的数据库写入,否则你不一定需要一个非常强大的服务器,因为它不处理查询,只处理数据库更新。