SET GLOBAL sql_slave_skip_counter = N
このステートメントは、マスターからの次の N
個のイベントをスキップします。これは、あるステートメントによって発生したレプリケーション停止からのリカバリに役立ちます。
このステートメントは、スレーブスレッドが実行されていない場合にのみ有効です。そうでないと、エラーが生成されます。
このステートメントを使用する場合は、バイナリログが実際には、イベントグループと呼ばれるグループのシーケンスとして構成される点を理解することが重要です。各イベントグループは、イベントのシーケンスで構成されます。
トランザクションテーブルの場合、イベントグループはトランザクションに対応しています。
非トランザクションテーブルの場合、イベントグループは 1 つの SQL ステートメントに対応しています。
1 つのトランザクションに、トランザクションテーブルと非トランザクションテーブルの両方の変更を含めることができます。
SET GLOBAL sql_slave_skip_counter
を使用してイベントをスキップした結果がグループの途中である場合、スレーブは、そのグループの最後に達するまで引き続きイベントをスキップします。そのあと、次のイベントグループから実行が開始されます。
MySQL 5.6 では、このステートメントを発行すると、RELAY_LOG_FILE
、RELAY_LOG_POS
、および sql_slave_skip_counter
の以前の値がエラーログに書き込まれます。