近日企業遭駭的災情頻傳,若平日資料庫沒有做好備份,那後果可想而知。對此,這裡將介紹開源碼MySQL資料庫伺服器所提供的複製功能,實地示範如何確實完成資料庫資料的備份工作。
在確認rpl_semi_sync_master模組已經安裝完成且已經啟動的情況後,繼續說明rpl_semi_sync_master模組提供的參數,可利用執行「show variables like '%semi%'」指令來取得模組所提供的相關參數,如圖6所示。
|
▲圖6 顯示模組所提供的相關參數。 |
關於rpl_semi_sync_master模組常用的相關參數,可參考表2內的說明。
表2 rpl_semi_sync_master模組常用參數說明
接著,在主資料庫上利用grant指令新建一個可使用複製的權限以提供從資料庫進行複製,如圖7所示即為建立一個使用者名稱為rep的帳號,並允許從資料庫來進行複製。
|
▲圖7 建立一個使用者名稱為rep的帳號。 |
在設定完主資料庫後,接著繼續設定從資料庫。同樣地,就如同安裝主資料庫一般,在登入資料庫後,可利用如圖8中所示的指令來安裝相關模組及檢查安裝是否成功。
|
▲圖8 安裝相關模組並檢查是否安裝成功。 |
接著,執行「show variables like '%semi%'」指令來取得模組相關組態,如圖9所示(組態說明同主資料庫的組態說明,便不多加贅述)。
|
▲圖9 取得模組相關組態。 |
實作主從式(1對1)半同步複製系統
這裡將以一台主資料庫複製資料到一台從資料庫為例,來實作半同步複製系統。
首先,在主資料庫的「/etc/my.cnf」組態檔設定組態,如圖10所示(以備份test資料庫內容至從資料庫為例)。
|
▲圖10 設定主資料庫的「/etc/my.cnf」組態檔。 |
重啟主資料庫MySQL伺服器,然後可登入MySQL伺服器,以「show master status;」指令查看半同步複製模組是否正常運作在Master模式,如圖11所示。要特別記錄Position欄位及FILE欄位的值,此值為從資料庫設定時所需要。
|
▲圖11 確認半同步複製模組是否正常運作在Master模式。 |
接著,到從資料庫內的「/etc/my.cnf」設定如圖12所示的組態。
|
▲圖12 修改「/etc/my.cnf」檔案內容。 |
同樣地,在重啟從資料庫上的MySQL伺服器之後,登入MySQL伺服器,執行指令如下:(其中MASTER_LOG_FILE及MASTER_LOG_POS的資訊須從master主機取得,其中#為註解符號)
啟動Slave複製功能之後,可以利用「show slave status \G」指令來顯示目前的Slave狀態,如果一切正常,將會顯示類似如圖13所示的輸出結果。
|
▲圖13 檢視輸出結果。 |
另外,可到從主資料庫中執行「show processlist;」指令,應該會看到有一項從資料的連線記錄,如圖14所示。
|
▲圖14 找出從資料庫的連線記錄。 |
此時,主從式(1對1)半同步複製系統就設定完成了,只要在主資料庫中的test資料庫有任何變動,便會將相關變動資料同步到從資料庫內。
<本文作者:吳惠麟,多年資安經驗,喜好利用開源碼建構相關解決方案,著有「資訊安全原理與實驗」等書。>