TiCDC OpenAPI v2
TiCDC は、TiCDC クラスターのクエリと操作のための OpenAPI 機能を提供します。 OpenAPI 機能はcdc cli
ツールのサブセットです。
注記:
TiCDC OpenAPI v1 は将来削除される予定です。 TiCDC OpenAPI v2 を使用することをお勧めします。
API を使用して、TiCDC クラスター上で次のメンテナンス操作を実行できます。
- TiCDC ノードのステータス情報を取得する
- TiCDC クラスターの健全性ステータスを確認する
- レプリケーションタスクを作成する
- レプリケーションタスクを削除する
- レプリケーション構成を更新する
- レプリケーションタスクリストのクエリ
- 特定のレプリケーションタスクをクエリする
- レプリケーションタスクを一時停止する
- レプリケーションタスクを再開する
- レプリケーションサブタスクリストのクエリ
- 特定のレプリケーションサブタスクをクエリする
- TiCDC サービス プロセス リストのクエリ
- 所有者ノードを削除する
- TiCDCサーバーのログ レベルを動的に調整する
すべての API のリクエスト本文と戻り値は JSON 形式です。リクエストが成功すると、 200 OK
メッセージが返されます。次のセクションでは、API の具体的な使用法について説明します。
次の例では、TiCDCサーバーのリスニング IP アドレスは127.0.0.1
、ポートは8300
です。 TiCDCサーバーを起動するときに、 --addr=ip:port
介して TiCDC にバインドされる IP アドレスとポートを指定できます。
APIエラーメッセージテンプレート
API リクエストの送信後にエラーが発生した場合、返されるエラー メッセージの形式は次のとおりです。
{
"error_msg": "",
"error_code": ""
}
上記の JSON 出力では、 error_msg
エラー メッセージを示し、 error_code
は対応するエラー コードを示します。
APIリストインターフェースの戻り形式
API リクエストがリソースのリスト (たとえば、すべてCaptures
のリスト) を返す場合、TiCDC の戻り形式は次のとおりです。
{
"total": 2,
"items": [
{
"id": "d2912e63-3349-447c-90ba-wwww",
"is_owner": true,
"address": "127.0.0.1:8300"
},
{
"id": "d2912e63-3349-447c-90ba-xxxx",
"is_owner": false,
"address": "127.0.0.1:8302"
}
]
}
上の例では:
total
: リソースの総数を示します。items
: このリクエストによって返されたすべてのリソースを含む配列。配列のすべての要素は同じリソースに属します。
TiCDC ノードのステータス情報を取得する
この API は同期インターフェイスです。リクエストが成功すると、該当ノードのステータス情報が返されます。
リクエストURI
GET /api/v2/status
例
次のリクエストは、IP アドレスが127.0.0.1
でポート番号が8300
TiCDC ノードのステータス情報を取得します。
curl -X GET http://127.0.0.1:8300/api/v2/status
{
"version": "v7.5.1",
"git_hash": "10413bded1bdb2850aa6d7b94eb375102e9c44dc",
"id": "d2912e63-3349-447c-90ba-72a4e04b5e9e",
"pid": 1447,
"is_owner": true,
"liveness": 0
}
上記の出力のパラメータは次のように説明されます。
version
: TiCDC の現在のバージョン番号。git_hash
: Git ハッシュ値。id
: ノードのキャプチャ ID。pid
: ノードのキャプチャ プロセス ID (PID)。is_owner
: ノードが所有者であるかどうかを示します。liveness
: このノードがライブであるかどうか。0
通常を意味します。1
ノードがgraceful shutdown
状態にあることを意味します。
TiCDC クラスターの健全性ステータスを確認する
この API は同期インターフェイスです。クラスターが正常な場合は200 OK
が返されます。
リクエストURI
GET /api/v2/health
例
curl -X GET http://127.0.0.1:8300/api/v2/health
クラスターが正常な場合、応答は200 OK
で空の JSON オブジェクトになります。
{}
クラスターが正常でない場合、応答はエラー メッセージを含む JSON オブジェクトです。
レプリケーションタスクを作成する
このインターフェイスは、レプリケーション タスクを TiCDC に送信するために使用されます。リクエストが成功すると200 OK
が返されます。返された結果は、サーバーがコマンドの実行に同意したことを意味するだけで、コマンドが正常に実行されることを保証するものではありません。
リクエストURI
POST /api/v2/changefeeds
パラメータの説明
{
"changefeed_id": "string",
"replica_config": {
"bdr_mode": true,
"case_sensitive": false,
"check_gc_safe_point": true,
"consistent": {
"flush_interval": 0,
"level": "string",
"max_log_size": 0,
"storage": "string"
},
"enable_old_value": true,
"enable_sync_point": true,
"filter": {
"do_dbs": [
"string"
],
"do_tables": [
{
"database_name": "string",
"table_name": "string"
}
],
"event_filters": [
{
"ignore_delete_value_expr": "string",
"ignore_event": [
"string"
],
"ignore_insert_value_expr": "string",
"ignore_sql": [
"string"
],
"ignore_update_new_value_expr": "string",
"ignore_update_old_value_expr": "string",
"matcher": [
"string"
]
}
],
"ignore_dbs": [
"string"
],
"ignore_tables": [
{
"database_name": "string",
"table_name": "string"
}
],
"ignore_txn_start_ts": [
0
],
"rules": [
"string"
]
},
"force_replicate": true,
"ignore_ineligible_table": true,
"memory_quota": 0,
"mounter": {
"worker_num": 0
},
"sink": {
"column_selectors": [
{
"columns": [
"string"
],
"matcher": [
"string"
]
}
],
"csv": {
"delimiter": "string",
"include_commit_ts": true,
"null": "string",
"quote": "string"
},
"date_separator": "string",
"dispatchers": [
{
"matcher": [
"string"
],
"partition": "string",
"topic": "string"
}
],
"enable_partition_separator": true,
"encoder_concurrency": 0,
"protocol": "string",
"schema_registry": "string",
"terminator": "string",
"transaction_atomicity": "string"
},
"sync_point_interval": "string",
"sync_point_retention": "string"
},
"sink_uri": "string",
"start_ts": 0,
"target_ts": 0
}
パラメータは次のように説明されます。
パラメータ名 | 説明 |
---|---|
changefeed_id | STRING タイプ。レプリケーションタスクのID。 (オプション) |
replica_config | レプリケーションタスクのコンフィグレーションパラメータ。 (オプション) |
sink_uri | STRING タイプ。レプリケーションタスクの下流アドレス。 (必須) |
start_ts | UINT64 タイプ。変更フィードの開始 TSO を指定します。 TiCDC クラスターは、この TSO からのデータのプルを開始します。デフォルト値は現在時刻です。 (オプション) |
target_ts | UINT64 タイプ。変更フィードのターゲット TSO を指定します。 TiCDC クラスターは、この TSO に到達するとデータのプルを停止します。デフォルト値は空です。これは、TiCDC が自動的に停止しないことを意味します。 (オプション) |
changefeed_id
、 start_ts
、 target_ts
、 sink_uri
の意味と形式は、ドキュメントcdc cli
を使用してレプリケーション タスクを作成するに記載されているものと同じです。これらのパラメータの詳細については、そのドキュメントを参照してください。 sink_uri
で証明書のパスを指定する場合は、対応する証明書を対応する TiCDCサーバーにアップロードしていることを確認してください。
replica_config
パラメータの説明は次のとおりです。
パラメータ名 | 説明 |
---|---|
bdr_mode | BOOLEAN タイプ。 双方向レプリケーションを有効にするかどうかを決定します。デフォルト値はfalse です。 (オプション) |
case_sensitive | BOOLEAN タイプ。テーブル名をフィルタリングするときに大文字と小文字を区別するかどうかを決定します。 v7.5.0 以降、デフォルト値はtrue からfalse に変更されます。 (オプション) |
check_gc_safe_point | BOOLEAN タイプ。レプリケーション タスクの開始時刻が GC 時刻よりも前であることを確認するかどうかを決定します。デフォルト値はtrue です。 (オプション) |
consistent | REDO ログの構成パラメータ。 (オプション) |
enable_sync_point | BOOLEAN タイプ。 sync point を有効にするかどうかを決定します。 (オプション) |
filter | filter の構成パラメータ。 (オプション) |
force_replicate | BOOLEAN タイプ。デフォルト値はfalse です。これをtrue に設定すると、レプリケーション タスクは一意のインデックスのないテーブルを強制的にレプリケートします。 (オプション) |
ignore_ineligible_table | BOOLEAN タイプ。デフォルト値はfalse です。これをtrue に設定すると、レプリケーション タスクはレプリケートできないテーブルを無視します。 (オプション) |
memory_quota | UINT64 タイプ。レプリケーション タスクのメモリクォータ。 (オプション) |
mounter | mounter の構成パラメータ。 (オプション) |
sink | sink の構成パラメータ。 (オプション) |
sync_point_interval | STRING タイプ。戻り値はUINT64 種類のナノ秒単位の時間であることに注意してください。 sync point 機能が有効な場合、このパラメータは、Syncpoint がアップストリームとダウンストリームのスナップショットを調整する間隔を指定します。デフォルト値は10m で、最小値は30s です。 (オプション) |
sync_point_retention | STRING タイプ。戻り値はUINT64 種類のナノ秒単位の時間であることに注意してください。 sync point 機能が有効な場合、このパラメータは、同期ポイントによってダウンストリーム テーブルにデータが保持される期間を指定します。この期間を超えると、データはクリーンアップされます。デフォルト値は24h です。 (オプション) |
consistent
パラメータは次のように説明されます。
パラメータ名 | 説明 |
---|---|
flush_interval | UINT64 タイプ。 REDO ログ ファイルをフラッシュする間隔。 (オプション) |
level | STRING タイプ。レプリケートされたデータの整合性レベル。 (オプション) |
max_log_size | UINT64 タイプ。 REDOログの最大値。 (オプション) |
storage | STRING タイプ。storageの宛先アドレス。 (オプション) |
use_file_backend | BOOL タイプ。 REDO ログをローカル ファイルに保存するかどうかを指定します。 (オプション) |
encoding_worker_num | INT タイプ。 REDO モジュール内のエンコードおよびデコード ワーカーの数。 (オプション) |
flush_worker_num | INT タイプ。 REDO モジュール内のフラッシュ ワーカーの数。 (オプション) |
compression | STRING タイプ。 REDO ログ ファイルを圧縮する動作。利用可能なオプションは"" と"lz4" です。デフォルト値は"" で、圧縮しないことを意味します。 (オプション) |
flush_concurrency | INT タイプ。単一ファイルをアップロードする際の同時実行数。デフォルト値は1 で、同時実行が無効であることを意味します。 (オプション) |
filter
パラメータは次のように説明されます。
パラメータ名 | 説明 |
---|---|
do_dbs | STRING ARRAY タイプ。レプリケートされるデータベース。 (オプション) |
do_tables | レプリケートされるテーブル。 (オプション) |
ignore_dbs | STRING ARRAY タイプ。無視されるデータベース。 (オプション) |
ignore_tables | 無視されるテーブル。 (オプション) |
event_filters | イベントをフィルタリングするための構成。 (オプション) |
ignore_txn_start_ts | UINT64 ARRAY タイプ。これを指定すると、 [1, 2] などのstart_ts を指定したトランザクションは無視されます。 (オプション) |
rules | STRING ARRAY タイプ。テーブル スキーマ フィルタリングのルール ( ['foo*.*', 'bar*.*'] など)。詳細については、 テーブルフィルターを参照してください。 (オプション) |
filter.event_filters
パラメータは次のように説明されます。詳細については、 変更フィードログフィルターを参照してください。
パラメータ名 | 説明 |
---|---|
ignore_delete_value_expr | STRING ARRAY タイプ。たとえば、 "name = 'john'" 、 name = 'john' 条件を含む DELETE DML ステートメントをフィルターで除外することを意味します。 (オプション) |
ignore_event | STRING ARRAY タイプ。たとえば、 ["insert"] INSERT イベントがフィルターで除外されることを示します。 (オプション) |
ignore_insert_value_expr | STRING ARRAY タイプ。たとえば、 "id >= 100" 、条件id >= 100 に一致する INSERT DML ステートメントを除外することを意味します。 (オプション) |
ignore_sql | STRING ARRAY タイプ。たとえば、 ["^drop", "add column"] 、 DROP で始まるか、 ADD COLUMN を含む DDL ステートメントをフィルタリングして除外することを意味します。 (オプション) |
ignore_update_new_value_expr | STRING ARRAY タイプ。たとえば、 "gender = 'male'" 、新しい値gender = 'male' を持つ UPDATE DML ステートメントをフィルターで除外することを意味します。 (オプション) |
ignore_update_old_value_expr | STRING ARRAY タイプ。たとえば、 "age < 18" 、古い値age < 18 を持つ UPDATE DML ステートメントをフィルタリングして除外することを意味します。 (オプション) |
matcher | STRING ARRAY タイプ。ホワイトリストとして機能します。たとえば、 ["test.worker"] 、フィルタ ルールがtest データベース内のworker テーブルにのみ適用されることを意味します。 (オプション) |
mounter
パラメータは次のように説明されます。
パラメータ名 | 説明 |
---|---|
worker_num | INT タイプ。マウンタのスレッド数。マウンタは、TiKV から出力されたデータをデコードするために使用されます。デフォルト値は16 です。 (オプション) |
sink
パラメータは次のように説明されます。
パラメータ名 | 説明 |
---|---|
column_selectors | 列セレクターの構成。 (オプション) |
csv | CSV 構成。 (オプション) |
date_separator | STRING タイプ。ファイルディレクトリの日付区切り文字のタイプを示します。値のオプションはnone 、 year 、 month 、およびday です。 none はデフォルト値で、日付が区切られていないことを意味します。 (オプション) |
dispatchers | イベントディスパッチ用の構成配列。 (オプション) |
encoder_concurrency | INT タイプ。 MQ シンク内のエンコーダー スレッドの数。デフォルト値は16 です。 (オプション) |
protocol | STRING タイプ。 MQ シンクの場合、メッセージのプロトコル形式を指定できます。現在、プロトコルcanal-json 、 open-protocol 、 avro 、およびmaxwell がサポートされています。 |
schema_registry | STRING タイプ。スキーマ レジストリ アドレス。 (オプション) |
terminator | STRING タイプ。ターミネータは、2 つのデータ変更イベントを区切るために使用されます。デフォルト値は null です。これは、 "\r\n" がターミネータとして使用されることを意味します。 (オプション) |
transaction_atomicity | STRING タイプ。トランザクションのアトミックレベル。 (オプション) |
only_output_updated_columns | BOOLEAN タイプ。 canal-json またはopen-protocol プロトコルを使用する MQ シンクの場合、変更された列のみを出力するかどうかを指定できます。デフォルト値はfalse です。 (オプション) |
cloud_storage_config | storageシンクの構成。 (オプション) |
sink.column_selectors
は配列です。パラメータは次のように説明されます。
パラメータ名 | 説明 |
---|---|
columns | STRING ARRAY タイプ。列配列。 |
matcher | STRING ARRAY タイプ。マッチャーの構成。フィルター ルールと同じ一致構文を持ちます。 |
sink.csv
パラメータは次のように説明されます。
パラメータ名 | 説明 |
---|---|
delimiter | STRING タイプ。 CSV ファイル内のフィールドを区切るために使用される文字。値は ASCII 文字である必要があり、デフォルトは, です。 |
include_commit_ts | BOOLEAN タイプ。 CSV 行に commit-t を含めるかどうか。デフォルト値はfalse です。 |
null | STRING タイプ。 CSV 列が null の場合に表示される文字。デフォルト値は\N です。 |
quote | STRING タイプ。 CSV ファイル内のフィールドを囲むために使用される引用符。値が空の場合、引用符は使用されません。デフォルト値は" です。 |
binary_encoding_method | STRING タイプ。バイナリ データのエンコード方式。 "base64" または"hex" です。デフォルト値は"base64" です。 |
sink.dispatchers
: MQ タイプのシンクの場合、このパラメーターを使用してイベント ディスパッチャーを構成できます。次のディスパッチャーがサポートされています: default
、 ts
、 rowid
、およびtable
。ディスパッチャのルールは次のとおりです。
default
:table
モードでイベントをディスパッチします。ts
: 行変更の commitT を使用してハッシュ値を作成し、イベントをディスパッチします。rowid
: 選択した HandleKey 列の名前と値を使用して、ハッシュ値を作成し、イベントをディスパッチします。table
: テーブルのスキーマ名とテーブル名を使用してハッシュ値を作成し、イベントをディスパッチします。
sink.dispatchers
は配列です。パラメータは次のように説明されます。
パラメータ名 | 説明 |
---|---|
matcher | STRING ARRAY タイプ。フィルター ルールと同じ一致構文を持ちます。 |
partition | STRING タイプ。イベントをディスパッチするためのターゲット パーティション。 |
topic | STRING タイプ。イベントをディスパッチする対象のトピック。 |
sink.cloud_storage_config
パラメータは次のように説明されます。
パラメータ名 | 説明 |
---|---|
worker_count | INT タイプ。データをダウンストリームのクラウドstorageに保存するための同時実行性が変わります。 |
flush_interval | STRING タイプ。ダウンストリームのクラウドstorageにデータを保存する間隔が変わります。 |
file_size | INT タイプ。データ変更ファイルのバイト数がこのパラメータの値を超えると、データ変更ファイルがクラウドstorageに保存されます。 |
file_expiration_days | INT タイプ。ファイルを保持する期間。 date-separator がday として構成されている場合にのみ有効になります。 |
file_cleanup_cron_spec | STRING タイプ。スケジュールされたクリーンアップ タスクの実行サイクル。crontab 構成と互換性があり、形式は<Second> <Minute> <Hour> <Day of the month> <Month> <Day of the week (Optional)> です。 |
flush_concurrency | INT タイプ。単一ファイルをアップロードする際の同時実行数。 |
例
次のリクエストは、ID がtest5
およびsink_uri
blackhome://
レプリケーション タスクを作成します。
curl -X POST -H "'Content-type':'application/json'" http://127.0.0.1:8300/api/v2/changefeeds -d '{"changefeed_id":"test5","sink_uri":"blackhole://"}'
リクエストが成功すると200 OK
が返されます。リクエストが失敗した場合は、エラー メッセージとエラー コードが返されます。
レスポンスボディの形式
{
"admin_job_type": 0,
"checkpoint_time": "string",
"checkpoint_ts": 0,
"config": {
"bdr_mode": true,
"case_sensitive": false,
"check_gc_safe_point": true,
"consistent": {
"flush_interval": 0,
"level": "string",
"max_log_size": 0,
"storage": "string"
},
"enable_old_value": true,
"enable_sync_point": true,
"filter": {
"do_dbs": [
"string"
],
"do_tables": [
{
"database_name": "string",
"table_name": "string"
}
],
"event_filters": [
{
"ignore_delete_value_expr": "string",
"ignore_event": [
"string"
],
"ignore_insert_value_expr": "string",
"ignore_sql": [
"string"
],
"ignore_update_new_value_expr": "string",
"ignore_update_old_value_expr": "string",
"matcher": [
"string"
]
}
],
"ignore_dbs": [
"string"
],
"ignore_tables": [
{
"database_name": "string",
"table_name": "string"
}
],
"ignore_txn_start_ts": [
0
],
"rules": [
"string"
]
},
"force_replicate": true,
"ignore_ineligible_table": true,
"memory_quota": 0,
"mounter": {
"worker_num": 0
},
"sink": {
"column_selectors": [
{
"columns": [
"string"
],
"matcher": [
"string"
]
}
],
"csv": {
"delimiter": "string",
"include_commit_ts": true,
"null": "string",
"quote": "string"
},
"date_separator": "string",
"dispatchers": [
{
"matcher": [
"string"
],
"partition": "string",
"topic": "string"
}
],
"enable_partition_separator": true,
"encoder_concurrency": 0,
"protocol": "string",
"schema_registry": "string",
"terminator": "string",
"transaction_atomicity": "string"
},
"sync_point_interval": "string",
"sync_point_retention": "string"
},
"create_time": "string",
"creator_version": "string",
"error": {
"addr": "string",
"code": "string",
"message": "string"
},
"id": "string",
"resolved_ts": 0,
"sink_uri": "string",
"start_ts": 0,
"state": "string",
"target_ts": 0,
"task_status": [
{
"capture_id": "string",
"table_ids": [
0
]
}
]
}
パラメータは次のように説明されます。
パラメータ名 | 説明 |
---|---|
admin_job_type | INTEGER タイプ。管理者のジョブタイプ。 |
checkpoint_time | STRING タイプ。レプリケーション タスクの現在のチェックポイントの形式化された時刻。 |
checkpoint_ts | STRING タイプ。レプリケーション タスクの現在のチェックポイントの TSO。 |
config | レプリケーションタスクの構成。構造と意味はレプリケーションタスク作成時の構成replica_config と同じです。 |
create_time | STRING タイプ。レプリケーションタスクが作成された時刻。 |
creator_version | STRING タイプ。レプリケーション タスクが作成されたときの TiCDC バージョン。 |
error | レプリケーションタスクのエラー。 |
id | STRING タイプ。レプリケーションタスクID。 |
resolved_ts | UINT64 タイプ。レプリケーション タスクにより ts が解決されました。 |
sink_uri | STRING タイプ。レプリケーション タスクのシンク URI。 |
start_ts | UINT64 タイプ。レプリケーション タスクが ts を開始します。 |
state | STRING タイプ。レプリケーションタスクのステータス。 normal 、またはfinished failed stopped error なります。 |
target_ts | UINT64 タイプ。レプリケーションタスクのターゲット ts。 |
task_status | レプリケーションタスクのディスパッチの詳細なステータス。 |
task_status
パラメータは次のように説明されます。
パラメータ名 | 説明 |
---|---|
capture_id | STRING タイプ。キャプチャID。 |
table_ids | UINT64 ARRAY タイプ。このキャプチャでレプリケートされるテーブルの ID。 |
error
パラメータは次のように記述されます。
パラメータ名 | 説明 |
---|---|
addr | STRING タイプ。キャプチャアドレス。 |
code | STRING タイプ。エラーコード。 |
message | STRING タイプ。エラーの詳細。 |
レプリケーションタスクを削除する
この API は、レプリケーション タスクを削除するための冪等インターフェイス (つまり、最初の適用を超えて結果を変更することなく複数回適用できます) です。リクエストが成功すると200 OK
が返されます。返された結果は、サーバーがコマンドの実行に同意したことを意味するだけで、コマンドが正常に実行されることを保証するものではありません。
リクエストURI
DELETE /api/v2/changefeeds/{changefeed_id}
パラメータの説明
パスパラメータ
パラメータ名 | 説明 |
---|---|
changefeed_id | 削除するレプリケーション タスク (変更フィード) の ID。 |
例
次のリクエストは、ID test1
のレプリケーション タスクを削除します。
curl -X DELETE http://127.0.0.1:8300/api/v2/changefeeds/test1
リクエストが成功すると200 OK
が返されます。リクエストが失敗した場合は、エラー メッセージとエラー コードが返されます。
レプリケーション構成を更新する
この API は、レプリケーション タスクを更新するために使用されます。リクエストが成功すると200 OK
が返されます。返された結果は、サーバーがコマンドの実行に同意したことを意味するだけで、コマンドが正常に実行されることを保証するものではありません。
チェンジフィード構成を変更するには、 pause the replication task -> modify the configuration -> resume the replication task
の手順に従います。
リクエストURI
PUT /api/v2/changefeeds/{changefeed_id}
パラメータの説明
パスパラメータ
パラメータ名 | 説明 |
---|---|
changefeed_id | 更新するレプリケーション タスク (変更フィード) の ID。 |
リクエストボディのパラメータ
{
"replica_config": {
"bdr_mode": true,
"case_sensitive": false,
"check_gc_safe_point": true,
"consistent": {
"flush_interval": 0,
"level": "string",
"max_log_size": 0,
"storage": "string"
},
"enable_old_value": true,
"enable_sync_point": true,
"filter": {
"do_dbs": [
"string"
],
"do_tables": [
{
"database_name": "string",
"table_name": "string"
}
],
"event_filters": [
{
"ignore_delete_value_expr": "string",
"ignore_event": [
"string"
],
"ignore_insert_value_expr": "string",
"ignore_sql": [
"string"
],
"ignore_update_new_value_expr": "string",
"ignore_update_old_value_expr": "string",
"matcher": [
"string"
]
}
],
"ignore_dbs": [
"string"
],
"ignore_tables": [
{
"database_name": "string",
"table_name": "string"
}
],
"ignore_txn_start_ts": [
0
],
"rules": [
"string"
]
},
"force_replicate": true,
"ignore_ineligible_table": true,
"memory_quota": 0,
"mounter": {
"worker_num": 0
},
"sink": {
"column_selectors": [
{
"columns": [
"string"
],
"matcher": [
"string"
]
}
],
"csv": {
"delimiter": "string",
"include_commit_ts": true,
"null": "string",
"quote": "string"
},
"date_separator": "string",
"dispatchers": [
{
"matcher": [
"string"
],
"partition": "string",
"topic": "string"
}
],
"enable_partition_separator": true,
"encoder_concurrency": 0,
"protocol": "string",
"schema_registry": "string",
"terminator": "string",
"transaction_atomicity": "string"
},
"sync_point_interval": "string",
"sync_point_retention": "string"
},
"sink_uri": "string",
"target_ts": 0
}
現在、API 経由で変更できるのは次の構成のみです。
パラメータ名 | 説明 |
---|---|
target_ts | UINT64 タイプ。変更フィードのターゲット TSO を指定します。 (オプション) |
sink_uri | STRING タイプ。レプリケーションタスクの下流アドレス。 (オプション) |
replica_config | シンクの構成パラメータ。それは完全でなければなりません。 (オプション) |
上記パラメータの意味はレプリケーションタスクを作成する項と同様です。詳細については、そのセクションを参照してください。
例
次のリクエストは、ID がtest1
レプリケーション タスクのtarget_ts
を32
に更新します。
curl -X PUT -H "'Content-type':'application/json'" http://127.0.0.1:8300/api/v2/changefeeds/test1 -d '{"target_ts":32}'
リクエストが成功すると200 OK
が返されます。リクエストが失敗した場合は、エラー メッセージとエラー コードが返されます。 JSON レスポンスボディの意味はレプリケーションタスクを作成するセクションと同じです。詳細については、そのセクションを参照してください。
レプリケーションタスクリストのクエリ
この API は同期インターフェイスです。リクエストが成功すると、TiCDC クラスター内のすべてのレプリケーション タスク (変更フィード) の基本情報が返されます。
リクエストURI
GET /api/v2/changefeeds
パラメータの説明
クエリパラメータ
パラメータ名 | 説明 |
---|---|
state | このパラメータを指定すると、その指定された状態のレプリケーションタスクの情報が返されます。 (オプション) |
state
の値のオプションはall
、 normal
、 stopped
、 error
、 failed
、およびfinished
です。
このパラメータが指定されていない場合、デフォルトでは、 normal
、 stopped
、またはfailed
状態のレプリケーション タスクの基本情報が返されます。
例
次のリクエストは、 normal
状態のすべてのレプリケーション タスクの基本情報をクエリします。
curl -X GET http://127.0.0.1:8300/api/v2/changefeeds?state=normal
{
"total": 2,
"items": [
{
"id": "test",
"state": "normal",
"checkpoint_tso": 439749918821711874,
"checkpoint_time": "2023-02-27 23:46:52.888",
"error": null
},
{
"id": "test2",
"state": "normal",
"checkpoint_tso": 439749918821711874,
"checkpoint_time": "2023-02-27 23:46:52.888",
"error": null
}
]
}
上記で返された結果のパラメータは次のように説明されます。
id
: レプリケーション タスクの ID。state
: レプリケーションタスクの現在の州 。checkpoint_tso
: レプリケーション タスクの現在のチェックポイントの TSO。checkpoint_time
: レプリケーション タスクの現在のチェックポイントのフォーマットされた時刻。error
: レプリケーションタスクのエラー情報。
特定のレプリケーションタスクをクエリする
この API は同期インターフェイスです。リクエストが成功すると、指定したレプリケーションタスクの詳細情報(変更フィード)が返されます。
リクエストURI
GET /api/v2/changefeeds/{changefeed_id}
パラメータの説明
パスパラメータ
パラメータ名 | 説明 |
---|---|
changefeed_id | クエリ対象のレプリケーション タスク (変更フィード) の ID。 |
例
次のリクエストは、ID test1
のレプリケーション タスクの詳細情報をクエリします。
curl -X GET http://127.0.0.1:8300/api/v2/changefeeds/test1
JSON レスポンスボディの意味はレプリケーションタスクを作成するセクションと同じです。詳細については、そのセクションを参照してください。
特定のレプリケーションタスクが完了したかどうかをクエリします
この API は同期インターフェイスです。リクエストが成功すると、タスクが完了したかどうかや追加の詳細を含む、指定されたレプリケーション タスク (変更フィード) の同期ステータスが返されます。
リクエストURI
GET /api/v2/changefeed/{changefeed_id}/synced
パラメータの説明
パスパラメータ
パラメータ名 | 説明 |
---|---|
changefeed_id | クエリ対象のレプリケーション タスク (変更フィード) の ID。 |
例
次のリクエストは、ID test1
のレプリケーション タスクの同期ステータスをクエリします。
curl -X GET http://127.0.0.1:8300/api/v2/changefeed/test1/synced
例1: 同期が完了しました
{
"synced": true,
"sink_checkpoint_ts": "2023-11-30 15:14:11.015",
"puller_resolved_ts": "2023-11-30 15:14:12.215",
"last_synced_ts": "2023-11-30 15:08:35.510",
"now_ts": "2023-11-30 15:14:11.511",
"info": "Data syncing is finished"
}
応答には次のフィールドが含まれます。
synced
: このレプリケーションタスクが完了したかどうか。true
タスクが完了したことを意味し、false
不完全な可能性があることを意味します。false
の場合は、info
フィールドと他のフィールドの両方で特定のステータスを確認する必要があります。sink_checkpoint_ts
: PD 時間におけるシンク モジュールのチェックポイント TS 値。puller_resolved_ts
: PD 時間での、プラー モジュールのresolved-ts値。last_synced_ts
: PD 時間における、TiCDC によって処理された最新データの commit-ts 値。now_ts
: 現在の PD 時間。info
: 特にsynced
がfalse
の場合、同期ステータスの決定を支援する補足情報。
例 2: 同期が完了していない
{
"synced": false,
"sink_checkpoint_ts": "2023-11-30 15:26:31.519",
"puller_resolved_ts": "2023-11-30 15:26:23.525",
"last_synced_ts": "2023-11-30 15:24:30.115",
"now_ts": "2023-11-30 15:26:31.511",
"info": "The data syncing is not finished, please wait"
}
この例は、進行中のレプリケーション タスクの応答を示しています。 synced
とinfo
フィールドの両方をチェックすると、レプリケーション タスクがまだ完了しておらず、さらに待機することが予想されることがわかります。
例 3: 同期ステータスをさらに確認する必要がある
{
"synced":false,
"sink_checkpoint_ts":"2023-12-13 11:45:13.515",
"puller_resolved_ts":"2023-12-13 11:45:13.525",
"last_synced_ts":"2023-12-13 11:45:07.575",
"now_ts":"2023-12-13 11:50:24.875",
"info":"Please check whether PD is online and TiKV Regions are all available. If PD is offline or some TiKV regions are not available, it means that the data syncing process is complete. To check whether TiKV regions are all available, you can view 'TiKV-Details' > 'Resolved-Ts' > 'Max Leader Resolved TS gap' on Grafana. If the gap is large, such as a few minutes, it means that some regions in TiKV are unavailable. Otherwise, if the gap is small and PD is online, it means the data syncing is incomplete, so please wait"
}
この API を使用すると、アップストリーム クラスターで障害が発生した場合でも、同期ステータスをクエリできます。状況によっては、TiCDC の現在のデータ複製タスクが完了したかどうかを直接判断できない場合があります。このような場合は、この API をリクエストし、応答のinfo
フィールドと上流クラスターの現在のステータスの両方をチェックして、特定のステータスを判断できます。
この例では、TiCDC がまだデータ レプリケーションに追いついているか、PD または TiKV に障害が発生しているため、時間的にsink_checkpoint_ts
がnow_ts
より遅れています。これが TiCDC がまだデータ レプリケーションに追いついていないことが原因である場合は、レプリケーション タスクがまだ完了していないことを意味します。これが PD または TiKV の障害によるものである場合は、レプリケーション タスクが完了したことを意味します。したがって、クラスターのステータスを判断するには、 info
フィールドを確認する必要があります。
例 4: クエリエラー
{
"error_msg": "[CDC:ErrPDEtcdAPIError]etcd api call error: context deadline exceeded",
"error_code": "CDC:ErrPDEtcdAPIError"
}
アップストリーム クラスターの PD が長期間にわたって失敗する場合、この API をクエリすると、前述のエラーと同様のエラーが返される可能性があります。このエラーでは、さらに確認するための情報が提供されません。 PD 障害は TiCDC データ レプリケーションに直接影響するため、このようなエラーが発生した場合は、TiCDC がデータ レプリケーションを可能な限り完了していると想定できますが、PD 障害によりダウンストリーム クラスターでデータ損失が依然として発生する可能性があります。
レプリケーションタスクを一時停止する
この API はレプリケーション タスクを一時停止します。リクエストが成功すると200 OK
が返されます。返された結果は、サーバーがコマンドの実行に同意したことを意味するだけで、コマンドが正常に実行されることを保証するものではありません。
リクエストURI
POST /api/v2/changefeeds/{changefeed_id}/pause
パラメータの説明
パスパラメータ
パラメータ名 | 説明 |
---|---|
changefeed_id | 一時停止するレプリケーション タスク (変更フィード) の ID。 |
例
次のリクエストは、ID test1
のレプリケーション タスクを一時停止します。
curl -X POST http://127.0.0.1:8300/api/v2/changefeeds/test1/pause
リクエストが成功すると200 OK
が返されます。リクエストが失敗した場合は、エラー メッセージとエラー コードが返されます。
レプリケーションタスクを再開する
この API はレプリケーション タスクを再開します。リクエストが成功すると200 OK
が返されます。返された結果は、サーバーがコマンドの実行に同意したことを意味するだけで、コマンドが正常に実行されることを保証するものではありません。
リクエストURI
POST /api/v2/changefeeds/{changefeed_id}/resume
パラメータの説明
パスパラメータ
パラメータ名 | 説明 |
---|---|
changefeed_id | 再開するレプリケーション タスク (変更フィード) の ID。 |
リクエストボディのパラメータ
{
"overwrite_checkpoint_ts": 0
}
パラメータ名 | 説明 |
---|---|
overwrite_checkpoint_ts | UINT64 タイプ。レプリケーション タスク (変更フィード) を再開するときに、チェックポイント TSO を再割り当てします。 |
例
次のリクエストは、ID test1
のレプリケーション タスクを再開します。
curl -X POST http://127.0.0.1:8300/api/v2/changefeeds/test1/resume -d '{}'
リクエストが成功すると200 OK
が返されます。リクエストが失敗した場合は、エラー メッセージとエラー コードが返されます。
レプリケーションサブタスクリストのクエリ
このAPIは同期インターフェースです。リクエストが成功すると、すべてのレプリケーションサブタスク( processor
)の基本情報が返されます。
リクエストURI
GET /api/v2/processors
例
curl -X GET http://127.0.0.1:8300/api/v2/processors
{
"total": 3,
"items": [
{
"changefeed_id": "test2",
"capture_id": "d2912e63-3349-447c-90ba-72a4e04b5e9e"
},
{
"changefeed_id": "test1",
"capture_id": "d2912e63-3349-447c-90ba-72a4e04b5e9e"
},
{
"changefeed_id": "test",
"capture_id": "d2912e63-3349-447c-90ba-72a4e04b5e9e"
}
]
}
パラメータは次のように説明されます。
changefeed_id
: チェンジフィード ID。capture_id
: キャプチャID。
特定のレプリケーションサブタスクをクエリする
この API は同期インターフェイスです。リクエストが成功すると、指定されたレプリケーションサブタスク ( processor
) の詳細情報が返されます。
リクエストURI
GET /api/v2/processors/{changefeed_id}/{capture_id}
パラメータの説明
パスパラメータ
パラメータ名 | 説明 |
---|---|
changefeed_id | クエリ対象のレプリケーション サブタスクの変更フィード ID。 |
capture_id | クエリ対象のレプリケーション サブタスクのキャプチャ ID。 |
例
次のリクエストは、 changefeed_id
がtest
、 capture_id
が561c3784-77f0-4863-ad52-65a3436db6af
であるサブタスクの詳細情報をクエリします。サブタスクはchangefeed_id
とcapture_id
で識別できます。
curl -X GET http://127.0.0.1:8300/api/v2/processors/test/561c3784-77f0-4863-ad52-65a3436db6af
{
"table_ids": [
80
]
}
パラメータは次のように説明されます。
table_ids
: このキャプチャでレプリケートされるテーブル ID。
TiCDC サービス プロセス リストのクエリ
この API は同期インターフェイスです。リクエストが成功すると、すべてのレプリケーション プロセスの基本情報 ( capture
) が返されます。
リクエストURI
GET /api/v2/captures
例
curl -X GET http://127.0.0.1:8300/api/v2/captures
{
"total": 1,
"items": [
{
"id": "d2912e63-3349-447c-90ba-72a4e04b5e9e",
"is_owner": true,
"address": "127.0.0.1:8300"
}
]
}
パラメータは次のように説明されます。
id
: キャプチャID。is_owner
: キャプチャが所有者であるかどうか。address
: キャプチャのアドレス。
所有者ノードを削除する
この API は非同期インターフェイスです。リクエストが成功すると200 OK
が返されます。返された結果は、サーバーがコマンドの実行に同意したことを意味するだけで、コマンドが正常に実行されることを保証するものではありません。
リクエストURI
POST /api/v2/owner/resign
例
次のリクエストは、TiCDC の現在の所有者ノードを削除し、新しいラウンドの選挙をトリガーして新しい所有者ノードを生成します。
curl -X POST http://127.0.0.1:8300/api/v2/owner/resign
リクエストが成功すると200 OK
が返されます。リクエストが失敗した場合は、エラー メッセージとエラー コードが返されます。
TiCDCサーバーのログ レベルを動的に調整する
この API は同期インターフェイスです。リクエストが成功すると200 OK
が返されます。
リクエストURI
POST /api/v2/log
リクエストパラメータ
リクエストボディのパラメータ
パラメータ名 | 説明 |
---|---|
log_level | 設定するログレベル。 |
log_level
「debug」、「info」、「warn」、「error」、「dpanic」、「panic」、および「fatal」のzap によって提供されるログ レベルをサポートします。
例
curl -X POST -H "'Content-type':'application/json'" http://127.0.0.1:8300/api/v2/log -d '{"log_level":"debug"}'
リクエストが成功すると200 OK
が返されます。リクエストが失敗した場合は、エラー メッセージとエラー コードが返されます。