Binlogイベントのフィルタリング

このドキュメントでは、DM を使用して継続的な増分データ レプリケーションを実行するときに、binlogイベントをフィルタリングする方法について説明します。レプリケーション手順の詳細については、シナリオごとに次のドキュメントを参照してください。

コンフィグレーション

binlogイベント フィルターを使用するには、以下に示すように、DM のタスク構成ファイルにfilterを追加します。

filters: rule-1: schema-pattern: "test_*" table-pattern: "t_*" events: ["truncate table", "drop table"] sql-pattern: ["^DROP\\s+PROCEDURE", "^CREATE\\s+PROCEDURE"] action: Ignore
  • schema-pattern / table-pattern : スキーマまたはテーブルに一致するフィルター

  • events :binlogイベントをフィルタリングします。サポートされているイベントを次の表に示します。

    イベントカテゴリー説明
    全てすべてのイベントが含まれます
    すべてのDMLすべての DML イベントが含まれます
    すべての ddlすべての DDL イベントが含まれます
    なしイベントは含まれません
    なしすべての DDL イベントを除外します
    なしすべての DML イベントを除外します
    入れるDMLDML イベントの挿入
    アップデートDMLDML イベントの更新
    消去DMLDMLイベントの削除
    データベースを作成するDDLデータベースイベントの作成
    データベースを削除するDDLデータベースドロップイベント
    テーブルを作成するDDLテーブルイベントの作成
    インデックスを作成するDDLインデックスイベントの作成
    ドロップテーブルDDLドロップテーブルイベント
    テーブルを切り捨てるDDLテーブルの切り捨てイベント
    テーブルの名前を変更するDDLテーブル名の変更イベント
    インデックスを削除DDLインデックスイベントのドロップ
    他の机DDLテーブル変更イベント
  • sql-pattern : 指定された DDL SQL ステートメントをフィルターします。一致ルールでは正規表現の使用がサポートされています。

  • actionDoまたはIgnore

    • Do : 許可リスト。次の 2 つの条件のいずれかを満たしている場合、 binlogイベントはレプリケートされます。

      • イベントはルール設定と一致します。
      • sql-pattern が指定されており、イベントの SQL ステートメントがいずれかの sql-pattern オプションと一致します。
    • Ignore : ブロックリスト。次の 2 つの条件のいずれかを満たす場合、 binlogイベントはフィルターで除外されます。

      • イベントはルール設定と一致します。
      • sql-pattern が指定されており、イベントの SQL ステートメントがいずれかの sql-pattern オプションと一致します。

    DoIgnore両方が設定されている場合は、 Ignore Doよりも優先されます。つまり、 IgnoreDoの両方の条件を満たすイベントが除外されます。

アプリケーションシナリオ

このセクションでは、 binlogイベント フィルターの適用シナリオについて説明します。

すべてのシャーディング削除操作をフィルターで除外する

すべての削除操作をフィルターで除外するには、以下に示すようにfilter-table-rulefilter-schema-ruleを構成します。

filters: filter-table-rule: schema-pattern: "test_*" table-pattern: "t_*" events: ["truncate table", "drop table", "delete"] action: Ignore filter-schema-rule: schema-pattern: "test_*" events: ["drop database"] action: Ignore

シャード化されたスキーマとテーブルの DML 操作のみを移行する

DML ステートメントのみをレプリケートするには、以下に示すように 2 つのBinlog event filter ruleを構成します。

filters: do-table-rule: schema-pattern: "test_*" table-pattern: "t_*" events: ["create table", "all dml"] action: Do do-schema-rule: schema-pattern: "test_*" events: ["create database"] action: Do

TiDB でサポートされていない SQL ステートメントをフィルターで除外する

TiDB でサポートされていない SQL ステートメントを除外するには、以下に示すようにfilter-procedure-ruleを設定します。

filters: filter-procedure-rule: schema-pattern: "*" sql-pattern: [".*\\s+DROP\\s+PROCEDURE", ".*\\s+CREATE\\s+PROCEDURE", "ALTER\\s+TABLE[\\s\\S]*ADD\\s+PARTITION", "ALTER\\s+TABLE[\\s\\S]*DROP\\s+PARTITION"] action: Ignore

こちらも参照

SQL式を使用したBinlogイベントのフィルタリング

このページは役に立ちましたか?