変更フィードログフィルター
TiCDC は、テーブルとイベントによるデータのフィルタリングをサポートしています。このドキュメントでは、2 種類のフィルターの使用方法を紹介します。
テーブルフィルター
テーブル フィルターは、次の構成を指定することで、特定のデータベースとテーブルを保持またはフィルターで除外できる機能です。
[filter]
# Filter rules
rules = ['*.*', '!test.*']
一般的なフィルター ルール:
rules = ['*.*']- すべてのテーブルをレプリケートします (システム テーブルは含まれません)。
 
rules = ['test1.*']test1データベース内のすべてのテーブルをレプリケートする
rules = ['*.*', '!scm1.tbl2']scm1.tbl2のテーブルを除くすべてのテーブルをレプリケートする
rules = ['scm1.tbl2', 'scm1.tbl3']- テーブル
scm1.tbl2とscm1.tbl3のみを複製する 
- テーブル
 rules = ['scm1.tidb_*']scm1データベース内の名前がtidb_で始まるすべてのテーブルをレプリケートします。
詳細については、 テーブルフィルターの構文を参照してください。
イベントフィルタールール
v6.2.0 以降、TiCDC はイベント フィルターをサポートします。イベント フィルター ルールを構成して、指定した条件を満たす DML イベントおよび DDL イベントをフィルターで除外できます。
以下はイベント フィルター ルールの例です。
[filter]
# The event filter rules must be under the `[filter]` configuration. You can configure multiple event filters at the same time.
[[filter.event-filters]]
matcher = ["test.worker"] # matcher is an allow list, which means this rule only applies to the worker table in the test database.
ignore-event = ["insert"] # Ignore insert events.
ignore-sql = ["^drop", "add column"] # Ignore DDLs that start with "drop" or contain "add column".
ignore-delete-value-expr = "name = 'john'" # Ignore delete DMLs that contain the condition "name = 'john'".
ignore-insert-value-expr = "id >= 100" # Ignore insert DMLs that contain the condition "id >= 100".
ignore-update-old-value-expr = "age < 18 or name = 'lili'" # Ignore update DMLs whose old value contains "age < 18" or "name = 'lili'".
ignore-update-new-value-expr = "gender = 'male' and age > 18" # Ignore update DMLs whose new value contains "gender = 'male'" and "age > 18".
設定パラメータの説明:
matcher: このイベント フィルター ルールが適用されるデータベースとテーブル。構文はテーブルフィルターと同じです。ignore-event: 無視するイベントの種類。このパラメータは文字列の配列を受け入れます。複数のイベント タイプを設定できます。現在、次のイベント タイプがサポートされています。
| イベント | タイプ | エイリアス | 説明 | 
|---|---|---|---|
| すべてのDML | すべての DML イベントに一致します | ||
| すべての ddl | すべての DDL イベントに一致します | ||
| 入れる | DML | insert DML イベントに一致します | |
| アップデート | DML | update DML イベントに一致します | |
| 消去 | DML | delete DML イベントに一致します | |
| スキーマを作成する | DDL | データベースを作成する | create database件のイベントに一致 | 
| スキーマを削除する | DDL | データベースを削除する | drop database件のイベントに一致 | 
| テーブルを作成する | DDL | create table件のイベントに一致 | |
| ドロップテーブル | DDL | drop table件のイベントに一致 | |
| テーブルの名前を変更する | DDL | rename table件のイベントに一致 | |
| テーブルを切り捨てる | DDL | truncate table件のイベントに一致 | |
| 他の机 | DDL | alter table 、 create index 、 drop indexのすべての句を含むalter tableイベントに一致します | |
| テーブルパーティションを追加する | DDL | add table partition件のイベントに一致 | |
| テーブルパーティションを削除する | DDL | drop table partition件のイベントに一致 | |
| テーブルパーティションを切り詰める | DDL | truncate table partition件のイベントに一致 | |
| ビューの作成 | DDL | create view件のイベントに一致 | |
| ドロップビュー | DDL | drop view件のイベントに一致 | 
ignore-sql: DDL ステートメントは無視されます。このパラメーターは文字列の配列を受け入れ、複数の正規表現を構成できます。このルールは DDL イベントにのみ適用されます。ignore-delete-value-expr: このパラメータは SQL 式を受け入れます。このルールは、指定された値を持つ DML イベントの削除にのみ適用されます。ignore-insert-value-expr: このパラメータは SQL 式を受け入れます。このルールは、指定された値を持つ DML イベントの挿入にのみ適用されます。ignore-update-old-value-expr: このパラメータは SQL 式を受け入れます。このルールは、古い値に指定された値が含まれる更新 DML イベントにのみ適用されます。ignore-update-new-value-expr: このパラメータは SQL 式を受け入れます。このルールは、新しい値に指定された値が含まれる更新 DML イベントにのみ適用されます。
注記:
- TiDB がクラスター化インデックスの列の値を更新するとき、TiDB は
 UPDATEイベントをDELETEイベントとINSERTイベントに分割します。 TiCDC はそのようなイベントをUPDATEイベントとして識別しないため、そのようなイベントを正しく除外できません。- SQL 式を構成するときは、
 matcherに一致するすべてのテーブルに、SQL 式で指定されたすべての列が含まれていることを確認してください。そうしないと、レプリケーション タスクを作成できません。さらに、レプリケーション中にテーブル スキーマが変更され、テーブルに必要な列が含まれなくなると、レプリケーション タスクは失敗し、自動的に再開できなくなります。このような状況では、構成を手動で変更し、タスクを再開する必要があります。