2015年10月24日土曜日

mysqld-relay-bin.00xxxxが溜まっている場合の対応方法

MySQLのレプリケーションを試してみたので注意点など - (゚∀゚)o彡 sasata299's blog

MySQLでマスター/スレーブしている場合に、スレーブ側でDuplicate Entry等のエラーが起きるとスレーブへのコピーが止まり、でもコピー内容は溜まっていく。
そのコピー内容を記録しているのがmysqld-relay-bin.xxxxxxというファイルらしい。

対応方法はスレーブ側のMySQLで下記コマンドを実行する。
1. SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
(エラーになったクエリをスキップする。厳密なデータのスレーブを求められる場合はスレーブ側のデータを直すべきかも。)
2. START SLAVE;
(スレーブ再開)
3. SHOW SLAVE STATUS\G
(エラーが出ていなくて、Slave_IO_RunningとSlave_SQL_RunningがともにYesになっていればOK。そうでない場合は1と2を繰り返す。)

あまりにもエラーが多い場合は手作業じゃなくて下記のようなやり方をした方が良いかも。
Skip duplicate entries in a slave | Random Thoughts


Duplicate Entryではなく下記エラーで止まっている場合は、
Last_Error: Could not parse relay log event entry. The possible reasons are: the master's binary log is corrupted (you can check this by running 'mysqlbinlog' on the binary log), the slave's relay log is corrupted (you can check this by running 'mysqlbinlog' on the relay log), a network problem, or a bug in the master's or slave's MySQL code. If you want to check the master's binary log or slave's relay log, you will be able to know their names by issuing 'SHOW SLAVE STATUS' on this slave.
MySQLのレプリケーションでLast_SQL_Errno: 1594が出た場合の対処方法を参考に。 うまくいかない場合はマスターをダンプしてスレーブにコピーしてから同期を再開。 MYSQLのレプリケーション不整合を解決を参考に。コメント欄も。

0 件のコメント:

ブログ アーカイブ

カテゴリー