【问题标题】:How to schedule a cron job to backup a MySql database every week?如何安排一个 cron 作业每周备份一个 MySql 数据库?
【发布时间】:2010-06-01 07:56:42
【问题描述】:

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

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

【问题讨论】:

    标签: mysql cron database-backups


    【解决方案1】:

    你可以试试这样的:

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

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

    【讨论】:

      【解决方案2】:

      使用 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 运行。

      【讨论】:

      • +1 用于更正我的答案。不知道为什么我认为当“每周”在问题主题中时他要求每月...
      • 看起来 0 0 * * 0 是让这成为真正每周的更好的语法。
      • 是的,0 表示星期几意味着它将在每周日午夜使用该 cron 行备份
      【解决方案3】:

      你可以试试MySQL Replication

      复制使数据从一个 MySQL 数据库服务器(主)到 被复制到一个或多个 MySQL 数据库服务器(从属服务器)。 复制是异步的 - 从属 不需要永久连接到 接收来自 master 的更新。这个 意味着更新可以发生在 远距离连接,甚至 临时或间歇性的 拨号服务等连接。

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

      【讨论】:

      • 我现在并不担心数据库本身是否已关闭。我担心数据丢失或用户无意编辑。
      • 完全同意。这是我开箱即用的想法,即“如果出现问题,我需要能够恢复完整的数据库”。我认为复制可以做到这一点而且速度很快。
      猜你喜欢
      • 1970-01-01
      • 2018-10-27
      • 1970-01-01
      • 2016-01-22
      • 2019-06-08
      • 2012-01-05
      • 2012-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多