- TiDBについて
- クイックスタート
- 発展させる
- 概要
- クイックスタート
- TiDB CloudでTiDBクラスターを構築する(DevTier)
- TiDBのCRUDSQL
- TiDBを使用してシンプルなCRUDアプリを構築する
- アプリケーション例
- TiDBに接続する
- データベーススキーマの設計
- データの書き込み
- データの読み取り
- 取引
- 最適化
- トラブルシューティング
- 参照
- デプロイ
- 移行する
- 管理
- 監視と警告
- トラブルシューティング
- TiDBトラブルシューティングマップ
- 遅いクエリを特定する
- 遅いクエリを分析する
- SQL診断
- Top SQLを使用して高価なクエリを特定する
- ログを使用して高価なクエリを特定する
- ステートメント要約表
- ホットスポットの問題のトラブルシューティング
- 読み取りと書き込みの待ち時間の増加のトラブルシューティング
- クラスタのオンサイト情報を保存および復元する
- クラスタセットアップのトラブルシューティング
- 高いディスクI/O使用量のトラブルシューティング
- ロックの競合のトラブルシューティング
- TiFlashのトラブルシューティング
- 楽観的なトランザクションでの書き込みの競合のトラブルシューティング
- データとインデックス間の不整合のトラブルシューティング
- 性能チューニング
- チューニングガイド
- Configuration / コンフィグレーションの調整
- システムチューニング
- ソフトウェアのチューニング
- SQLチューニング
- チュートリアル
- TiDBツール
- 概要
- ユースケース
- ダウンロード
- TiUP
- ドキュメントマップ
- 概要
- 用語と概念
- TiUPコンポーネントを管理する
- FAQ
- トラブルシューティングガイド
- コマンドリファレンス
- 概要
- TiUPコマンド
- TiUPクラスターコマンド
- 概要
- tiup cluster audit
- tiup cluster check
- tiup cluster clean
- tiup cluster deploy
- tiup cluster destroy
- tiup cluster disable
- tiup cluster display
- tiup cluster edit-config
- tiup cluster enable
- tiup cluster help
- tiup cluster import
- tiup cluster list
- tiup cluster patch
- tiup cluster prune
- tiup cluster reload
- tiup cluster rename
- tiup cluster replay
- tiup cluster restart
- tiup cluster scale-in
- tiup cluster scale-out
- tiup cluster start
- tiup cluster stop
- tiup cluster template
- tiup cluster upgrade
- TiUPDMコマンド
- 概要
- tiup dm audit
- tiup dm deploy
- tiup dm destroy
- tiup dm disable
- tiup dm display
- tiup dm edit-config
- tiup dm enable
- tiup dm help
- tiup dm import
- tiup dm list
- tiup dm patch
- tiup dm prune
- tiup dm reload
- tiup dm replay
- tiup dm restart
- tiup dm scale-in
- tiup dm scale-out
- tiup dm start
- tiup dm stop
- tiup dm template
- tiup dm upgrade
- TiDBクラスタートポロジリファレンス
- DMクラスタートポロジリファレンス
- ミラーリファレンスガイド
- TiUPコンポーネント
- PingCAPクリニック診断サービス(テクニカルプレビュー)
- TiDB Operator
- Dumpling
- TiDB Lightning
- TiDBデータ移行
- TiDBデータ移行について
- クイックスタート
- DMクラスタをデプロイする
- チュートリアル
- 高度なチュートリアル
- シャーディングされたテーブルからのデータのマージと移行
- GH-ost/PT-oscを使用するMySQLデータベースからの移行
- より多くの列を持つダウンストリームTiDBテーブルにデータを移行する
- 管理
- 参照
- 例
- トラブルシューティング
- リリースノート
- バックアップと復元(BR)
- TiDB Binlog
- TiCDC
- Dumpling
- sync-diff-inspector
- TiSpark
- 参照
- クラスターアーキテクチャ
- 主要な監視指標
- セキュリティ
- 権限
- SQL
- SQL言語の構造と構文
- SQLステートメント
ADD COLUMN
ADD INDEX
ADMIN
ADMIN CANCEL DDL
ADMIN CHECKSUM TABLE
ADMIN CHECK [TABLE|INDEX]
ADMIN SHOW DDL [JOBS|QUERIES]
ADMIN SHOW TELEMETRY
ALTER DATABASE
ALTER INDEX
ALTER INSTANCE
ALTER PLACEMENT POLICY
ALTER TABLE
ALTER USER
ANALYZE TABLE
BACKUP
BATCH
BEGIN
CHANGE COLUMN
COMMIT
CHANGE DRAINER
CHANGE PUMP
CREATE [GLOBAL|SESSION] BINDING
CREATE DATABASE
CREATE INDEX
CREATE PLACEMENT POLICY
CREATE ROLE
CREATE SEQUENCE
CREATE TABLE LIKE
CREATE TABLE
CREATE USER
CREATE VIEW
DEALLOCATE
DELETE
DESC
DESCRIBE
DO
DROP [GLOBAL|SESSION] BINDING
DROP COLUMN
DROP DATABASE
DROP INDEX
DROP PLACEMENT POLICY
DROP ROLE
DROP SEQUENCE
DROP STATS
DROP TABLE
DROP USER
DROP VIEW
EXECUTE
EXPLAIN ANALYZE
EXPLAIN
FLASHBACK TABLE
FLUSH PRIVILEGES
FLUSH STATUS
FLUSH TABLES
GRANT <privileges>
GRANT <role>
INSERT
KILL [TIDB]
LOAD DATA
LOAD STATS
MODIFY COLUMN
PREPARE
RECOVER TABLE
RENAME INDEX
RENAME TABLE
REPLACE
RESTORE
REVOKE <privileges>
REVOKE <role>
ROLLBACK
SELECT
SET DEFAULT ROLE
SET [NAMES|CHARACTER SET]
SET PASSWORD
SET ROLE
SET TRANSACTION
SET [GLOBAL|SESSION] <variable>
SHOW ANALYZE STATUS
SHOW [BACKUPS|RESTORES]
SHOW [GLOBAL|SESSION] BINDINGS
SHOW BUILTINS
SHOW CHARACTER SET
SHOW COLLATION
SHOW [FULL] COLUMNS FROM
SHOW CONFIG
SHOW CREATE PLACEMENT POLICY
SHOW CREATE SEQUENCE
SHOW CREATE TABLE
SHOW CREATE USER
SHOW DATABASES
SHOW DRAINER STATUS
SHOW ENGINES
SHOW ERRORS
SHOW [FULL] FIELDS FROM
SHOW GRANTS
SHOW INDEX [FROM|IN]
SHOW INDEXES [FROM|IN]
SHOW KEYS [FROM|IN]
SHOW MASTER STATUS
SHOW PLACEMENT
SHOW PLACEMENT FOR
SHOW PLACEMENT LABELS
SHOW PLUGINS
SHOW PRIVILEGES
SHOW [FULL] PROCESSSLIST
SHOW PROFILES
SHOW PUMP STATUS
SHOW SCHEMAS
SHOW STATS_HEALTHY
SHOW STATS_HISTOGRAMS
SHOW STATS_META
SHOW STATUS
SHOW TABLE NEXT_ROW_ID
SHOW TABLE REGIONS
SHOW TABLE STATUS
SHOW [FULL] TABLES
SHOW [GLOBAL|SESSION] VARIABLES
SHOW WARNINGS
SHUTDOWN
SPLIT REGION
START TRANSACTION
TABLE
TRACE
TRUNCATE
UPDATE
USE
WITH
- データ型
- 関数と演算子
- クラスター化インデックス
- 制約
- 生成された列
- SQLモード
- テーブル属性
- トランザクション
- ガベージコレクション(GC)
- ビュー
- パーティショニング
- 一時テーブル
- キャッシュされたテーブル
- 文字セットと照合
- SQLの配置ルール
- システムテーブル
mysql
- INFORMATION_SCHEMA
- 概要
ANALYZE_STATUS
CLIENT_ERRORS_SUMMARY_BY_HOST
CLIENT_ERRORS_SUMMARY_BY_USER
CLIENT_ERRORS_SUMMARY_GLOBAL
CHARACTER_SETS
CLUSTER_CONFIG
CLUSTER_HARDWARE
CLUSTER_INFO
CLUSTER_LOAD
CLUSTER_LOG
CLUSTER_SYSTEMINFO
COLLATIONS
COLLATION_CHARACTER_SET_APPLICABILITY
COLUMNS
DATA_LOCK_WAITS
DDL_JOBS
DEADLOCKS
ENGINES
INSPECTION_RESULT
INSPECTION_RULES
INSPECTION_SUMMARY
KEY_COLUMN_USAGE
METRICS_SUMMARY
METRICS_TABLES
PARTITIONS
PLACEMENT_POLICIES
PROCESSLIST
REFERENTIAL_CONSTRAINTS
SCHEMATA
SEQUENCES
SESSION_VARIABLES
SLOW_QUERY
STATISTICS
TABLES
TABLE_CONSTRAINTS
TABLE_STORAGE_STATS
TIDB_HOT_REGIONS
TIDB_HOT_REGIONS_HISTORY
TIDB_INDEXES
TIDB_SERVERS_INFO
TIDB_TRX
TIFLASH_REPLICA
TIKV_REGION_PEERS
TIKV_REGION_STATUS
TIKV_STORE_STATUS
USER_PRIVILEGES
VIEWS
METRICS_SCHEMA
- UI
- TiDBダッシュボード
- 概要
- 管理
- アクセス
- 概要ページ
- クラスター情報ページ
- Top SQLページ
- キービジュアライザーページ
- メトリクス関係グラフ
- SQLステートメント分析
- 遅いクエリページ
- クラスター診断
- 検索ログページ
- インスタンスプロファイリング
- セッションの管理とConfiguration / コンフィグレーション
- FAQ
- CLI
- コマンドラインフラグ
- Configuration / コンフィグレーションファイルのパラメーター
- システム変数
- ストレージエンジン
- テレメトリー
- エラーコード
- テーブルフィルター
- トポロジラベルによるレプリカのスケジュール
- よくある質問
- リリースノート
- すべてのリリース
- リリースタイムライン
- TiDBバージョニング
- v6.1
- v6.0
- v5.4
- v5.3
- v5.2
- v5.1
- v5.0
- v4.0
- v3.1
- v3.0
- v2.1
- v2.0
- v1.0
- 用語集
SQL式を使用してDMLイベントをフィルタリングする
このドキュメントでは、DMを使用して継続的な増分データレプリケーションを実行するときに、SQL式を使用してbinlogイベントをフィルタリングする方法を紹介します。複製手順の詳細については、次のドキュメントを参照してください。
- 小さなデータセットのMySQLをTiDBに移行する
- 大規模なデータセットのMySQLをTiDBに移行する
- 小さなデータセットのMySQLシャードをTiDBに移行およびマージする
- 大規模なデータセットのMySQLシャードをTiDBに移行およびマージする
インクリメンタルデータレプリケーションを実行する場合、 Binlogイベントフィルターを使用して特定のタイプのbinlogイベントをフィルタリングできます。たとえば、アーカイブや監査などの目的で、 DELETE
のイベントをダウンストリームに複製しないように選択できます。ただし、Binlog Event Filterは、より細かい粒度が必要な行のDELETE
イベントをフィルタリングするかどうかを決定できません。
この問題に対処するために、v2.0.5以降、DMはデータのフィルタリングにインクリメンタルデータレプリケーションでbinlog value filter
を使用することをサポートしています。 DMでサポートされているROW
形式のbinlogの中で、binlogイベントはすべての列の値を保持し、これらの値に基づいてSQL式を構成できます。式が行の変更をTRUE
として計算する場合、DMはこの行の変更をダウンストリームに複製しません。
Binlogイベントフィルターと同様に、タスク構成ファイルでbinlog value filter
を構成する必要があります。詳細については、以下の設定例を参照してください。高度なタスクの構成と説明については、 DM高度なタスク構成ファイルを参照してください。
name: test
task-mode: all
mysql-instances:
- source-id: "mysql-replica-01"
expression-filters: ["even_c"]
expression-filter:
even_c:
schema: "expr_filter"
table: "tbl"
insert-value-expr: "c % 2 = 0"
上記の構成例では、 even_c
ルールが構成され、データソースmysql-replica-01
によって参照されます。この規則によれば、 expr_filter
スキーマのtb1
テーブルの場合、偶数がc
列( c % 2 = 0
)に挿入されると、このinsert
ステートメントはダウンストリームに複製されません。次の例は、このルールの効果を示しています。
次のデータをアップストリームデータソースに段階的に挿入します。
INSERT INTO tbl(id, c) VALUES (1, 1), (2, 2), (3, 3), (4, 4);
次に、ダウンストリームのtb1
のテーブルをクエリします。 c
の奇数の行のみが複製されていることがわかります。
MySQL [test]> select * from tbl;
+------+------+
| id | c |
+------+------+
| 1 | 1 |
| 3 | 3 |
+------+------+
2 rows in set (0.001 sec)
Configuration / コンフィグレーションパラメーターと説明
schema
:一致するアップストリームスキーマの名前。ワイルドカードマッチングまたは通常のマッチングはサポートされていません。table
:照合するアップストリームテーブルの名前。ワイルドカードマッチングまたは通常のマッチングはサポートされていません。insert-value-expr
:INSERT
のタイプのbinlogイベント(WRITE_ROWS_EVENT)によって運ばれる値に影響を与える式を構成します。この式を同じ構成delete-value-expr
でupdate-old-value-expr
、またはupdate-new-value-expr
と一緒に使用することはできません。update-old-value-expr
:UPDATE
のタイプのbinlogイベント(UPDATE_ROWS_EVENT)によって運ばれる古い値を有効にする式を構成します。この式を同じ構成項目でinsert-value-expr
またはdelete-value-expr
と一緒に使用することはできません。update-new-value-expr
:UPDATE
のタイプのbinlogイベント(UPDATE_ROWS_EVENT)によって運ばれる新しい値に影響を与える式を構成します。この式を同じ構成項目でinsert-value-expr
またはdelete-value-expr
と一緒に使用することはできません。delete-value-expr
:DELETE
のタイプのbinlogイベント(DELETE_ROWS_EVENT)によって運ばれる値に影響を与える式を構成します。この式をinsert-value-expr
、またはupdate-old-value-expr
と一緒に使用することはできませupdate-new-value-expr
。
ノート:
update-old-value-expr
とupdate-new-value-expr
を一緒に構成できます。update-old-value-expr
とupdate-new-value-expr
が一緒に構成されている場合、「更新+古い値」がupdate-old-value-expr
に一致し、「更新+新しい値」がupdate-new-value-expr
に一致する行がフィルター処理されます。update-old-value-expr
とupdate-new-value-expr
のいずれかが構成されている場合、構成された式は、行の変更全体をフィルター処理するかどうかを決定します。つまり、古い値の削除と新しい値の挿入が全体としてフィルター処理されます。
SQL式は、1つの列または複数の列で使用できます。 c % 2 = 0
などのa*a + b*b = c*c
でサポートされているSQL関数を使用することもできts > NOW()
。
TIMESTAMP
のデフォルトのタイムゾーンは、タスク構成ファイルで指定されたタイムゾーンです。デフォルト値は、ダウンストリームのタイムゾーンです。 c_timestamp = '2021-01-01 12:34:56.5678+08:00'
のようにタイムゾーンを明示的に指定できます。
expression-filter
の構成項目で複数のフィルタリングルールを構成できます。アップストリームデータソースは、 expression-filters
の必要なルールを参照して、それを有効にします。複数のルールが使用されている場合、いずれかのルールが一致すると、行の変更全体がフィルタリングされます。
ノート:
構成する式フィルタリングルールが多すぎると、DMの計算オーバーヘッドが増加し、データレプリケーションの速度が低下します。