Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


17.4.1.32 レプリケーションとトリガー

ステートメントベースレプリケーションでは、マスター上で実行されたトリガーはスレーブでも実行されます。行ベースレプリケーションでは、マスター上で実行されたトリガーはスレーブ上で実行されません。代わりに、トリガー実行によって発生するマスター上の行変更は複製され、スレーブ上で適用されます。

この動作は設計によります。行ベースレプリケーション時に、スレーブがトリガーおよびそれらによって発生する行変更を適用した場合、変更は実際にはスレーブ上で 2 回適用されるため、マスターとスレーブでデータが違ってきます。

マスターとスレーブの両方でトリガーを実行したい場合 (おそらく、マスターとスレーブでトリガーが違うため)、ステートメントベースレプリケーションを使用する必要があります。ただし、スレーブ側トリガーを有効にするために、ステートメントベースレプリケーションを排他的に使用する必要はありません。この効果が必要なステートメントでのみステートメントベースレプリケーションに切り替え、残りの時間は行ベースレプリケーションを使用することで十分です。

AUTO_INCREMENT カラムを更新するトリガー (または関数) を呼び出すステートメントは、ステートメントベースレプリケーションを使用して正しく複製されません。MySQL 5.6 はこのようなステートメントを安全でないとマークします。(Bug #45677)