Cron

用於將數據庫自動備份到日期前綴文件的 cronjob

  • April 16, 2019

我正在使用最新的 Linux Mint。我想知道是否可以為數據庫備份創建一個特殊的 cronjob。

在我的/etc/cronjob文件中,我有以下程式碼:

# Minute   Hour   Day of Month       Month          Day of Week        Command    
# (0-59)  (0-23)     (1-31)    (1-12 or Jan-Dec)  (0-6 or Sun-Sat)                
30        4          *            *                1-6            /home/users/backup.sh

在我的/home/users/backup.sh我有:

mysqldump -uroot -p MyDatabase > /home/users/backup_MyDB/full_myDB.sql

而不是full_myDB.sql我想要2014-04-04_full_myDB.sql根據我們擁有的日期動態添加日期的地方。

如果 SQL 備份文件超過一周,我希望 cronjob自動刪除它。

使用 GNU date(Linux Mint 上的預設設置),您可以:

mysqldump -uroot -p MyDatabase >/home/users/backup_MyDB/$(date +%F)_full_myDB.sql

要刪除超過 1 週的文件:

find /home/users/backup_MyDB -type f -mtime +7 -exec rm {} +

儘管通常在刪除之前(至少在測試腳本時)查看要刪除的內容是明智的,但只需這樣做:

find /home/users/backup_MyDB -type f -mtime +7

我使用了上述資訊,並希望再提供一個小更新,它實際上會截斷正在減慢我們備份速度的非常大的表之一。

希望這對其他人有幫助。

使用上述資訊,我創建了一個名為 mysqlbackup.sh 的基本 shell 腳本,其內容如下:

#!/bin/sh
find /data/var/backups/mysql/dumps -type f -mtime +3 -exec rm {} +
mysql -e "truncate table sitename_prod.cache_table"
mysqldump sitename_prod > /data/var/backups/mysql/dumps/$(date +%F)_full_sitename_prod.sql

確保執行:chmod +x mysqlbackup.sh

我也把它放在我的 crontab -e 中:

# MYSQL Dump and retention for 3 days
30 22 * * * bash /root/bin/mysqldump.sh > /dev/null 2>&1

引用自:https://unix.stackexchange.com/questions/123189