📣
TiDB Cloud Essential はパブリックプレビュー中です。このページは自動翻訳されたものです。原文はこちらからご覧ください。

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すべてのDDLイベントを除外します
    なし dmlすべての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 ステートメントのみをレプリケートするには、次に示すようにBinlog event filter ruleを 2 つ設定します。

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イベントをフィルタリングする

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