3

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

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

4

3 回答 3

2

你可以尝试这样的事情:

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

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

于 2010-05-31T23:39:45.427 回答
1

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

感谢 @timdev 回答 (+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 运行。

于 2010-05-31T23:56:42.317 回答
0

You could try MySQL Replication

Replication enables data from one MySQL database server (the master) to be replicated to one or more MySQL database servers (the slaves). Replication is asynchronous - slaves need not to connected permanently to receive updates from the master. This means that updates can occur over long-distance connections and even over temporary or intermittent connections such as a dial-up service.

This way, if something goes wrong with your primary database (the master), the slave can serve as a ready-to-use replacement.

于 2010-05-31T23:20:49.470 回答