PDF (US Ltr)
- 26.8Mb
PDF (A4)
- 26.8Mb
ステートメントベースレプリケーションでは、マスター上で実行されたトリガーはスレーブでも実行されます。行ベースレプリケーションでは、マスター上で実行されたトリガーはスレーブ上で実行されません。代わりに、トリガー実行によって発生するマスター上の行変更は複製され、スレーブ上で適用されます。
この動作は設計によります。行ベースレプリケーション時に、スレーブがトリガーおよびそれらによって発生する行変更を適用した場合、変更は実際にはスレーブ上で 2 回適用されるため、マスターとスレーブでデータが違ってきます。
マスターとスレーブの両方でトリガーを実行したい場合 (おそらく、マスターとスレーブでトリガーが違うため)、ステートメントベースレプリケーションを使用する必要があります。ただし、スレーブ側トリガーを有効にするために、ステートメントベースレプリケーションを排他的に使用する必要はありません。この効果が必要なステートメントでのみステートメントベースレプリケーションに切り替え、残りの時間は行ベースレプリケーションを使用することで十分です。
AUTO_INCREMENT
カラムを更新するトリガー (または関数) を呼び出すステートメントは、ステートメントベースレプリケーションを使用して正しく複製されません。MySQL 5.6 はこのようなステートメントを安全でないとマークします。(Bug #45677)