mysql - Cron 每 4 小时运行一次,使用不同的名称,然后覆盖 MySQL 数据库

标签 mysql unix cron

我想每小时运行一次 cron 作业来备份我的 mysql 数据库。

当它运行 24 小时后,我希望它再次启动,然后覆盖每个文件。

我想出的最好的办法是:

15 0 * * * /usr/bin/mysqldump -u DBUSERNAME -pDBPASSWORD DBNAME > /PATH/backup1.sql
15 4 * * * /usr/bin/mysqldump -u DBUSERNAME -pDBPASSWORD DBNAME > /PATH/backup2.sql
15 8 * * * /usr/bin/mysqldump -u DBUSERNAME -pDBPASSWORD DBNAME > /PATH/backup3.sql
15 12 * * * /usr/bin/mysqldump -u DBUSERNAME -pDBPASSWORD DBNAME > /PATH/backup4.sql
15 16 * * * /usr/bin/mysqldump -u DBUSERNAME -pDBPASSWORD DBNAME > /PATH/backup5.sql
15 20 * * * /usr/bin/mysqldump -u DBUSERNAME -pDBPASSWORD DBNAME > /PATH/backup6.sql

是否有更有效的方法来执行此操作并执行 cron 作业自动覆盖文件,或者是否需要添加一个开关?

服务器方面的新手,但必须学习!

最佳答案

我会选择类似的东西:

15 */4 * * * /bin/bash /path/to/your/script.sh

每 4 小时的第 15 分钟执行一次 /bin/bash/path/to/your/script.sh

然后让 script.sh 为:

num=$(( ($(date "+%H") + 4 ) / 4))
/usr/bin/mysqldump -u DBUSERNAME -pDBPASSWORD DBNAME > /PATH/backup${num}.sql

获取

hour    num
 0       1
 4       2
 ....
20       6

我使用:

  • $(date "+%H") 返回小时。
  • $(date "+%H") + 4 返回小时 +4。
  • $(( ($(date "+%H") + 4 )/4)) 返回小时 +4 除以 4。

关于mysql - Cron 每 4 小时运行一次,使用不同的名称,然后覆盖 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21042532/

相关文章:

unix - Cassandra 打开的文件太多。港口死了

php - 记录在 cron 作业中运行的 curl 的返回

php - Cron 作业在 Google Appengine 中使用 CodeIgniter 失败

mysql - LOAD DATA LOCAL INFILE 语法错误

sql - MySQL数据库性能调优、schema优化

Mysql返回不同数量的行

javascript - CodeIgniter 更新一行两张表

security - 用于安全创建临时目录的 POSIX 函数是什么?

unix - 在unix中减去两个时间戳的命令

php - 从 PHP 连接到 MySQL 数据库