準備工作
本章節以SuSE 11 SP3操作系統下MySQL 5.5單機版為例,介紹如何通過自定義腳本來凍結、解凍MySQL數據庫,以實現對于MySQL數據庫的應用一致性備份。
場景介紹
某企業購買了云主機,并在云主機中安裝了MySQL 5.5數據庫用于存放業務數據。隨著數據量的增加,之前的崩潰一致性保護已經滿足不了RTO、RPO的要求,決定采用應用一致性備份,減小RTO與RPO。
數據準備
數據準備
| 準備項 | 說明 | 示例 |
|---|---|---|
| MySQL用戶名 | 連接MySQL數據庫時使用的用戶名 | root |
| MySQL密碼 | 連接MySQL數據庫時使用的密碼 | Example@123 |
詳細步驟
步驟1、加密MySQL密碼,供自定義腳本使用
登錄MySQL服務器,輸入cd /home/rdadmin/Agent/bin/ ,進入Agent目錄。
執行 /home/rdadmin/Agent/bin/agentcli encpwd ,回顯如下:
Enter password:
輸入MySQL密碼,并按“Enter”,屏幕上就會打印出加密后的密碼,將其拷貝到剪貼板中。
步驟2、執行cd /home/rdadmin/Agent/bin/thirdparty/ebk_user ,進入自定義腳本目錄,然后執行 vi mysql_freeze.sh, 打開MySQL示例凍結腳本。
步驟3、將下圖所示的MYSQL_USER與MYSQL_PASSWORD修改為實際值,其中MYSQL_PASSWORD為步驟1的屏幕輸出。

也可以使用sed命令來直接進行修改:
sed -i 's/^MYSQL_PASSWORD=.*/MYSQL_PASSWORD=" XXX "/' mysql_freeze.sh mysql_unfreeze.sh ,其中XXX為步驟1中打印出的密碼。
此操作會同時修改凍結解凍腳本,所以無需再執行步驟3。
步驟4、執行 vi mysql_unfreeze.sh ,打開MySQL示例解凍腳本,修改此腳本中的用戶名和密碼。
mysql_unfreeze.sh與mysql_freeze.sh腳本實現了基本的數據庫凍結與解凍操作,如果你在凍結、解凍時有其它額外步驟需要執行,可以自行在其中進行修改。
注意MySQL的凍結是通過FLUSH TABLES WITH READ LOCK指令來實現的,此指令不會觸發bin log刷盤操作,如果開啟了bin log,且sync_binlog參數不為1,則可能出現保存的備份映像中部分SQL操作未記錄到bin log的情況,如果bin log也需要完整保護,請設置sync_binlog=1。