Un origen de datos DRDS (PolarDB-X 1.0) permite leer y escribir datos en DRDS (PolarDB-X 1.0). Este tema describe las capacidades de sincronización de datos de DataWorks para este origen de datos.
Primeros pasos
Para comenzar a sincronizar datos con DRDS (PolarDB-X 1.0), complete estos pasos en orden:
Cree una cuenta de base de datos con el permiso
replace into. Consulte Requisitos previos.Agregue DRDS (PolarDB-X 1.0) como origen de datos en DataWorks. Consulte Agregar un origen de datos.
Configure y ejecute una tarea de sincronización. Consulte Desarrollar una tarea de sincronización de datos.
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Una cuenta de base de datos DRDS (PolarDB-X 1.0) con el permiso
replace into. Para obtener instrucciones de configuración, consulte Create an account.
Limitaciones
Lectura y escritura sin conexión
El plugin de DRDS (PolarDB-X 1.0) solo es compatible con el motor MySQL. DRDS (PolarDB-X 1.0) es una base de datos MySQL distribuida y la mayoría de sus protocolos de comunicación siguen los estándares de MySQL.
MySQL 8.0 en DRDS (PolarDB-X 1.0) admite Serverless resource groups (recommended) y exclusive resource groups for Data Integration.
DRDS (PolarDB-X 1.0) Writer se conecta al proxy de una base de datos DRDS (PolarDB-X 1.0) remota mediante Java Database Connectivity (JDBC) y ejecuta sentencias
replace intopara escribir datos. La tabla de destino debe tener una clave primaria o un índice único para evitar escrituras duplicadas.-
DRDS (PolarDB-X 1.0) Writer recupera datos de un Reader a través del framework de sincronización de datos y luego los escribe mediante sentencias
replace into: El Writer acumula datos y los confirma en el proxy de DRDS (PolarDB-X 1.0), que determina si debe enrutar los datos a una o varias tablas.Si no hay conflicto de clave primaria o índice único, el comportamiento equivale a
insert into.Si ocurre un conflicto, la nueva fila reemplaza todos los campos de la fila existente.
NotaLa tarea requiere como mínimo el permiso
replace into. Los permisos adicionales dependen de las sentencias SQL especificadas enpreSqlypostSql. Se admite la lectura desde vistas.
Tipos de campo compatibles
DRDS (PolarDB-X 1.0) Reader y Writer admiten la mayoría de los tipos de datos. Compruebe que sus tipos de datos se encuentren en la siguiente lista antes de configurar una tarea de sincronización.
|
Categoría de tipo |
Tipos de datos de DRDS (PolarDB-X 1.0) |
|
Tipos enteros |
INT, TINYINT, SMALLINT, MEDIUMINT, BIGINT |
|
Tipos de punto flotante |
FLOAT, DOUBLE, DECIMAL |
|
Tipos de cadena |
VARCHAR, CHAR, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT |
|
Tipos de fecha y hora |
DATE, DATETIME, TIMESTAMP, TIME, YEAR |
|
Tipos booleanos |
BIT, BOOL |
|
Tipos binarios |
TINYBLOB, MEDIUMBLOB, BLOB, LONGBLOB, VARBINARY |
Agregar un origen de datos
Antes de desarrollar una tarea de sincronización en DataWorks, agregue DRDS (PolarDB-X 1.0) como origen de datos. Siga las instrucciones en Gestión de orígenes de datos. Las descripciones de los parámetros están disponibles en la consola de DataWorks cuando agrega el origen de datos.
Desarrollar una tarea de sincronización de datos
Configurar una tarea de sincronización sin conexión para una sola tabla
Configure la tarea mediante la interfaz gráfica sin código o el editor de código. Consulte Configure a task in the codeless UI y Configure a task in the code editor.
Para obtener una referencia completa de parámetros y ejemplos de scripts, consulte Appendix: Script demo and parameters.
Configurar una tarea de sincronización sin conexión para una base de datos completa
Consulte Configure an offline sync task for an entire database.
Preguntas frecuentes
¿Por qué DRDS (PolarDB-X 1.0) Reader no puede garantizar la consistencia de datos entre particiones?
DRDS (PolarDB-X 1.0) es una base de datos distribuida. Cuando el Reader extrae datos de diferentes tablas particionadas subyacentes, captura instantáneas en distintos puntos temporales, no desde un único intervalo de tiempo consistente. No se puede garantizar una consistencia estricta entre bases de datos y tablas particionadas.
¿Cómo afecta la codificación a la sincronización de datos?
DRDS (PolarDB-X 1.0) admite configuraciones de codificación a nivel de campo, tabla, base de datos e instancia. La prioridad de la configuración de codificación, de mayor a menor, es: campo, tabla, base de datos e instancia. Establezca la codificación en UTF-8 a nivel de base de datos para evitar problemas.
DRDS (PolarDB-X 1.0) Reader utiliza JDBC para la extracción de datos, lo cual gestiona automáticamente la conversión de codificación. Sin embargo, si la codificación utilizada al escribir datos en la capa subyacente difiere de la codificación declarada, el Reader no detectará la discrepancia y el resultado de la sincronización podría contener caracteres ilegibles.
¿Cómo configuro la sincronización incremental de datos?
DRDS (PolarDB-X 1.0) Reader utiliza sentencias JDBC SELECT para la extracción de datos. Utilice una cláusula WHERE para filtrar únicamente los registros agregados o modificados desde la última sincronización:
Basado en marca de tiempo: Si su aplicación escribe un campo
modifycon una marca de tiempo de cambio para cada registro (que cubra adiciones, actualizaciones o eliminaciones lógicas), agregue una cláusulaWHEREque utilice la marca de tiempo de la última ejecución de sincronización.Basado en ID autoincremental: Para flujos de datos de solo anexión, agregue una cláusula
WHEREque utilice el ID autoincremental máximo de la sincronización anterior.
Si sus datos no tienen ningún campo que distinga los registros nuevos o modificados de los existentes, el Reader no podrá realizar la extracción incremental; solo estará disponible la sincronización completa de datos.
No se admiten condiciones de filtro basadas en nombres de tablas físicas en la cláusula WHERE.
Apéndice: Demostración de script y parámetros
Para configurar una tarea de sincronización por lotes mediante el editor de código, siga el formato de script unificado descrito en Configure a task in the code editor. Las siguientes secciones describen los parámetros y proporcionan ejemplos de scripts.
Demostración de script de Reader
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "drds",
"parameter": {
"datasource": "",
"column": [
"id",
"name"
],
"where": "",
"table": "",
"splitPk": ""
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "stream",
"parameter": {},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle": true,
"concurrent": 1,
"mbps": "12"
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
Parámetros del script de Reader
|
Parámetro |
Descripción |
Obligatorio |
Valor predeterminado |
|
|
El nombre del origen de datos. El valor debe coincidir con el nombre del origen de datos agregado en DataWorks. |
Sí |
Ninguna |
|
|
La tabla desde la cual sincronizar datos. |
Sí |
Ninguna |
|
|
Las columnas a sincronizar, especificadas como un arreglo JSON. Utilice |
Sí |
Ninguna |
|
|
La condición de filtro utilizada para construir la sentencia |
No |
Ninguna |
|
|
La clave de partición utilizada para lecturas paralelas. |
No |
Ninguna |
Demostración de script de Writer
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "drds",
"parameter": {
"postSql": [],
"datasource": "",
"column": [
"id"
],
"writeMode": "insert ignore",
"batchSize": "1024",
"table": "test",
"preSql": []
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle": true,
"concurrent": 1,
"mbps": "12"
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
Parámetros del script de Writer
|
Parámetro |
Descripción |
Obligatorio |
Valor predeterminado |
|
|
El nombre del origen de datos. El valor debe coincidir con el nombre del origen de datos agregado en DataWorks. |
Sí |
Ninguna |
|
|
La tabla de destino en la que se escriben los datos. |
Sí |
Ninguna |
|
|
El modo de escritura. Valores válidos: |
No |
|
|
|
Las columnas de destino donde escribir datos, especificadas como una lista separada por comas. Ejemplo: |
Sí |
Ninguna |
|
|
Sentencias SQL a ejecutar antes de que inicie la tarea de sincronización. En la interfaz gráfica sin código, solo se admite una sentencia. En el editor de código, se admiten varias sentencias. Ejemplo: |
No |
Ninguna |
|
|
Sentencias SQL a ejecutar después de que finalice la tarea de sincronización. En la interfaz gráfica sin código, solo se admite una sentencia. En el editor de código, se admiten varias sentencias. Ejemplo: |
No |
Ninguna |
|
|
El número de registros a confirmar por lote. Valores más grandes reducen los ciclos de red y mejoran el rendimiento, pero valores muy grandes pueden causar errores de memoria insuficiente (OOM). |
No |
|