我可以使用什么命令行每周将 MySql 数据库备份到带有日期的文件名中(这样它就不会与以前的备份冲突)?
另外,这是一个合理的备份策略吗?我的数据库相对较小(现在完整的导出只有 3.2 兆)。流失率相对较低。如果出现问题,我需要能够取回完整的数据库。如果有一种方法可以让我看到一段时间内发生的变化,那就太酷了。
我可以使用什么命令行每周将 MySql 数据库备份到带有日期的文件名中(这样它就不会与以前的备份冲突)?
另外,这是一个合理的备份策略吗?我的数据库相对较小(现在完整的导出只有 3.2 兆)。流失率相对较低。如果出现问题,我需要能够取回完整的数据库。如果有一种方法可以让我看到一段时间内发生的变化,那就太酷了。
你可以尝试这样的事情:
0 4 1 * * DATE=`date +%y-%m-%d`; mysqldump -u <dbuser> -p<dbpasswd> <dbname> | gzip > dbname-$DATE.sql.gz
它将在每个月的第一天凌晨 4:00 转储您的数据库(并对其进行 gzip 压缩)。
使用 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 运行。
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.