Cron
用於將數據庫自動備份到日期前綴文件的 cronjob
我正在使用最新的 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