MySQL備份 MySQL 定期自動備份到遠端機器

MySQL備份 大家都知道可以使用mysqldump,但是應該沒有人會記得天天自己上去機器備份吧

因此要做到自動備份就要仰賴作業系統,無論是windows排程還是Linux corntab

接著除了自動備份以外,如果備份檔案還是存在於同一台機器上,那麼當機器無法連線時再多的備份都無用

因此今天還要再加入自動備份到遠端機器上

接下來的動作會用到幾項東西

  1. mysqldump : 備份用應該沒有疑慮
  2. crontab : Linux排程器
  3. ssh遠端免密碼設定:要讓script直接ssh將檔案送至遠端所以無法設定密碼驗證,需要透過金鑰

如果你還沒有看過架站文章請先參考

ubuntu基礎架站

參考文件 :

https://gwokae.mewggle.com/wordpress/2010/08/%E8%B6%85%E6%98%93-%E5%85%A9%E8%A1%8C%E6%8C%87%E4%BB%A4%E6%90%9E%E5%AE%9A-linux-ssh%E7%99%BB%E5%85%A5%E5%85%8D%E5%AF%86%E7%A2%BC/

https://blog.lupopi.com/2012/10/mysql-sq.html

https://code.kpman.cc/2015/02/11/%E5%88%A9%E7%94%A8-crontab-%E4%BE%86%E5%81%9A-Linux-%E5%9B%BA%E5%AE%9A%E6%8E%92%E7%A8%8B/

https://stackoverflow.com/questions/19664893/linux-shell-script-for-database-backup

情境說明:

本次要做的範例是將一台Softlayer虛擬伺服器上的MySQL在每天凌晨2點時自動備份到我房間的NSA主機上,至於NAS如何開啟SSH在這邊就不多做說明,每個品牌不同可以自行google搜尋

 

步驟一 :先設定遠端SSH免密碼

為什麼要做這個步驟?首先因為要透過shell scrip直接用SSH將檔案送到遠端伺服器,因此必須要將金要先設定好讓Softlayer主機可以直接發送SSH到NAS上,所以我們要設定Softlayer的金鑰送到NAS上儲存

指令一 :Softlayer產生金鑰組

指令二 :將金鑰組設定到NAS的信任清單中

指令三 :因為金鑰可編輯有點危險,因此必須設定唯讀權限

 

步驟二 :撰寫shell script檔案

接著必須寫一個sh檔,讓crontab定期去執行它

要注意的地方有幾個

  1. 我是用時間去組合備份檔名,這部分可以自由設計
  2. USER : 代表登入mysql的帳號
  3. PASSWORD : 代表登入mysql的密碼,-P與PASSWORD之間並沒有空白
  4. –routines : 代表著需要連stored procedure都匯出
  5. 後面的意思就是將備份檔案壓縮起來之後透過SSH送到遠端,接著利用cat將檔案放到你要的位置上

最後存檔為mysql.sh

步驟三 :必須要讓mysql.sh具有執行權限

透過指令修改mysql.sh的權限

步驟四:設定crontab

透過crontab -e 打開檔案編輯,本次範例加入一行

讓系統在每天的2點去執行 bash PATH_TO_SH/mysql.sh

當然你也可以手動執行sh檔,就會在預計要儲存備份檔的機器看到.gz壓縮檔了