Llame a las operaciones de la API de DTS para configurar o consultar objetos de migración, sincronización y suscripción. Este tema abarca las definiciones de los objetos, los parámetros y los ejemplos de configuración.
Operaciones de la API y parámetros relacionados
|
API |
Descripción |
|
Configure los objetos en el parámetro de solicitud |
|
|
Consulte los objetos en el parámetro de respuesta |
Definición de objetos de migración, sincronización o suscripción
Los parámetros relacionados con los objetos utilizan cadenas JSON. A continuación se describen los parámetros disponibles.
-
Cuando los objetos incluyen varias bases de datos:
ImportanteLas instancias de suscripción no admiten asignaciones. El valor del parámetro
namedebe coincidir con el nombre real de la base de datos o de la tabla.{ "Name of database 1 to be migrated, synchronized, or subscribed to": { "name": "Name of database 1 in the destination instance", "all": true (Indicates that the entire database is migrated, synchronized, or subscribed to) }, "Name of database 2 to be migrated, synchronized, or subscribed to": { "name": "Name of database 2 in the destination instance", "all": false (Indicates that the entire database is not migrated, synchronized, or subscribed to), "Table": { "Name of table A to be migrated, synchronized, or subscribed to": { "name": "Name of table A in the destination instance", "all": true (Indicates that the entire table is migrated, synchronized, or subscribed to), "dml_op": "DML operations to be incrementally migrated or synchronized", "ddl_op": "DDL operations to be incrementally migrated or synchronized" } } }, "Name of database 3 to be migrated, synchronized, or subscribed to": { "name": "Name of database 3 in the destination instance", "all": true (Indicates that the entire database is migrated, synchronized, or subscribed to), "dml_op": "DML operations to be incrementally migrated or synchronized", "ddl_op": "DDL operations to be incrementally migrated or synchronized" } } -
Cuando los objetos están a nivel de columna o incluyen condiciones de filtro:
{ "Name of database to be migrated, synchronized, or subscribed to": { "name": "Name of database in the destination instance", "all": false (Indicates that the entire database is not migrated, synchronized, or subscribed to), "Table": { "Name of table A to be migrated, synchronized, or subscribed to": { "name": "Name of table A in the destination instance", "all": false (Indicates that the entire table is not migrated, synchronized, or subscribed to), "filter": "id>10" "column": { "id": { "key": "PRI", "name": "id", "type": "int(11)", "sharedKey": false, "state": "checked" } }, "shard": 12 } } } } -
Cuando el destino es AnalyticDB for MySQL o AnalyticDB for PostgreSQL:
{ "Name of database to be migrated or synchronized": { "name": "Name of database in the destination instance", "all": false (Fixed as false. Regardless of whether the objects are at the database or table level, if the destination instance is AnalyticDB for MySQL or AnalyticDB for PostgreSQL, this parameter is fixed as false, and you must also specify information such as the partition key of the table), "Table": { "Name of table A to be migrated or synchronized": { "all": true (Indicates that the entire table is migrated or synchronized), "name": "Name of table A in the destination instance", "primary_key": "id (Specifies the primary key)", "type": "dimension (Type of the table)", } "Name of table B to be migrated or synchronized": { "all": true (Indicates that the entire table is migrated or synchronized), "name": "Name of table B in the destination instance", "part_key": "id (Specifies the partition key)", "primary_key": "id (Specifies the primary key)", "type": "partition (Type of the table)", "tagColumnValue": "Value of the tag column" } } } } -
Cuando establece políticas de resolución de conflictos independientes para los objetos de sincronización:
NotaEsta función solo es compatible con instancias de sincronización bidireccional entre instancias MySQL o entre clústeres de PolarDB for MySQL.
Es posible establecer políticas de resolución de conflictos independientes a nivel de base de datos o de tabla.
En las columnas configuradas con una política de resolución de conflictos independiente, la política global no surte efecto.
Configuración a nivel de tabla
{ "Name of database 1 to be synchronized": { "name": "Name of database 1 in the destination instance", "all": true (Indicates that the entire database is synchronized), "conflict": "Task-level conflict resolution policy" }, "Name of database 2 to be synchronized": { "name": "Name of database 2 in the destination instance", "all": false (Indicates that the entire database is not synchronized), "conflict": "overwrite", "Table": { "Name of table A to be synchronized": { "name": "Name of table A in the destination instance", "all": true (Indicates that the entire table is synchronized), "cdr_cmp_col": "Conflict detection column", "cdr_rslv_col": "Conflict detection column", "resolve_method": "Table-level conflict resolution policy" } } } }Configuración a nivel de base de datos
-
Cuando el objeto de sincronización es una base de datos completa:
"Name of database 1 to be synchronized": { "name": "Name of database 1 in the destination instance", "all": true (Indicates that the entire database is synchronized), "conflict": "Task-level conflict resolution policy", "cdr_cmp_col": "Conflict detection column", "cdr_rslv_col": "Conflict detection column", "resolve_method": "Database-level conflict resolution policy" } } -
Cuando el objeto de sincronización no es una base de datos completa:
"Name of database 2 to be synchronized": { "name": "Name of database 2 in the destination instance", "all": false (Indicates that the entire database is not synchronized), "conflict": "Task-level conflict resolution policy", "cdr_cmp_col": "Conflict detection column", "cdr_rslv_col": "Conflict detection column", "resolve_method": "Database-level conflict resolution policy", "Table": { "Name of table A to be synchronized": { "name": "Name of table A in the destination instance", "all": true (Indicates that the entire table is synchronized) } } }
-
Cuando configura una tarea de integración de datos hacia un lago de datos:
Parámetro
Descripción
write_operationEl método de escritura cuando ocurre un conflicto de datos.
-
append: conserva los datos existentes y agrega los nuevos. -
overwrite: sobrescribe los datos en conflicto en el destino. -
errorIfExists: la tarea reporta un error y finaliza. -
ignore: omite la escritura actual y conserva los datos existentes en el destino.
targetTypeEl formato de los datos después de escribirlos en OSS (conversión obligatoria). Formatos compatibles:
Byte,Integer,Long,Double,String,Binary,Boolean,TimestampyDate.NotaSi no se especifica, DTS convierte automáticamente los tipos de datos de origen.
etl_dateEl nombre de la columna adicional (constante) que se va a agregar.
NotaLos valores de los dos parámetros
etl_datedeben ser iguales.syntacticTypeFijo como ADD, lo cual indica que se agrega una columna.
NotaEl valor de la columna agregada (
value) debe ser una constante encerrada entre comillas simples ('').part_keyLa clave de partición de la tabla de destino. Tiene dos valores posibles:
NotaObligatorio solo cuando la tabla de destino está particionada.
-
Una columna que se integrará desde el origen.
-
Una columna constante que se agrega al destino y se establece como clave de partición.
NotaEl formato es
<Key>=<Value>. Por ejemplo,dt=2025-07-07indica una columna constante llamadadtcon el valor2025-07-07.
{ "Name of database 1 to be integrated": { "all": false (Fixed as false), "Table": { "Name of table A to be integrated": { "all": false (Indicates that the entire table is not integrated), "filter": "", "write_operation": "Method used to write data", "name": "Name of table A in the destination instance", "column": { "Name of column a to be integrated": { "name": "Name of column a in the destination instance", "targetType": "Type of the column in OSS" }, ******, "etl_date": { "syntacticType": "ADD (Fixed as ADD)", "name": "etl_date", "type": "String (Fixed as String)", "value": "'2025-07-08 03:30:00'" } }, "part_key": "dt=2025-07-07" } }, "name": "dtstestdata (Name of database 1 in the destination instance)" } } -
|
Parámetro |
Descripción |
|
|
El nombre asignado en el destino para la base de datos, la tabla o la columna de origen. Por ejemplo, para migrar la base de datos dtssource a dtstarget, establezca este parámetro como dtstarget. |
|
|
Especifica si se seleccionan todas las tablas o columnas. Valores válidos:
|
|
|
La información de la tabla de origen. |
|
|
La condición de filtro para los datos que se van a migrar, sincronizar o suscribir. Solo se puede establecer a nivel de tabla. Por ejemplo, puede establecer este parámetro en Nota
Las tareas de suscripción no admiten la configuración de condiciones de filtro. |
|
|
La información de la columna de origen. |
|
|
Especifica si la columna es una clave primaria. Valores válidos:
|
|
|
Especifica si la columna es una clave de fragmentación. Valores válidos:
Nota
Obligatorio solo cuando el tipo de base de datos es Kafka. |
|
|
El tipo de datos del campo. |
|
|
Si el valor es |
|
|
El número de fragmentos para la tabla que se va a migrar o sincronizar. Nota
Obligatorio solo cuando el tipo de base de datos es Kafka. |
|
|
Las operaciones DML que se van a migrar o sincronizar de forma incremental. Valores válidos:
Nota
Para conocer las operaciones DML compatibles según el tipo de tarea, revise los documentos de configuración en Migration solutions o Synchronization solutions. |
|
|
Las operaciones DDL que se van a migrar o sincronizar de forma incremental. Valores válidos:
Nota
Para conocer las operaciones DDL compatibles según el tipo de tarea, revise los documentos de configuración en Migration solutions o Synchronization solutions. |
|
|
La clave primaria. Obligatorio solo cuando el destino es AnalyticDB for MySQL o AnalyticDB for PostgreSQL. |
|
|
La clave de partición. Obligatorio cuando el destino es AnalyticDB for MySQL o AnalyticDB for PostgreSQL. |
|
Importante
Este parámetro |
El tipo de tabla cuando el destino es AnalyticDB for MySQL o AnalyticDB for PostgreSQL. Valores válidos:
|
|
|
El valor personalizado de la columna de etiqueta __dts_data_source. Obligatorio cuando el destino es AnalyticDB for MySQL. |
|
|
La política global de resolución de conflictos a nivel de tarea. Debe incluirse en cada base de datos que se vaya a sincronizar con el mismo valor. Valores válidos:
|
|
|
La política independiente de resolución de conflictos a nivel de tabla. Solo es compatible con la sincronización incremental. Valores válidos:
|
|
|
|
|
|
Ejemplos de configuración
-
Ejemplo 1: migrar, sincronizar o suscribir todas las tablas de la base de datos dtstestdata.
{"dtstestdata": { "name": "dtstestdata", "all": true }} -
Ejemplo 2: migrar o sincronizar la base de datos dtstestdata y cambiarle el nombre a dtstestdata_new.
{"dtstestdata": { "name": "dtstestdata_new", "all": true }} -
Ejemplo 3: migrar, sincronizar o suscribir tablas específicas (como customer) de la base de datos dtstestdata.
{"dtstestdata": { "name": "dtstestdata", "all": false, "Table": { "customer": { "name": "customer", "all": true, "column": { "id": { "key": "PRI", "name": "id", "type": "int(11)", "sharedKey": false, "state": "checked" }, "gmt_create": { "key": "", "name": "gmt_create", "type": "datetime", "sharedKey": false, "state": "checked" }, "gmt_modify": { "key": "", "name": "gmt_modify", "type": "datetime", "sharedKey": false, "state": "checked" }, "valid_time": { "key": "", "name": "valid_time", "type": "datetime", "sharedKey": false, "state": "checked" }, "creator": { "key": "", "name": "creator", "type": "varchar(200)", "sharedKey": false, "state": "checked" } }, "shard": 12 } } } } -
Ejemplo 4: migrar o sincronizar columnas específicas de algunas tablas (como customer y order) de la base de datos dtstestdata.
{"dtstestdata": { "name": "dtstestdata", "all": false, "Table": { "customer": { "name": "customer", "all": false, "column": { "id": { "key": "PRI", "name": "id", "type": "int(11)", "sharedKey": false, "state": "checked" }, "level": { "key": "", "name": "level", "type": "varchar(5000)", "sharedKey": false, "state": "checked" }, "name": { "key": "", "name": "name", "type": "varchar(500)", "sharedKey": false, "state": "checked" }, }, "shard": 12 }, "order": { "name": "order", "all": false, "column": { "id": { "key": "PRI", "name": "id", "type": "int(11)", "sharedKey": false, "state": "checked" } }, "shard": 12 } } } } -
Ejemplo 5: migrar o sincronizar tablas (como customer, order y commodity) de la base de datos dtstestdata hacia una instancia de destino AnalyticDB for MySQL o AnalyticDB for PostgreSQL.
{ "dtstestdata": { "name": "dtstestdatanew", "all": false, "Table": { "order": { "name": "ordernew", "all": true, "part_key": "id", "primary_key": "id", "type": "partition" }, "customer": { "name": "customernew", "all": true, "primary_key": "id", "type": "dimension" }, "commodity": { "name": "commoditynew", "all": false, "filter": "id>10", "column": { "id": { "key": "PRI", "name": "id", "type": "int(11)" } }, "part_key": "id", "primary_key": "id", "type": "partition" } } } } -
Ejemplo 6: establecer políticas de resolución de conflictos independientes para los objetos de sincronización.
Configuración a nivel de tabla
Establezca la política global de resolución de conflictos para los objetos de la tarea de sincronización en
interrupt. Luego, configure la política independiente de resolución de conflictos para las columnas de clave primaria, las columnas de clave única y la columnanamede la tabla customer en la base de datos dtstestdata2 con el valoroverwrite.{ "dtstestdata1": { "name": "dtstestdata1", "all": true, "conflict": "interrupt" }, "dtstestdata2": { "name": "dtstestdata2", "all": false, "conflict": "interrupt", "Table": { "customer": { "name": "customer", "all": true, "cdr_cmp_col": "name", "cdr_rslv_col": "name", "resolve_method": "overwrite" } } } }Configuración a nivel de base de datos
-
Cuando el objeto de sincronización es una base de datos completa: establezca la política independiente de resolución de conflictos para las columnas
nameyaddrde todas las tablas que se van a sincronizar en la base de datos dtstestdata1 con el valoruse_max."dtstestdata1": { "name": "dtstestdata1", "all": true, "conflict": "overwrite", "cdr_cmp_col": "name,addr", "cdr_rslv_col": "name,addr", "resolve_method": "use_max" } } -
Cuando el objeto de sincronización no es una base de datos completa: establezca la política independiente de resolución de conflictos para las columnas
nameyaddrde todas las tablas que se van a sincronizar en la base de datos dtstestdata2 con el valoruse_max."dtstestdata2": { "name": "dtstestdata2", "all": false, "conflict": "overwrite", "cdr_cmp_col": "name,addr", "cdr_rslv_col": "name,addr", "resolve_method": "use_max", "Table": { "person": { "name": "person", "all": true }, "class": { "name": "class", "all": true } } }
-
-
Ejemplo 7: en una instancia de sincronización cuyo tipo de base de datos de origen es Tair/Redis, sincronice únicamente los datos con el prefijo de clave
HPropde las bases de datos denominadas 0 y 1 (es decir, donde Prefixes of Keys to Be Synchronized esHProp). Para la base de datos denominada 2, sincronice solo los datos con el prefijo de clavedts, pero excluyadtstest(es decir, donde Prefixes of Keys to Be Synchronized esdtsy Prefixes of Keys to Be Filtered Out esdtstest).{ "0": { "name": "0", "all": true, "filter": "[{"condition":"HProp","filterType":"white","filterPattern":"prefix"}]" }, "1": { "name": "1", "all": true, "filter": "[{"condition":"HProp","filterType":"white","filterPattern":"prefix"}]" }, "2": { "name": "2", "all": true, "filter": "[{"condition":"dts","filterType":"white","filterPattern":"prefix"},{"condition":"dtstest","filterType":"black","filterPattern":"prefix"}]" } } -
Ejemplo 8: integrar la tabla commodity de la base de datos dtstestdata en el destino OSS con formato Delta.
{ "dtstestdata(": { "all": false, "Table": { "commodity": { "all": false(), "filter": "", "write_operation": "overwrite", "name": "commodity", "column": { "IS_VALID": { "name": "is_valid", "targetType": "String" }, "BuiltinArchiveDate": { "name": "builtinarchivedate", "targetType": "String" }, "PRODUCT_NAME": { "name": "product_name", "targetType": "String" }, "PRODUCT_CODE": { "name": "product_code", "targetType": "String" }, "etl_date": { "syntacticType": "ADD", "name": "etl_date", "type": "String", "value": "'2025-07-08 03:30:00'" } }, "part_key": "dt=2025-07-07" } }, "name": "dtstestdata" } }