機能の概要
このAPIは、データ移行/検証プロジェクトの構成パラメータを更新するために使用されます。差分更新モードを採用しており、リクエストで明示的に指定されたフィールドのみが更新され、指定されていない部分は元の値のまま維持されます。これはCommonProjectController.updateProjectConfigに対応します。
呼び出しの説明
インターフェース制約
呼び出し元はマルチクラウドAPIにアクセスするためのキーを保有している必要があります。AccessKey IDとAccessKey Secretの取得方法の詳細については、アクセスキーの管理を参照してください。
リクエストパス
PUT /api/v2/oms/project/updateConfig
リクエストパラメータ
Header
パラメータ名 |
パラメータタイプ |
必須 |
説明 |
サンプル値 |
|---|---|---|---|---|
| X-Ob-Project-Id | String | はい | プロジェクトID | proj-xxxxxxxx |
| X-Ob-Org-Id | String | はい | 組織ID | org-xxxxxxxx |
Body
パラメータ名 |
パラメータタイプ |
必須 |
説明 |
サンプル値 |
|---|---|---|---|---|
| id | String | はい | プロジェクトID | project-xxx |
| commonTransferConfig | Object | いいえ | 汎用転送設定 | |
| fullTransferConfig | Object | いいえ | 全量転送設定 | |
| incrTransferConfig | Object | いいえ | 増分転送設定 | |
| countVerifyConfig | Object | いいえ | 行数検証設定 | |
| fullVerifyConfig | Object | いいえ | 全量検証設定 | |
| incrVerifyConfig | Object | いいえ | 増分検証設定 |
戻り値
パラメータ名 |
パラメータタイプ |
説明 |
サンプル値 |
|---|---|---|---|
| success | Boolean | 成否 | true |
| data | Object | 成功時はnull | null |
| requestId | String | リクエストID | req-xxx-xxx |
| cost | String | 所要時間 | 123ms |
更新モードの説明
差分更新:リクエストで明示的に指定されたフィールドのみが更新され、指定されていない部分は元の値のまま維持されます。例外:incrVerifyConfig の endCheckpoint フィールドは、「省略」と「明示的なnull指定」を区別せず、incrVerifyConfig オブジェクトが渡されれば、このフィールドも一緒に更新されます。
シナリオ |
処理ロジック |
|---|---|
| この構成オブジェクトを指定しない場合 (null) | 全体の構成ブロックがスキップされ、元の設定は変更されません |
| 構成オブジェクトを指定する場合 | オブジェクト内のnull以外のフィールドのみが処理され、その他のフィールドは元の値のままです |
| オブジェクト内のフィールドがnullの場合 | そのフィールドがスキップされ、元の値のままです |
| スロットリング制御フィールドに-1を指定する場合 | そのスロットリング設定が削除されます(無制限に戻ります) |
incrVerifyConfig.endCheckpoint を省略またはnullを指定する場合 |
どちらの場合もnullに更新され、元の終了チェックポイントがクリアされ、継続的な検証モードに切り替えられます |
注意
incrVerifyConfig.endCheckpoint は差分更新ルールに従いません。incrVerifyConfig オブジェクトを指定する際、既に設定された終了チェックポイントを保持したい場合は、リクエストに元の値を明示的に含める必要があります。incrVerifyConfig 内の他のフィールド(例:reInspectionThreads)のみを更新し、endCheckpoint を省略すると、元の終了チェックポイントがクリアされ、継続的な検証モードに切り替えられます。
スロットリング制御フィールドの特別なルール
以下のフィールドに-1を指定すると、スロットリング設定が削除されます(無制限に戻ります):
fullTransferConfig.throttleRps、fullTransferConfig.throttleIOPS、fullTransferConfig.sinkThrottleRps、fullTransferConfig.sinkThrottleIOPS、incrTransferConfig.throttleRps、incrTransferConfig.throttleIOPS
指定値 |
動作 |
|---|---|
| null | スキップ、更新なし |
| -1 | この構成パラメータを削除します(無制限に戻ります) |
| ≥ 0 | 通常通り更新します |
注意
fullVerifyConfig.sourceThrottleBps と fullVerifyConfig.sinkThrottleBps は 上記の-1ルール が適用されません。これら2つのフィールドの有効な値は[1, 1024]です。-1または0を指定すると、パラメータ検証段階で直接失敗します。nullを指定すると、そのフィールドの更新がスキップされるだけであり、スロットリングの解除を意味するものではありません。現在の更新インターフェースは、全量検証のスロットリングの解除をサポートしていません。
ネストされたオブジェクトフィールドの展開説明
commonTransferConfig(汎用転送設定)
フィールド名 |
型 |
説明 |
|---|---|---|
| sinkStoreFormat | String | ターゲット側テーブルのオブジェクトストレージタイプ(OB 4.3+) |
| sourceStoreFormat | String | ソース側テーブルのオブジェクトストレージタイプ(OB 4.3+) |
fullTransferConfig(全量転送設定)
フィールド名 |
型 |
説明 |
|---|---|---|
| writeWorkerNum | Integer | 書き込み並列数、[1, 512] |
| readWorkerNum | Integer | 読み取り並列数、[1, 512] |
| indexDDLConcurrencyLimit | Integer | 単一インデックスDDLの並列度、[1, 512] |
| maxConcurrentIndexDDLs | Integer | 最大同時実行インデックスDDL数、[1, 512] |
| throttleRps | Integer | RPS制限、[-1, Integer.MAX_VALUE]、-1は速度制限を解除 |
| throttleIOPS | Integer | トラフィック(バイト)制限、[-1, Integer.MAX_VALUE]、-1は速度制限を解除 |
| sinkThrottleRps | Integer | sink側RPS制限、[-1, Integer.MAX_VALUE]、-1は速度制限を解除 |
| sinkThrottleIOPS | Integer | sink側トラフィック制限、[-1, Integer.MAX_VALUE]、-1は速度制限を解除 |
incrTransferConfig(増分転送設定)
フィールド名 |
型 |
説明 |
|---|---|---|
| incrSyncThreadCount | Integer | 増分同期スレッド数、[1, 512] |
| recordTypeWhiteList | List | 増分同期データタイプ許可リスト:HEARTBEAT/INSERT/UPDATE/DELETE/BEGIN/COMMIT/ROLLBACK/DDL/ROW |
| supportDDLTypes | List | 対応するDDLタイプのリスト。recordTypeWhiteListにDDLが含まれる場合に有効:CREATE_TABLE/DROP_TABLE/TRUNCATE_TABLE/RENAME_TABLE/ALTER_TABLE/CREATE_INDEX/DROP_INDEX |
| throttleRps | Integer | RPS制限、[-1, Integer.MAX_VALUE]、-1は速度制限を解除 |
| throttleIOPS | Integer | トラフィック(バイト)制限、[-1, Integer.MAX_VALUE]、-1は速度制限を解除 |
| incrOnlineDdlConfig | List | Online DDL設定ルール:GH_OST/PT_OSC/ALIYUN_DMS |
| conflictPolicy | String | 競合処理ポリシー:IGNORE(競合を無視してターゲット側データを保持)/ OVERWRITE(ターゲット側データを上書き) |
| sourceHeartbeatIntervalSecond | Integer | MySQLソース側のハートビート送信頻度(秒)、[0, 60]、0は無効 |
countVerifyConfig(行数検証設定)
フィールド名 |
型 |
説明 |
|---|---|---|
| concurrencyTablesNumber | Integer | 並列検証テーブル数、[1, 100] |
| queryTimeout | Integer | クエリタイムアウト時間(秒)、[1, 1440] |
fullVerifyConfig(全量検証設定)
フィールド名 |
型 |
説明 |
|---|---|---|
| mode | String | 検証モード:AUTO(適応型、デフォルト)/ IN |
| sourceThreads | Integer | ソース側並列スレッド数、[1, 512] |
| sourceThrottleBps | Integer | ソース側BPS制限(MiB/s)、[1, 1024]。-1または0の指定はサポートされていない(パラメータ検証で拒否される)。nullはこのフィールドの更新をスキップすることを意味し、速度制限の解除を意味するものではない |
| sinkThreads | Integer | ターゲット側並列スレッド数、[1, 512] |
| sinkThrottleBps | Integer | ターゲット側のBPS制限(MiB/s)、[1, 1024]。-1または0を指定することはできません(パラメータ検証で拒否されます)。nullはこのフィールドの更新をスキップすることを意味し、制限を解除することを意味するものではありません |
incrVerifyConfig(増分検証設定)
フィールド名 |
型 |
説明 |
|---|---|---|
| startCheckpoint | String | 増分検証開始チェックポイント(タイムスタンプ)、[now-7d, now+7d] |
| endCheckpoint | String | 増分検証終了チェックポイント。注意:incrVerifyConfigオブジェクトを指定する場合、このフィールドを省略するか明示的にnullを指定することは、元の終了チェックポイントをクリアして継続検証に切り替えることと等価です。元の終了チェックポイントを保持する必要がある場合は、元の値を明示的に指定する必要があります |
| initialInspectionCooldownTimeout | Integer | 初回ホットデータ検証後のクーリング時間(秒)、[1, 3600] |
| initialInspectionDelayTimeout | Integer | 初回検証で不整合なデータを検出するまでの時間(秒)、[1, 86400] |
| reInspectionThreads | Integer | 再検証の並列スレッド数、[1, 512] |
| reInspectionthrottleBps | Integer | 再検証の速度制限(MiB/s)、[1, 1024] |
| reInspectiontolerateTimeout | Integer | 再検証の最大時間(分)、[1, 720] |
例
リクエスト例
例1:全量転送設定の更新
{
"id": "project-xxx",
"fullTransferConfig": {
"writeWorkerNum": 128,
"readWorkerNum": 128,
"throttleRps": 5000,
"throttleIOPS": 104857600
}
}
例2:DDLタイプを含む増分転送設定の更新
{
"id": "project-xxx",
"incrTransferConfig": {
"incrSyncThreadCount": 128,
"recordTypeWhiteList": ["INSERT", "UPDATE", "DELETE", "DDL"],
"supportDDLTypes": ["CREATE_TABLE", "DROP_TABLE", "ALTER_TABLE", "CREATE_INDEX", "DROP_INDEX"],
"throttleRps": 3000,
"conflictPolicy": "OVERWRITE"
}
}
例3:制限の解除(-1を指定)
{
"id": "project-xxx",
"fullTransferConfig": {
"throttleRps": -1,
"throttleIOPS": -1
}
}
例4:全量検証設定の更新
{
"id": "project-xxx",
"fullVerifyConfig": {
"mode": "AUTO",
"sourceThreads": 8,
"sinkThreads": 8,
"sourceThrottleBps": 512
}
}
例5:増分検証終了チェックポイントの更新(継続検証)
{
"id": "project-xxx",
"incrVerifyConfig": {
"startCheckpoint": "1720000000000",
"endCheckpoint": null
}
}
例6:既存の終了チェックポイントを保持した増分検証設定の更新
endCheckpointを省略するか、明示的にnullを指定すると、元の終了チェックポイントがクリアされます。再検証スレッド数のみを調整しつつ既存の終了チェックポイントを保持したい場合は、元の終了チェックポイントの値を明示的に指定する必要があります。
{
"id": "project-xxx",
"incrVerifyConfig": {
"reInspectionThreads": 8,
"endCheckpoint": "1720086400000"
}
}
レスポンス例
{
"success": true,
"data": null,
"requestId": "req-xxx-xxx",
"cost": "123ms"
}