、MySQLデータベースリレーログから最も安全な方法でそれを削除するための最良の方法

シナリオ
SQLスレッドが終了した後にMySQLデータベースのマスターコピーを自動的にリレーログのデフォルトライブラリから削除されます。しかし:relay_log_purge = 0とMHAクラスタでは、手動で削除する必要が自動的に削除されません。どのように安全に、より重要なのリレーログを削除するには!

主に2つの方法があります:

一つの方法:
MHAにより削除するには、ツールpurge_relay_logsツールが付属しています。

ステップ:

  1. 作業ディレクトリを作成します。

パフォーマンスを向上させるために、目的、作業ディレクトリは、MySQLと同じディスクパーティション上にある必要があります

mkdir -p /data/mha_tmp
  1. パージリレーログ
/usr/bin/purge_relay_logs --user=USERNAME --password=PASSWORD --host=Mysql_IP --disable_relay_log_purge --workdir=/data/mha_tmp 2>&1  
  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"

第二の方法:
手動でのリレーログを削除

  1. 提供relay_log_purge = 1
SET GLOBAL relay_log_purge = 1
  1. フラッシュログは
    データベースから、管理者ユーザー経由でログインし、次のコマンドを実行します。
flush logs;

あなたは複数を実行することができます!
注意
リレーログログの観察蓄積が削除されている場合は、削除した場合、以下のステップ6「回復relay_log_purge = 0」の直接の実装は、除去されていない場合、ダウンステップ3の動作の下から「スレーブを停止」し続けます!

  1. スレーブが停止し
    、管理者ユーザーがデータベースから上陸し、その後、次のコマンドを実行します。
stop slave;
  1. リレーログを削除
    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

おすすめ

転載: www.cnblogs.com/kcxg/p/11128181.html