如何创建MySQL备份可执行文件?

时间:2010-01-13 08:52:16

标签: php mysql backup cron database

我使用的是php,mysql,我的服务器是带有IIS6的Windows Server 2003。

我打算按小时备份我的数据库。我可以做cronjob,通过写入日期和时间测试到日志文件中。它完美地运作。

现在我想使用cronjob来备份我的数据库。我怎么做?创建一个PHP脚本,让它每小时运行??

6 个答案:

答案 0 :(得分:2)

使用mysqldump。示例(使用我经常使用的选项):

mysqldump --single-transaction --hex-blob --opt -e --quick --quote-names -r put-your-backup-filename-here put-your-database-name-here

答案 1 :(得分:1)

正如其他人所写,mysqldump工具是最简单的解决方案,但是如果你有一个大型数据库,即使使用--quick设置,我建议你做一些实验。使用旧的C-ISAM引擎,一次处理一个查询。虽然这对InnoDB来说不是一个问题,但我不确定MySQL现在是否支持完整的并发查询。您的备份可能会影响事务处理。

如果它确实是一个问题,那么一个简单的解决方案就是配置在同一台机器上运行的数据库的从属实例,然后对其运行mysqldump,或者在备份原始数据时临时关闭从属文件。

或者,您可以将镜像下推到操作系统级别并执行磁盘级快照 - 但是您需要在创建快照(或破坏镜像)之前停止数据库上的事务并刷新它。

下进行。

答案 2 :(得分:0)

Windows内置Task Scheduler,您可以使用它来执行备份。

答案 3 :(得分:0)

使用mysqldump工具将数据库转储到文件中。

答案 4 :(得分:0)

我认为你可以用cron job来启动db文件的副本,我不认为运行php脚本的cron作业使得备份是一个不错的选择(它的复杂而不需要它)。 我认为mysqldump也是一个不错的选择,但我无法帮助你。

答案 5 :(得分:0)

编辑:此脚本适用于Unix(或变体)。

我想做同样的事情(包括发送备份电子邮件和存档我的代码/页面)并写下这样的内容:

#! /bin/bash

NOW=`date +"%Y-%m-%d"`
MAIL_TO="email@example.com";
MAIL_SUBJECT="Hourly backup"
MAIL_MESSAGE="mail-message";

DB_FILE="backup-database-$NOW.sql.gz"
SITE_FILE="website-$NOW.tar.gz"

echo "Database dump:" >> $MAIL_MESSAGE
mysqldump --defaults-extra-file=.mysql-pwd --add-drop-table -C my_databse 2>> $MAIL_MESSAGE | gzip > $DB_FILE 2>> $MAIL_MESSAGE

echo "Site dump (www and php-include):" >> $MAIL_MESSAGE
tar -zcf $SITE_FILE /path/to/www/ /path/to/php-include/ 2>> $MAIL_MESSAGE

echo >> $MAIL_MESSAGE
echo >> $MAIL_MESSAGE
echo "Done" >> $MAIL_MESSAGE

mutt -s "$MAIL_SUBJECT" -a $DB_FILE -a $SITE_FILE $MAIL_TO < $MAIL_MESSAGE