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

如何安排cron作业每周备份一个MySql数据库?,mysql,cron,database-backups,Mysql,Cron,Database Backups,我可以使用什么命令行每周将MySql数据库备份到带有日期的文件名中(这样就不会与以前的备份冲突) 此外,这是一种合理的备份策略吗?我的数据库相对较小(目前完整的导出只有3.2兆)。流失率相对较低。如果出现问题,我需要能够恢复完整的数据库。如果有一种方法可以让我看到在一段时间内发生的变化,那就太酷了。你可以试试 复制使数据能够从一个 MySQL数据库服务器(主服务器)到 可以复制到一个或多个MySQL 数据库服务器(从服务器)。 复制是异步的-从机 不需要永久连接到 从主机接收更新。这 意味着更新

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

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

你可以试试

复制使数据能够从一个 MySQL数据库服务器(主服务器)到 可以复制到一个或多个MySQL 数据库服务器(从服务器)。 复制是异步的-从机 不需要永久连接到 从主机接收更新。这 意味着更新可以在 长途连接,甚至 临时的或间歇的 连接,如拨号服务


这样,如果主数据库(主数据库)出现问题,从数据库可以作为随时可用的替代数据库。

您可以尝试以下方法:

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

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

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

* * * * * = [minute] [hour] [day of month] [month] [day of week]
@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
041,8,15,21,28**DATE=`DATE+%y-%m-%d`;mysqldump-u-p | gzip>dbname-$DATE.sql.gz

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

我现在不担心数据库本身会关闭。我担心数据丢失或用户无意中编辑。完全同意。这是我对“如果出现问题,我需要能够恢复完整的数据库”的开箱思考。我认为复制可以做到这一点,而且速度很快。+1用于更正我的答案。我不知道为什么我认为当“weekly”出现在问题主题中时,他会要求每月一次……看起来0**0是更好的语法,可以让它成为真正的每周一次。是的,每周一天的0表示将使用cron行在每个周日午夜备份它