Linux
每小時數據庫備份
我有一個帶有 Kloxo 控制面板的 VPS,我想每 2 小時從我的一個網站備份一次數據庫。我怎麼能這樣做?Kloxo 不支持每小時備份,只支持每天、每周和每月。
配置:CentOS+Apache+PHP+MysqlAdmin
編寫一個小腳本,例如:
#!/bin/bash # # Do the Backup # CURTIME=`date "+%Y%m%d-%H%M"` mysqldump --user=<dbusername> --password=<dbpassword> --all-databases | lzma -c -9 -z >/backup/db-${CURTIME}.dump.lzma
並將其放到 crontab 中。(每小時執行會更容易:然後您可以將腳本放在 /etc/cron.hourly 中。
這是我在網路伺服器上執行的 bash 腳本。它已經為我服務了一段時間了。
它在末尾包含一個用於刪除舊備份的部分。您可以在變數部分指定要保留的文件數。您必須取消註釋腳本的該部分才能使其執行。
#!/bin/sh ################################################################# # Define your variables here: ################################################################# FILESTOKEEP=7 BACKUP_DIR=/home/user/backups BMYSQL_USER=mysql_user BMYSQL_PWD=mypassword DATE=$(date +"%m-%d-%Y")_$(date +"%T") BMYSQL_HOST=localhost BMYSQL_DBNAME=--all-databases BMYSQL_DBFILENAME=MYSQL_BACKUP_$DATE ################################################################# # Make sure output directory exists. ################################################################# if [ ! -d $BACKUP_DIR ]; then mkdir -p $BACKUP_DIR fi ################################################################# # Create backup ################################################################# mysqldump --host=$BMYSQL_HOST --user=$BMYSQL_USER --pass=$BMYSQL_PWD $BMYSQL_DBNAME | gzip > $BACKUP_DIR/$BMYSQL_DBFILENAME.gz ################################################################# # Remove old backups # - this will list files according to date (DESC) # - skip the first few files (FILESTOKEEP) # - remove all files past that # NOTE: Make sure not to save the backups into any directory # where there are other files other than these backup ones. # # Uncomment when you are confident in rest of setup ################################################################# # cd $BACKUP_DIR # ls -t1 | tail -n +$(($FILESTOKEEP+1)) | xargs rm
我喜歡將我的腳本保存到我的使用者主目錄中。這可能不是標準做法,但它確實使以後很容易找到和編輯它們(幾年後閱讀)。我會將此腳本保存為:
/home/user/scripts/hourly_backup_mysql.sh
要每兩個小時將其放入您的 cron 中,請打開一個終端並輸入(以 root 身份):
crontab -e
在那裡,輸入這樣的新行:
0 0-23/2 * * * /home/user/scripts/hourly_backup_mysql.sh
(如果您不熟悉 VIM,要添加該行,您首先需要按“I”進行插入。然後轉到文件末尾並按 Enter 進入新行。粘貼字元串並編輯它。當您完成字元串編輯,按 ESC 退出插入模式。然後輸入 ‘:wq’,這將寫入並退出 VIM 編輯器。)
這現在將每 2 小時執行一次,如果您取消註釋刪除部分,也將刪除舊備份。
乾杯!