MySQL 預設從庫在 SQL 執行緒執行完 Relay Log 後自動刪除。但 MHA 架構下,滯後從庫恢復需依賴其他從庫的 Relay Log,因此必須:
relay_log_purge = 0SET GLOBAL relay_log_purge = 1;
FLUSH LOGS;
SET GLOBAL relay_log_purge = 0;
使 MySQL 產生新 Relay Log 檔案,舊檔案可安全刪除
rm -f /path/to/archive_dir/*| 參數 | 說明 | 預設值 |
|---|---|---|
--user | MySQL 用戶名 | root |
--password | MySQL 密碼 | — |
--host | 主機位址 | 127.0.0.1 |
--port | 連接埠 | 3306 |
--workdir | 硬連結建立目錄(建議與 Relay Log 同分區) | /var/tmp |
--disable_relay_log_purge | 若 relay_log_purge=1 則腳本退出;設此參數則暫設為 0 清理後復原 | — |
# 每天凌晨 5 點執行清理
0 5 * * * app /usr/bin/purge_relay_logs \
--user=root --password=PASSWORD \
--disable_relay_log_purge \
>> /var/log/masterha/purge_relay_logs.log 2>&1
$ purge_relay_logs --user=mha --password=mha --disable_relay_log_purge
2015-04-23 14:33:20: purge_relay_logs script started.
relay_log_purge is enabled. Disabling..
Found relay_log.info: /data/mysqldata/relay-log.info
Opening /data/mysqldata/vdbsrv3-relay-bin.000001 ..
Opening /data/mysqldata/vdbsrv3-relay-bin.000002 ..
Executing SET GLOBAL relay_log_purge=1; FLUSH LOGS; sleeping a few seconds so that SQL thread can delete older relay log files (if it keeps up); SET GLOBAL relay_log_purge=0; .. ok.
2015-04-23 14:33:23: All relay log purging operations succeeded.
--workdir 必須與 Relay Log 目錄同分區