機能の概要
このAPIは、データ移行またはデータ検証プロジェクトを作成するために使用されます。CommonProjectController.createProjectに対応しています。
呼び出しの説明
インターフェース制約
呼び出し元はマルチクラウドAPIにアクセスするためのキーを保有している必要があります。AccessKey IDとAccessKey Secretの取得方法については、アクセスキーの管理を参照してください。
リクエストパス
POST /api/v2/oms/project
リクエストパラメータ
Header
名前 |
型 |
必須 |
説明 |
サンプル値 |
|---|---|---|---|---|
| X-Ob-Project-Id | String | はい | プロジェクトID | proj-xxxxxxxx |
| X-Ob-Org-Id | String | はい | 組織ID | org-xxxxxxxx |
Query
名前 |
型 |
必須 |
説明 |
サンプル値 |
|---|---|---|---|---|
| requestId | String | いいえ | リクエストID | d04eabba-acef-4f4b-96f1-c657******** |
Body
名前 |
型 |
必須 |
説明 |
サンプル値 |
|---|---|---|---|---|
| name | String | はい | プロジェクト名。1~256文字で、スペースは含められません | データ移行プロジェクト |
| type | String | はい | プロジェクトタイプ:MIGRATION(データ移行)/ VERIFY(データ検証) |
MIGRATION |
| sourceDatasourceId | String | はい | ソース側データソースID | resource-123456 |
| sinkDatasourceId | String | はい | ターゲット側データソースID | resource-123456 |
| transferMapping | Object | はい | 転送オブジェクトマッピング設定 | |
| commonTransferConfig | Object | いいえ | 汎用転送設定 | |
| enableStructTransfer | Boolean | いいえ | 構造転送を有効にするかどうか(デフォルトはfalse) | true |
| structTransferConfig | Object | いいえ | 構造転送設定。enableStructTransfer=trueの場合は必須 | |
| enableFullTransfer | Boolean | いいえ | 全量転送を有効にするかどうか(デフォルトはfalse) | true |
| fullTransferConfig | Object | いいえ | 全量転送設定。enableFullTransfer=trueの場合は必須 | |
| enableIncrTransfer | Boolean | いいえ | 増分転送を有効にするかどうか(デフォルトはfalse) | true |
| incrTransferConfig | Object | いいえ | 増分転送設定。enableIncrTransfer=trueの場合は必須 | |
| enableFullVerify | Boolean | いいえ | 全量検証を有効にするかどうか(デフォルトはfalse)。VERIFYタスクではenableFullVerifyとenableCountVerifyのどちらか一方を選択する必要があります | true |
| fullVerifyConfig | Object | いいえ | 全量検証設定。enableFullVerify=trueの場合は必須 | |
| enableCountVerify | Boolean | いいえ | 行数検証を有効にするかどうか(デフォルトはfalse)。VERIFYタスクではenableFullVerifyとenableCountVerifyのどちらか一方を選択する必要があります | false |
| countVerifyConfig | Object | いいえ | 行数検証設定。enableCountVerify=trueの場合は必須 | |
| enableIncrVerify | Boolean | いいえ | 増分検証を有効にするかどうか(デフォルトはfalse)。現在の作成インターフェースは、増分検証プロジェクトをサポートしていないため、trueを指定しないでください。trueを指定すると、シナリオ検証で拒否されます | false |
| incrVerifyConfig | Object | いいえ | 増分検証設定。現在の作成インターフェースは、増分検証をサポートしていないため、指定不要 |
注意
- VERIFYプロジェクトを作成する場合、このAPIが現在サポートしているのは全量検証または行数検証のみです。
enableFullVerify=trueまたはenableCountVerify=trueのいずれか一方を指定する必要があります。 - フィールドテーブルには
enableIncrVerifyが保持されていますが、このシナリオは現在利用できません。VERIFYプロジェクト作成時にenableIncrVerify=trueを設定すると、シナリオ検証で拒否されます。また、MIGRATIONタイプのプロジェクトでは検証ステップの有効化も許可されません。
戻り値
名前 |
型 |
説明 |
サンプル値 |
|---|---|---|---|
| success | Boolean | 成功したかどうか | true |
| data | String | 作成されたプロジェクトID | np_xxx |
| requestId | String | リクエストID | req-xxx-xxx |
| cost | String | 所要時間 | 123ms |
ネストされたオブジェクトフィールドの展開について
transferMapping(転送オブジェクトマッピング設定)
フィールド名 |
型 |
必須 |
説明 |
|---|---|---|---|
| mode | String | はい | 転送マッピングモード。COMPLEX のみサポートします |
| subMode | String | 条件必須 | サブモード。選択可能な値:WILDCARD/FULLDB。whiteTableRules 設定が空でない場合は必須です。この条件で指定しないと、サーバー側は "subMode is required when whiteTableRules is configured" という検証例外をスローします |
| schemas | List<TransferSchema> |
はい | Schemaリスト(COMPLEXモード) |
| databasesBlack | List<TransferSchema> |
いいえ | データベースのブラックリスト |
| tableAndViewWhiteList | List<String> |
いいえ | テーブルとビューの許可リスト |
| tableAndViewBlackList | List<String> |
いいえ | テーブルとビューのブラックリスト |
| whiteTableRules | List<TransferMatchingRule> |
いいえ | 許可対象テーブルのマッチングルール |
| whiteViewRules | List<TransferMatchingRule> |
いいえ | 許可対象ビューのマッチングルール |
| blackTableRules | List<TransferMatchingRule> |
いいえ | 除外対象テーブルのマッチングルール |
| blackViewRules | List<TransferMatchingRule> |
いいえ | 除外対象ビューのマッチングルール |
TransferSchema構造
フィールド名 |
型 |
説明 |
|---|---|---|
| name | String | 元データベース/Schema名 |
| mappedName | String | マッピング後のデータベース/Schema名 |
| tables | List<TransferTable> |
テーブル設定リスト |
| views | List<TransferView> |
ビュー設定リスト |
TransferTable構造
フィールド名 |
型 |
説明 |
|---|---|---|
| name | String | 元テーブル名 |
| mappedName | String | マッピング後のテーブル名 |
| whereClause | String | 行フィルタ条件(WHERE句の後の式) |
| applyFilterSqlToQuerySlice | Boolean | 行フィルタ条件がQuerySliceに適用されるかどうか(デフォルトはfalse) |
TransferView構造
フィールド名 |
型 |
説明 |
|---|---|---|
| name | String | 元ビュー名 |
| mappedName | String | マッピング後のビュー名 |
TransferMatchingRule構造
フィールド名 |
型 |
説明 |
|---|---|---|
| schemaMapping | TransferMappingRule | Schemaのマッチングとマッピングルール |
| objectMapping | TransferMappingRule | Schema下のオブジェクト(テーブル/ビュー)のマッチングとマッピングルール |
TransferMappingRule構造
フィールド名 |
型 |
説明 |
|---|---|---|
| name | String | ソース側のマッチングパターン(ワイルドカード *、[a-zA-Z]* などをサポートします) |
| mappedName | String | ターゲット側のマッピング名(オプション。指定しない場合はソース側と同じになります) |
commonTransferConfig(汎用転送設定)
フィールド名 |
型 |
必須 |
説明 |
|---|---|---|---|
| tableCategory | String | いいえ | 転送するテーブルの種類:ALL(すべてのテーブル、デフォルト)/ WITH_UNIQUE_ROW_ID(一意の行識別子を持つテーブル)/ WITHOUT_UNIQUE_ROW_ID(一意の行識別子を持たないテーブル) |
| mqSerializerType | String | いいえ | MQシリアライズタイプ(ターゲット側がMQの場合に有効):DEFAULT/CANAL/DATAWORKS_V2/SHAREPLEX/DEFAULT_WITH_SCHEMA/DEBEZIUM/DEBEZIUM_FLATTEN/DEBEZIUM_SMT/AVRO |
| mqPartitionMode | String | いいえ | MQパーティションのルーティング方式:ONE/TABLE/HASH |
| mqPartition | Integer | いいえ | partitionMode=ONE の場合のパーティション位置、≥0 |
| datahubTopicType | String | いいえ | DataHubトピックの種類(ターゲット側がDATAHUBの場合に有効):TUPLE/BLOB |
| dataWorksBusinessName | String | いいえ | 業務システム識別子(MQへのデリバリ時に有効) |
| syncSchema | Boolean | いいえ | ソース側のスキーマをターゲット側に同期するかどうか(ソース側がPostgreSQLの場合にのみ有効) |
| syncSchemaColumnName | String | いいえ | 同期するスキーマのフィールド名(ソース側がPostgreSQLの場合にのみ有効) |
| customColumns | List<CustomColumn> |
いいえ | グローバルカスタム列(ソース側がPostgreSQLの場合にのみ有効) |
| sinkStoreFormat | String | いいえ | ターゲット側テーブルのオブジェクトストレージタイプ(OB 4.3+) |
| sourceStoreFormat | String | いいえ | ソース側テーブルのオブジェクトストレージタイプ(OB 4.3+) |
| enableHiddenColumnsAndIndex | Boolean | いいえ | NOT NULLの一意キーを持つテーブルに、非表示列と非表示インデックスを追加するかどうか |
CustomColumn構造
フィールド名 |
型 |
説明 |
|---|---|---|
| columnName | String | 列名 |
| columnValue | String | 列値 |
| columnType | String | 列タイプ:STRING(文字列、デフォルト)/ FUNCTION(関数) |
structTransferConfig(構造転送設定)
フィールド名 |
型 |
必須 |
説明 |
|---|---|---|---|
| byteCharConvertStrategy | String | いいえ | byte/char変換方式:IGNORE_BYTE_IF_BYTE_USED/FORCE_CHAR_IF_BYTE_USED/EXPAND_LEN_IF_BYTE_USED/DO_NOTHING_IF_BYTE_USED(デフォルト) |
| deferIndexCreation | Boolean | いいえ | インデックスの後付けを許可するかどうか(デフォルトはfalse) |
fullTransferConfig(全量転送設定)
フィールド名 |
型 |
必須 |
説明 |
|---|---|---|---|
| nonePkUkTruncateDstTable | Boolean | いいえ | 主キー/一意インデックスがないテーブルについて、ターゲットテーブルをtruncateするかどうか |
| allowDestTableNotEmpty | Boolean | いいえ | ターゲット側のテーブルが空でないことを許可するかどうか(全量検証が選択されていない場合のみ許可) |
| writeWorkerNum | Integer | いいえ | 書き込み並列数、[1, 512] |
| readWorkerNum | Integer | いいえ | 読み取り並列数、[1, 512] |
| indexDDLConcurrencyLimit | Integer | いいえ | 単一インデックスDDLの並列度、[1, 512] |
| maxConcurrentIndexDDLs | Integer | いいえ | 最大並列インデックスDDL数、[1, 512] |
| throttleRps | Integer | いいえ | RPS制限、nullは無制限 |
| throttleIOPS | Integer | いいえ | トラフィック(バイト)制限、nullは無制限 |
| sinkThrottleRps | Integer | いいえ | sink側RPS制限、nullは無制限 |
| sinkThrottleIOPS | Integer | いいえ | sink側トラフィック制限、nullは無制限 |
incrTransferConfig(増分転送設定)
フィールド名 |
型 |
必須 |
説明 |
|---|---|---|---|
| startTimestamp | Long | 条件必須 | 増分開始時刻(秒単位のタイムスタンプ)。30日以内の値で、全量転送を選択しない場合は必須 |
| recordTypeWhiteList | List<String> |
いいえ | 増分同期データタイプの許可リスト:HEARTBEAT/INSERT/UPDATE/DELETE/BEGIN/COMMIT/ROLLBACK/DDL/ROW |
| storeLogKeptHour | Integer | いいえ | ストアログの保存時間(時間)。[1, 8760]。デフォルトは24 |
| enableSequencingWithinTxn | Boolean | いいえ | トランザクション内のシーケンス編成を有効にするかどうか(ソース側がOceanBaseの場合のみ適用されます) |
| incrSyncThreadCount | Integer | いいえ | 増分同期スレッド数。[1, 512]。デフォルトは64(推奨:マシンのコア数×4) |
| enableIncrSyncStatistics | Boolean | いいえ | 増分DML/DDL統計を有効にするかどうか(デフォルトはtrue) |
| throttleRps | Integer | いいえ | RPSの制限。nullは無制限を意味します |
| throttleIOPS | Integer | いいえ | トラフィック(バイト)の制限。nullは無制限を意味します |
| supportDDLTypes | List<String> |
条件必須 | サポートされているDDLタイプのリスト。DDL同期を有効にする場合は必須です:CREATE_TABLE/DROP_TABLE/TRUNCATE_TABLE/RENAME_TABLE/ALTER_TABLE/CREATE_INDEX/DROP_INDEX |
| incrOnlineDdlConfig | List<String> |
いいえ | Online DDL設定ルール:GH_OST/PT_OSC/ALIYUN_DMS |
| sourceHeartbeatIntervalSecond | Integer | いいえ | MySQLソース側のハートビート送信頻度(秒)。[0, 60]。デフォルトは5、0は無効を意味します |
fullVerifyConfig(全量検証設定)
フィールド名 |
型 |
必須 |
説明 |
|---|---|---|---|
| mode | String | いいえ | 検証モード:AUTO(適応型、デフォルト)/ IN |
| sourceThreads | Integer | いいえ | ソース側の並列スレッド数。[1, 512]。デフォルトは4 |
| sourceThrottleBps | Integer | いいえ | ソース側のBPS制限(MiB/s)。[1, 1024]。nullは無制限を意味します |
| sinkThreads | Integer | いいえ | ターゲット側の並列スレッド数。[1, 512]。デフォルトは4 |
| sinkThrottleBps | Integer | いいえ | ターゲット側のBPS制限(MiB/s)。[1, 1024]。nullは無制限を意味します |
countVerifyConfig(行数検証設定)
フィールド名 |
型 |
必須 |
説明 |
|---|---|---|---|
| concurrencyTablesNumber | Integer | はい | 並列検証テーブル数。[1, 100]。enableCountVerify=trueの場合は必須です。サーバー側は欠落したフィールドにデフォルト値を補完しません。省略した場合は、パラメータエラーとして直接報告されます |
| queryTimeout | Integer | はい | クエリタイムアウト時間(秒)。[1, 1440]。enableCountVerify=trueの場合は必須です。サーバー側は欠落したフィールドにデフォルト値を補完しません。省略した場合は、パラメータエラーとして直接報告されます |
incrVerifyConfig(増分検証設定)
フィールド名 |
型 |
必須 |
説明 |
|---|---|---|---|
| startCheckpoint | String | いいえ | 増分検証開始チェックポイント(タイムスタンプ)。[now-7d, now+7d] |
| endCheckpoint | String | いいえ | 増分検証終了チェックポイント。設定しない場合は継続検証 |
| initialInspectionCooldownTimeout | Integer | いいえ | 初回ホットデータ冷却時間(秒)。[1, 3600] |
| initialInspectionDelayTimeout | Integer | いいえ | 初回不整合データ検出時間(秒)。[1, 86400] |
| reInspectionThreads | Integer | いいえ | 再検証並列スレッド数。[1, 512] |
| reInspectionthrottleBps | Integer | いいえ | 再検証スロットリング(MiB/s)。[1, 1024] |
| reInspectiontolerateTimeout | Integer | いいえ | 再検証最大時間(分)。[1, 720] |
サポートされている転送リンクマトリックス
ソース側 |
タスクタイプ |
サポート対象のターゲット側 |
|---|---|---|
| OB_MYSQL | MIGRATION | OB_MYSQL、OB_ORACLE、MYSQL、POSTGRESQL、KAFKA、TIDB |
| OB_ORACLE | MIGRATION | OB_ORACLE、OB_MYSQL、ORACLE、POSTGRESQL、KAFKA |
| MYSQL | MIGRATION | OB_MYSQL |
例
リクエストの例
MIGRATION(データ移行)の例
curl --digest -u '<あなたのak:sk>' \
--request POST \
--url 'https://api-cloud.oceanbase.com/api/v2/oms/project' \
-H 'Content-Type: application/json' \
-H 'X-Ob-Project-Id: <プロジェクトID>' \
-H 'X-Ob-Org-Id: <組織ID>' \
--data @request.json
{
"name": "MySQLToOBMigration",
"type": "MIGRATION",
"sourceDatasourceId": "ds-source-xxx",
"sinkDatasourceId": "ds-sink-xxx",
"transferMapping": {
"mode": "COMPLEX",
"schemas": [
{
"name": "source_db",
"mappedName": "target_db",
"tables": [
{ "name": "table_1", "whereClause": "id > 1", "applyFilterSqlToQuerySlice": true },
{ "name": "table_2", "mappedName": "table_2_dest" }
]
}
]
},
"enableStructTransfer": true,
"enableFullTransfer": true,
"enableIncrTransfer": true,
"structTransferConfig": {
"byteCharConvertStrategy": "DO_NOTHING_IF_BYTE_USED",
"deferIndexCreation": false
},
"fullTransferConfig": {
"writeWorkerNum": 64,
"readWorkerNum": 64
},
"incrTransferConfig": {
"incrSyncThreadCount": 64,
"recordTypeWhiteList": ["INSERT", "UPDATE", "DELETE", "DDL"],
"supportDDLTypes": ["CREATE_TABLE", "DROP_TABLE", "ALTER_TABLE", "CREATE_INDEX", "DROP_INDEX"]
}
}
VERIFY(データ検証)の例
{
"name": "MySQLToOBVerify",
"type": "VERIFY",
"sourceDatasourceId": "ds-source-xxx",
"sinkDatasourceId": "ds-sink-xxx",
"transferMapping": {
"mode": "COMPLEX",
"schemas": [
{
"name": "source_db",
"mappedName": "target_db",
"tables": [
{ "name": "table_1", "mappedName": "table_1_dest" },
{ "name": "table_2", "mappedName": "table_2_dest" }
]
}
]
},
"enableFullVerify": true,
"fullVerifyConfig": {
"mode": "AUTO",
"sourceThreads": 4,
"sinkThreads": 4
}
}
レスポンスの例
{
"success": true,
"data": "np_xxx",
"requestId": "req-xxx-xxx",
"cost": "123ms"
}