📣
TiDB Cloud Premium はパブリックプレビュー中です。エンタープライズワークロード向けの無制限のスケーリング、即時の弾力性、高度なセキュリティを提供します。このページは自動翻訳されたものです。原文はこちらからご覧ください。

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イベントをフィルタリングします。サポートされているイベントは以下の表のとおりです。

    イベントカテゴリ説明
    allすべてのイベントを含む
    all dmlすべてのDMLイベントを含む
    all ddlすべてのDDLイベントを含む
    noneイベントは含まれません
    none ddlすべてのDDLイベントを除外します
    none dmlすべてのDMLイベントを除外します
    insertDMLDMLイベントを挿入
    updateDMLDMLイベントの更新
    deleteDMLDMLイベントの削除
    create databaseDDLデータベースイベントの作成
    drop databaseDDLデータベースイベントの削除
    create tableDDLテーブルイベントの作成
    create indexDDLインデックスイベントの作成
    drop tableDDLドロップテーブルイベント
    truncate tableDDLテーブル切り捨てイベント
    rename tableDDLテーブル名の変更イベント
    drop indexDDLインデックス削除イベント
    alter tableDDLテーブル変更イベント
  • 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イベントをフィルタリングする

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