情景
MySQL數(shù)據(jù)庫主從復(fù)制在默認(rèn)情況下從庫的relay logs會在SQL線程執(zhí)行完畢后被自動刪除。但是:在relay_log_purge = 0和MHA集群下,不會被自動刪除,需要手動刪除。如何安全的刪除relay logs就比較關(guān)鍵了!
主要有兩種方式:
方式一:
通過MHA中自帶的工具 purge_relay_logs 工具來刪除。
步驟:
目的為了提高性能,這個工作目錄必須跟mysql在同一個磁盤分區(qū)
mkdir -p /data/mha_tmp
/usr/bin/purge_relay_logs --user=USERNAME --password=PASSWORD --host=Mysql_IP --disable_relay_log_purge --workdir=/data/mha_tmp 2>&1
0 4 * * * /usr/bin/purge_relay_logs --user=USERNAME --password=PASSWORD --host=Mysql_IP --disable_relay_log_purge --workdir=/data/mha_tmp 2>&1
說明:
–disable_relay_log_purge:自動設(shè)置 "relay_log_purge = 1"
方式二:
手動刪除 relay log
SET GLOBAL relay_log_purge = 1
flush logs;
可以執(zhí)行多次!
注意:
觀察堆積的relay logs日志是否已經(jīng)刪除,如果刪除,直接執(zhí)行下面第6步“恢復(fù)relay_log_purge = 0“;如果未刪除,繼續(xù)從下面第3步”停止slave“往下操作!??!
stop slave;
(1) 統(tǒng)計所有關(guān)于relay的文件(包括 relay_log_name.index)總個數(shù)
ls -A1 |grep relay | sort -rn | wc -l
(2) 列出要刪除所有有關(guān)relay的文件:
ls -A1 |grep relay | sort -rn | tail -n 100
說明: 100 為要刪除的relay logs 數(shù)量
(3) 確定沒有問題,刪除relay logs:
ls -A1 |grep relay | sort -rn | tail -n 100 | xargs rm -rf {}
注意:
要保留最新的兩個relay log
要保留relay log的index文件
relay log的index一般命名為: relay_log_name.index
例如: relay-bin.index
5. 啟動slave
通過管理員用戶登陸從數(shù)據(jù)庫,然后執(zhí)行下面命令:
start slave;
6 . 恢復(fù)relay_log_purge = 0
通過管理員用戶登陸從數(shù)據(jù)庫,然后執(zhí)行下面命令:
SET GLOBAL relay_log_purge=0;
擴(kuò)展
如果你對從數(shù)據(jù)庫要求不高,可以將relay_log_purge = 1