2010年3月22日

[MySQL] 設定資料庫定期自動備份

上週開始持續調整以 Joomla 架設的資產管理系統,其中一個需求是自動定期備份 DB,如此便可追蹤這些設備在一段時間內的變化(其實我還是覺得如果要作版本控管的話,用 svn 或者 git 之類的版本控管軟體會更好…),當發生不幸的意外時也才能迅速的將寶貴的資料還原。

由於 Joomla 的資料都存在 MySQL DB 中,因此今天就 survey 了一下讓 MySQL 定期排程備份的作法。

I.以 shell script 呼叫 mysqldump 執行備份,將此 script 寫入 crontab 排程中

參考資料:MySQL 備份 shell script。這 script 的核心非常簡單,只有一行而已 (其他更 fancy 的工具應該也是呼叫這個 MySQL 內建的 dump 工具):

mysqldump -u $db_user -h $db_host -p$db_passwd $db | $GZIP -9 > "$backup_dir/backup.0/$time.$db.gz"

而 crontab 的編寫也是玩 Linux / Unix 的基本功,可參考:鳥哥的 Linux 私房菜-第十六章、例行性工作排程 (crontab)。以這個方法來備份 MySQL 大概是最不求人、也相當普遍的作法。

II.利用 Navicat full version 來作

參考資料:[教學] MySQL 定期自動備份。這是一個可安裝在 Windows / Linux / Mac OS X 平台的 client 端軟體,安裝和操作都相當方便 (畫面蠻漂亮的)。雖然說 Navicat 有推出一個免費的 Navicat Lite,但是免費版連手動執行 backup 都做不到呀!因此它就很遺憾的出局了,但是有錢買來用的話應該相當好用 (最貴的授權要台幣一萬出頭),看來這軟體也是相當的知名。

III.利用 phpMyBackupPro (pMBP) 來作

2010-03-23 補充:[網管人雜誌] MySQL 專用備份工具-phpMyBackupPro (長篇的詳細說明)

參考資料:Web 介面的 MySQL 備份工具-phpMyBackupPro, 官方網站下載頁面在這裡,這是個 host 在 SourceForge 的 open source 專案,所以是免費的!安裝的過程非常簡單,在 Windows 平台上只要把解縮後的 phpMyBackupPro 資料夾複製到 Apache 的根目錄下即可。

2010-03-23 補充:在 Linux 平台上安裝也很簡單,只要把資料夾 export 及檔案 global_conf.php 設定權限為 0777 就可以了。執行身分為 apache。

其中最重要的一點是,若 DB 中有儲存中文資料,要依照論壇中 slimn 前輩提供的修改方式來調整,經過測試確實有效 (Windows 平台 OK, 目前在 Linux 測試機上仍為亂碼 [2010-03-23]):

pMBP_TraditionalChineseTest

以下補充教學文章中沒有特別說明的設定畫面。

在 configuration tab中,可設定僅備份指定 DB:

pMBP_configurationSettings

在 backup tab 中,記得要手動選取欲執行備份的 DB:

pMBP_BackupSettings

在 backup tab 中可設定是否要壓縮備份產出的 .sql 檔,有 gzip / zip 格式:

pMBP_BackupCompressionSettings

在 schedule backup tab 中,可設定自動執行備份的週期:

pMBP_scheduleBackupSettings
包括每小時、每6小時、每12小時、每天、每週、每月等等週期。

在 schedule backup tab 中,也可自訂定期備份 php 檔的檔名:

pMBP_scheduleBackupSettings_SaveNewScriptFile

在 import tab 中,若已經執行過備份,則可觀看指定備份檔(.sql) 的各項資訊:

pMBP_import_viewBackupFileInfo 包括執行備份的日期時間、DB Name、file size 等。

關於 schedule backup:

Web 介面的 MySQL 備份工具-phpMyBackupPro一文中提到,schedule backup 感覺不太實用,因為排程備份的作法是一段 php 程式碼,而phpMyBackupPro 只是負責幫你產出這段 code,必須要另外加工讓這段 code 能夠定時執行 (不管是利用網頁的 META Refresh 或者在 crontab 中定期用 wget 去 request 這個 php 網頁)。但我覺得 phpMyBackupPro 還可提供備份後自動上傳到 FTP、自動寄送 mail 等等,而且檢視/還原 backup 檔案的介面也十分簡便,安裝和設定也很容易就可以上手,還是很不錯用的啦!

1 則留言:

匿名 提到...

我是用apache 2.2.3可以正確地將備份sql寄送到我設的信箱

但是,用apache 2.2.3以上的版本在備份時,會說'無法送出郵件'...請問這問題該怎麼解決 ~_~我尚未研究出來...

Google Spreadsheet 裡用規則運算式

最近因為工作關係,遇到要用 Google Form 及 Google Sheet 所以研究了 Google Sheet 裡的一些 function 怎麼用 首先,分享一下如何在 Google Sheet 裡用規則運算 :D