MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  ...  /  データベースレベルレプリケーションオプションおよびバイナリロギングオプションの評価

17.2.5.1 データベースレベルレプリケーションオプションおよびバイナリロギングオプションの評価

レプリケーションオプションを評価する場合、レプリカはまず、適用される --replicate-do-db または --replicate-ignore-db オプションがあるかどうかを確認します。 --binlog-do-db または --binlog-ignore-db を使用する場合、プロセスは似ていますが、オプションはソースでチェックされます。

一致がチェックされるデータベースは、処理されるステートメントのバイナリログ形式によって異なります。 ステートメントが行形式を使用してログに記録されている場合、データが変更されるデータベースはチェックされるデータベースです。 ステートメントがステートメントの形式を使用してログに記録されている場合、デフォルトのデータベース (USE ステートメントで指定) がチェックされるデータベースになります。

注記

行形式を使用してログに記録できるのは DML ステートメントのみです。 DDL ステートメントは、binlog_format=ROW の場合でも、常にステートメントとして記録されます。 したがって、すべての DDL ステートメントは、ステートメントベースのレプリケーションのルールに従って常にフィルタ処理されます。 つまり、DDL ステートメントを適用するには、USE ステートメントを使用してデフォルトのデータベースを明示的に選択する必要があります。

レプリケーションの場合、関連するステップは次のとおりです:

  1. どのロギング形式が使用されますか。

    • STATEMENT.  デフォルトのデータベースをテストします。

    • ROW.  変更の影響を受けるデータベースをテストします。

  2. --replicate-do-db オプションはありますか ?

    • はい.  データベースはこれらのいずれかと一致しますか。

      • はい.  ステップ 4 に進みます。

      • いいえ.  更新を無視して終了します。

    • いいえ.  手順 3 に進みます。

  3. --replicate-ignore-db オプションはありますか ?

    • はい.  データベースはこれらのいずれかと一致しますか。

      • はい.  更新を無視して終了します。

      • いいえ.  手順 4 に進みます。

    • いいえ.  手順 4 に進みます。

  4. テーブルレベルレプリケーションオプションがある場合、それらの検査に進みます。 これらのオプションの検査方法の説明については、セクション17.2.5.2「テーブルレベルレプリケーションオプションの評価」を参照してください。

    重要

    この段階でまだ許可されているステートメントは、実際にはまだ実行されていません。 ステートメントはすべてのテーブルレベルオプション (ある場合) が検査されるまで実行されず、そのプロセスの結果がステートメントの実行を許可します。

バイナリロギングの場合、関連する手順の一覧は次のとおりです。

  1. --binlog-do-db または --binlog-ignore-db オプションはありますか ?

    • はい.  手順 2 に進みます。

    • いいえ.  ステートメントのログを記録して終了します。

  2. デフォルトデータベースはありますか (データベースが USE で選択されていますか) ?

    • はい.  手順 3 に進みます。

    • いいえ.  ステートメントを無視して終了します。

  3. デフォルトデータベースがあります。 --binlog-do-db オプションはありますか ?

    • はい.  それらのいずれかがデータベースに一致しますか ?

      • はい.  ステートメントのログを記録して終了します。

      • いいえ.  ステートメントを無視して終了します。

    • いいえ.  手順 4 に進みます。

  4. --binlog-ignore-db オプションのいずれかがデータベースに一致しますか ?

    • はい.  ステートメントを無視して終了します。

    • いいえ.  ステートメントのログを記録して終了します。

重要

ステートメントベースロギングの場合、CREATE DATABASEALTER DATABASE、および DROP DATABASE ステートメントに適用されるルールにだけ例外が作成されています。 これらの場合には、更新のログを記録または無視するかを判断するときに、作成、変更、またはドロップされるデータベースがデフォルトデータベースを置き換えます。

--binlog-do-dbほかのデータベースを無視することを意味する場合があります。 たとえば、ステートメントベースロギングを使用するときに、--binlog-do-db=sales だけで動作するサーバーは、デフォルトデータベースが sales ではないバイナリログステートメントに書き込みません。 同じオプションで行ベースロギングを使用するときは、サーバーは sales 内のデータを変更する更新のみのログを記録します。


関連キーワード:  ステートメント, データベース, ソース, ログ, ベース, バイナリ, GTID, binlog, 記録, トランザクション