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


17.2.3.3 レプリケーションルールの適用

このセクションでは、レプリケーションフィルタリングオプションのさまざまな組み合わせの追加説明と例を示します。

次の表に、レプリケーションフィルタルールのいくつかの典型的な組み合わせをいくつか示します。

条件 (オプションのタイプ) 結果
--replicate-* オプションが全然ない スレーブはマスターから受け取るすべてのイベントを実行します。
--replicate-*-db オプション、しかしテーブルオプションがない スレーブは、データベースオプションを使用してイベントを受け入れるか無視します。テーブル制約がないため、これらのオプションで許可されるすべてのイベントを実行します。
--replicate-*-table オプション、しかしデータベースオプションがない データベース条件がないため、データベース検査段階ですべてのイベントが受け入れられます。スレーブは、テーブルオプションにのみ基づいてイベントを実行または無視します。
データベースおよびテーブルオプションの組み合わせ スレーブは、データベースオプションを使用してイベントを受け入れるか無視します。それから、テーブルオプションに従ってこれらのオプションで許可されるすべてのイベントを評価します。これは、直観に反しているように見えたり、ステートメントベースまたは行ベースレプリケーションのどちらを使用するかによって異なる結果となったりする場合があります。例のテキストを参照してください。

より複雑な例を示します。ステートメントベースおよび行ベースの両方の設定の結果を調べます。

データベース db1 内に mytbl1、データベース db2 内に mytbl2 という 2つのテーブルがマスター上にあり、スレーブが次のオプションで動作していると想定します (ほかのレプリケーションフィルタリングオプションはない)。

replicate-ignore-db = db1
replicate-do-table  = db2.tbl2

ここで、次のステートメントをマスター上で実行します。

USE db1;
INSERT INTO db2.tbl2 VALUES (1);

スレーブでの結果はバイナリログ形式によって大きく異なり、どちらかのケースで当初の予測に一致しない場合があります。

ステートメントベースのレプリケーション  USE ステートメントによって db1 がデフォルトデータベースになります。このため、--replicate-ignore-db オプションが一致し、INSERT ステートメントが無視されます。テーブルオプションは検査されません。

行ベースのレプリケーション  デフォルトデータベースは、行ベースレプリケーションを使用するときにスレーブがデータベースオプションをどのように読み取るかに影響しません。その結果、USE ステートメントは --replicate-ignore-db オプションがどのように処理されるかに違いをもたらしません。このオプションで指定されるデータベースは INSERT ステートメントがデータを変更するデータベースに一致しないため、スレーブはテーブルオプションの検査に進みます。--replicate-do-table で指定されるテーブルは、更新すべきテーブルに一致し、行が挿入されます


User Comments
Sign Up Login You must be logged in to post a comment.