シナリオ
SQLスレッドが終了した後にMySQLデータベースのマスターコピーを自動的にリレーログのデフォルトライブラリから削除されます。しかし:relay_log_purge = 0とMHAクラスタでは、手動で削除する必要が自動的に削除されません。どのように安全に、より重要なのリレーログを削除するには!
主に2つの方法があります:
一つの方法:
MHAにより削除するには、ツールpurge_relay_logsツールが付属しています。
ステップ:
- 作業ディレクトリを作成します。
パフォーマンスを向上させるために、目的、作業ディレクトリは、MySQLと同じディスクパーティション上にある必要があります
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
- crontabファイルに追加しました
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:自動設定"relay_log_purge = 1"
第二の方法:
手動でのリレーログを削除
- 提供relay_log_purge = 1
SET GLOBAL relay_log_purge = 1
- フラッシュログは
データベースから、管理者ユーザー経由でログインし、次のコマンドを実行します。
flush logs;
あなたは複数を実行することができます!
注意:
リレーログログの観察蓄積が削除されている場合は、削除した場合、以下のステップ6「回復relay_log_purge = 0」の直接の実装は、除去されていない場合、ダウンステップ3の動作の下から「スレーブを停止」し続けます!!!
- スレーブが停止し
、管理者ユーザーがデータベースから上陸し、その後、次のコマンドを実行します。
stop slave;
- リレーログを削除
RMリレーログで直接削除することができ
、安全なを使用して、次のように削除します。
合計数(1)リレーの統計上のすべての文書(含むrelay_log_name.index)
ls -A1 |grep relay | sort -rn | wc -l
(2) 列出要删除所有有关relay的文件:
ls -A1 |grep relay | sort -rn | tail -n 100
说明: 100 为要删除的relay logs 数量
(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
通过管理员用户登陆从数据库,然后执行下面命令:
start slave;
6 . 恢复relay_log_purge = 0
通过管理员用户登陆从数据库,然后执行下面命令:
SET GLOBAL relay_log_purge=0;
扩展
如果你对从数据库要求不高,可以将relay_log_purge = 1