如何安排一个cron作业每周备份一个MySql数据库?

时间:2010-05-31 23:15:49

标签: mysql cron database-backups

我可以使用什么命令行将每周将MySql数据库备份到带有日期的文件名中(以便它不会与先前的备份冲突)?

另外,这是一个合理的备份策略吗?我的数据库相对较小(现在完整的出口只有3.2兆)。流失率相对较低。如果出现问题,我需要能够恢复完整的数据库。如果有一种方法可以看到一段时间内发生的变化,那将会非常酷。

3 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

0 4 1 * * DATE=`date +%y-%m-%d`; mysqldump -u <dbuser> -p<dbpasswd> <dbname> | gzip > dbname-$DATE.sql.gz

将在每个月的第一天凌晨4:00转储您的数据库(并将其gzip)。

答案 1 :(得分:1)

使用cron和mysqldump进行每周备份:

提供命令行的信用转到@timdev answer(+1)。

cron语法如下:

* * * * * = [minute] [hour] [day of month] [month] [day of week]

但是,由于您需要每周备份,因此您可以指定在上面的第三个开始(月中的某天)运行备份的日期,以模拟每周间隔。

0 4 1,8,15,21,28 * * DATE=`date +%y-%m-%d`; mysqldump -u <dbuser> -p<dbpasswd> <dbname> | gzip > dbname-$DATE.sql.gz

这将在每个月的1日,8日,15日,21日和28日凌晨4:00运行。

答案 2 :(得分:0)

您可以尝试MySQL Replication

  

复制可以从一个数据中启用数据   MySQL数据库服务器(主)到   被复制到一个或多个MySQL   数据库服务器(从属服务器)。   复制是异步的 - 从属   不需要永久连接   从主服务器接收更新。这个   表示可以进行更新   长距离连接甚至   暂时或间歇性的   连接,如拨号服务。

这样,如果主数据库(主服务器)出现问题,从服务器可以作为现成的替代品。