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

之前已經有一篇文章,教大家怎麼自動化備份MySQL到遠端機器上了

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

之前那篇說的是,將mysql dump出來之後直接以SSH的方式將檔案傳輸到遠端機器上儲存

我自己的用法是把伺服器上的MySQL資料dump回家裡的NAS儲存,這樣就必須把NAS的SSH打開,並且對外port也必須要打開

有鑒於前陣子QNAP中了很多勒索病毒,考量安全性之下我把對外port全數關閉只能VPN回到NAS上之後才能夠存取資料

 

這樣一來便造成外部伺服器無法將備份檔案傳回NAS上

今天要講的方法是透過NAS上的Docker建立SFTP伺服器,將對外連線開給docker上的SFTP,伺服器端一樣透過連接到SFTP伺服器將檔案傳輸回NAS上

這樣子做好處是不需要將對外port直接開給NAS,就算真的中了病毒範圍也只限縮在docker這台虛擬機中,相對還是安全許多

接著我們就來進行安裝吧

本次進行的環境將在Synology DSM中進行

STEP1 : 安裝sftp server on docker

這次使用的image是 atmoz/sftp

直接在倉庫伺服器中就可以找到他

sftp

點選下載,完成後就會在映像檔的頁面上看到,選擇image後點選”部署”

sftp

開始部署先選擇進階設定

sftp

1.儲存空間的頁籤需要設定一個NAS上的資料夾給docker做檔案儲存,這樣才能將docker中的檔案存回NAS中、

sftp

掛載路徑指的是docker中的資料夾路徑,根據作者的文件需要掛到

/home/使用者名稱/自定一個資料夾名稱,這樣子

sftp

網路的部分可以不用特別設定,勾選與docker host使用相同網路即可

最後一個環境設定,這裡根據作者文件,必須要帶入command

因此在命令的地方輸入 使用者:密碼:uid(任意指定即可)

sftp

按下套用後,等待設定完成即可

這時候sftp已經架設好在nas_ip的22port

接著,必須要到分享器來設定對外port的開放才能夠讓外部連線進來,在port的地方任意輸入埠號,對應到192.168.1.100的22 port

192.168.1.100是我的NAS IP

sftp port

這樣設定後,外部就可以使用IP:XXXX來連線到docker上的sftp了

STEP2 : 伺服器端安裝lfpt

lftp是一個可以連線到sftp伺服器的client,當然也可以不安裝,直接用sftp指令來傳檔案,只是我覺得這樣子比較方便使用而已

安裝方式很簡單

安裝完成後,就可以來設定最後一步了

 

STEP 3 : 設定自動備份檔案

只要用改上次用來自動備份MySQL的sh批次執行檔修改幾行就可以了

逐行說明:

FILENAME 定義了dump出來的備份檔檔案名稱,我這邊使用XXXX_時間來作為檔案的命名

backup_path這邊是dump出來的備份檔所載路徑

接著切換到dump檔需要存在的路徑後執行mysqldump,並且壓縮成zip檔,儲存檔名就是FILENAME定義的

下一個步驟是透過lftp連線到sftp

第一次連線你可以會收到這樣的錯誤訊息

可以參考這篇,手動連線一次之後應該就可解決

FTP上的操作就是切換到要儲存的資料夾路徑,並且講檔案放入

結束之後記得將檔案rm,移除掉伺服器上的備份檔,才不會早成容量越來越大

如果執行

可以順利完成那就代表沒有問題了,應該可以在sftp伺服器上看到備份的檔案,最後一個步驟

設定讓他可以自動執行,我們一樣透過crontab -e

我這邊這樣設定的話就是讓系統自動在每天的00:16 執行XXX.sh

這樣的話就可以達成每天自動備份了