MySQLマスタースレーブ障害の概要
症状1:Slave_IO_RunningがNO
エラー:
ライブラリからのSlave_IO_RunningはNO
マスターとスレーブのMySQLサーバーIDが等しいため、スレーブI / Oスレッドが停止します。レプリケーションを機能させるには、これらのIDが異なる必要があります(または、スレーブで--replicate-same-server-idオプションを使用する必要がありますが、これは必ずしも意味がありません。使用する前にマニュアルを確認してください)。
問題分析:
マスターライブラリとスレーブライブラリのserver-id値は同じです。
解決:
スレーブライブラリのserver-id値を、メインライブラリとは異なり、メインライブラリよりも低くなるように変更します。変更後に再起動し、再度同期します
症状2:Slave_IO_RunningがNO
エラー:
ライブラリからのSlave_IO_RunningはNO
問題分析:
スレーブライブラリスレッドがNOになる理由はたくさんあります。主な理由は、主キーの競合またはマスターデータベースがデータを削除または更新し、スレーブデータベースがレコードを見つけられず、データが変更されるためです。通常、ステータスコードエラーは1007、1032、1062、1452などです。
解決策1:
mysql> stop slave;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave;
解決策2:
ユーザー権限を設定し、ライブラリから読み取り専用権限を設定します
set global read_only=true;
故障现象三:リレーログの位置の初期化エラー:バイナリログからヘッダーを読み取るI / Oエラー
エラー:
リレーログ位置の初期化中にエラーが発生しました
:バイナリログ分析からヘッダーを読み取るI / Oエラー分析:
スレーブライブラリのリレービンが破損しています。
解決:
手動で修復し、同期されたbinlogとposポイントを再度見つけて、再同期します。
mysql> CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.xxx',MASTER_LOG_POS=xxx;