Linux

每小時數據庫備份

  • April 9, 2015

我有一個帶有 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 小時執行一次,如果您取消註釋刪除部分,也將刪除舊備份。

乾杯!

引用自:https://serverfault.com/questions/460492