使用 WordPress 架設的朋友,一定都會必裝 WordPress Database Backup 這隻插件,讓資料庫中的資料,自動備份並寄送到指定的信箱中,如此一下來就可省去手動備份的不便,但有用過這隻插件的朋友,是否有發現到,當資料庫的檔案愈來愈大時,時常會收不到,起初我以為是 Gmail 的限定,但最後發現到,並不是信箱的問題,而是 WordPress Database Backup 在進行資料庫備份時,會讓 CPU 的用量瞬間飆高,造成備份失敗,或是網站瞬間掛掉的問題。

  因此為瞭解決這個問題,我多次與糖果主機,不斷的來回討論,終於找了一個解決辦法,就是透過 Liunx 的腳本來備份資料庫與寄送,最後搭配 cPanel 中的排程,就可達到像 WordPress Database Backup 一樣,會自動定時的將資料庫備份,且寄送到指定的信箱中,至於備份的腳本要怎麼寫,以及 cPanel 排程要如何設定,現在就一塊來看看吧!


Step1
首先,只需修改 1. 寄件者、 2. 收件者、 3. 資料庫帳號、 4. 資料庫密碼、 5. 資料庫名稱、 6. 主機目錄,當都修改完畢後,再將它儲存成 「 db_backup.sh 」。

db_backup.sh

#!/bin/sh

from='寄件者'
to='收件者'

NOW=$(date +"%Y-%m-%d-%H-%M");
NOW2=$(date +"%Y-%m-%d %H:%M");
mysqldump -u 資料庫帳號 -p 資料庫密碼 資料庫名稱 > 資料庫名稱-${NOW}.sql
tar cfz /主機目錄/資料庫名稱-${NOW}.tar.gz 資料庫名稱-${NOW}.sql
rm -f /主機目錄/資料庫名稱-${NOW}.sql

if [ -f /主機目錄/資料庫名稱-${NOW}.tar.gz ]; then
	echo "資料庫備份,時間 ${NOW2}" | mailx -s "xxx.com 資料庫備份 ${NOW2}" -a /主機目錄/資料庫名稱-${NOW}.tar.gz -r $from $to
fi

rm -f /主機目錄/資料庫名稱-${NOW}.tar.gz	

Step2

接着開啓 cPanel 後台,進入 「檔案管理員」,點選 「上傳」,將剛所編輯好的腳本上傳到主機根目錄中。


Step3

上傳完畢後,在主機的根目錄中,就會看到剛所上傳的腳本檔。


Step4

接着回到 cPanel 管理畫面,再點選 「工作排程」的圖示。


Step5

進入工作排程後,上方設定備份的時間,而下方的指令地方,輸入/bin/sh 備份檔腳本.sh 。


Step6

當建立完畢後,在下方的工作排程中就會看到,而這邊我是設定每晚半夜 12 點再來進行備份。


Step7

接着每天晚上 12:00,就會收到資料庫的備份檔,是不是超方便的呀!而這一個方法,不只限於 WordPress 使用,只要是 Liunx 主機,並且後台有排程工作,都可使用這方式來進行備份喔!