El origen de datos ApsaraDB for OceanBase permite leer datos de ApsaraDB for OceanBase y escribir datos en él. Use este origen de datos para configurar tareas de sincronización de datos en DataWorks. Este tema describe las funciones para sincronizar datos con ApsaraDB for OceanBase.
Versiones compatibles
ApsaraDB for OceanBase Reader y ApsaraDB for OceanBase Writer admiten las siguientes versiones de OceanBase para operaciones de lectura y escritura por lotes:
OceanBase 2.x
OceanBase 3.x
OceanBase 4.x
Todas las versiones anteriores hacen referencia a ApsaraDB for OceanBase, el servicio administrado de Alibaba Cloud. OceanBase Community Edition (CE) no es compatible. Para sincronizar datos desde una instancia de OceanBase Community Edition autogestionada, primero use Data Transmission Service (DTS) para migrar los datos a ApsaraDB RDS for MySQL y, después, use DataWorks para sincronizar los datos a AnalyticDB for MySQL.
Limitaciones
Lectura por lotes
ApsaraDB for OceanBase admite los modos de inquilino Oracle y MySQL. Cuando configure la cláusula where para el filtrado de datos o columnas de función en el parámetro column, asegúrese de que la sintaxis cumpla las restricciones SQL del modo de inquilino correspondiente. De lo contrario, la sentencia SQL puede fallar.
Puede leer datos de una vista.
Durante una lectura por lotes, no modifique los datos que se están sincronizando. Esto evita problemas de calidad de datos, como duplicación o pérdida de datos.
Si configura el origen de datos para Read by Partition, la cuenta utilizada para acceder al origen de datos requiere permisos de system.
Escritura por lotes
La tarea de sincronización requiere, como mínimo, permisos de insert into.... Es posible que se requieran otros permisos según las sentencias que especifique en los parámetros preSql y postSql.
Se recomienda usar el método batch para escribir datos. Este método envía una solicitud de escritura solo cuando la cantidad de filas acumuladas alcanza un umbral predefinido.
ApsaraDB for OceanBase admite los modos de inquilino Oracle y MySQL. Cuando configure los parámetros preSql y postSql, asegúrese de que la sintaxis cumpla las restricciones SQL del modo de inquilino correspondiente. De lo contrario, la sentencia SQL puede fallar.
Lectura en tiempo real
Esta función solo admite el modo de inquilino MySQL de OceanBase.
Para sincronizar datos en tiempo real, habilite la función binlog. Para obtener más información, consulte Binlog-related operations (Alibaba Cloud instances), Operaciones relacionadas con Binlog (instancias de OB Cloud).
Las tareas de sincronización en tiempo real de base de datos completa no admiten orígenes de datos en modo de cadena de conexión.
Para las tareas de sincronización en tiempo real de base de datos completa, la versión de la base de datos debe ser V3.0 o posterior.
OceanBase es una base de datos relacional distribuida que puede integrar datos de varias bases de datos distribuidas físicamente en una sola base de datos lógica. Sin embargo, la sincronización en tiempo real de datos de OceanBase a AnalyticDB for MySQL actualmente solo admite datos de una sola base de datos física. No se admite la sincronización de datos desde una base de datos lógica.
Preparativos antes de la sincronización de datos
Antes de sincronizar datos en DataWorks, prepare el entorno de ApsaraDB for OceanBase como se describe en este tema. Esto garantiza que las tareas de sincronización de datos de ApsaraDB for OceanBase se puedan configurar y ejecutar correctamente en DataWorks. Las siguientes secciones describen los preparativos obligatorios.
Configure una lista de permitidos
Agregue el bloque CIDR de VPC del Serverless resource group o del resource group exclusivo para Data Integration a la lista de permitidos de OceanBase. Para obtener más información, consulte Add allowlist entries.
Cree una cuenta y configure permisos
Debe crear una cuenta de base de datos para las operaciones posteriores. Esta cuenta debe tener los permisos obligatorios en OceanBase. Para obtener más información, consulte Create an account and configure permissions.
Agregar un origen de datos
Antes de desarrollar una tarea de sincronización en DataWorks, debe agregar el origen de datos obligatorio a DataWorks siguiendo las instrucciones de Data source configuration. Consulte las descripciones de los parámetros en la consola de DataWorks para comprender el significado de los parámetros cuando agrega un origen de datos.
Desarrollar tareas de sincronización de datos
Para obtener información sobre el punto de entrada y el procedimiento para configurar una tarea de sincronización, consulte las siguientes guías de configuración.
Sincronización por lotes de una sola tabla
Orígenes compatibles: todos los tipos de origen de datos admitidos por el módulo Data Integration
Guía de configuración: Configure a batch synchronization task
Sincronización en tiempo real de una sola tabla
Orígenes compatibles: Kafka
Guía de configuración: Configure a real-time synchronization task
Sincronización en tiempo real de base de datos completa
Orígenes compatibles: MySQL
Guía de configuración: Configure a real-time synchronization task
Apéndice: ejemplos de scripts y descripciones de parámetros
Configure una tarea de sincronización por lotes mediante el editor de código
Si desea configurar una tarea de sincronización por lotes mediante el editor de código, debe configurar los parámetros relacionados en el script según los requisitos del formato unificado de script. Para obtener más información, consulte Script mode configuration. La siguiente información describe los parámetros que debe configurar para los orígenes de datos cuando configura una tarea de sincronización por lotes mediante el editor de código.
Ejemplo de script de Reader
{ "type": "job", "steps": [ { "stepType": "apsaradb_for_OceanBase", // The plug-in name. "parameter": { "datasource": "", // The data source name. "where": "", "column": [ // The columns. "id", "name" ], "splitPk": "" }, "name": "Reader", "category": "reader" }, { "stepType": "stream", "parameter": { "print": false, "fieldDelimiter": "," }, "name": "Writer", "category": "writer" } ], "version": "2.0", "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] }, "setting": { "errorLimit": { "record": "0" // The error count. }, "speed": { "throttle": true, // Specifies whether to enable throttling. A value of false indicates that throttling is disabled and the mbps parameter does not take effect. A value of true indicates that throttling is enabled. "concurrent": 1, // The concurrency. "mbps":"12" // The throttling rate. 1 mbps = 1 MB/s. } } }
Parámetros del script de Reader
|
Parámetro |
Descripción |
Obligatorio |
Valor predeterminado |
|
datasource |
Si la edición de DataWorks que utiliza admite agregar orígenes de datos ApsaraDB for OceanBase, puede hacer referencia a un origen de datos ApsaraDB for OceanBase agregado por su nombre. Hay dos métodos de configuración disponibles: jdbcUrl y username. |
Sí |
N/A |
|
jdbcUrl |
La información de conexión JDBC de la base de datos de destino. Use una matriz JSON para la descripción. Puede especificar varias direcciones de conexión para una sola base de datos. Si se configuran varias direcciones, ApsaraDB for OceanBase Reader prueba la conectividad de cada dirección IP en secuencia hasta encontrar una válida. Si todas las conexiones fallan, ApsaraDB for OceanBase Reader informa un error. Nota
jdbcUrl debe incluirse en la unidad de configuración connection. Según la especificación oficial de ApsaraDB for OceanBase, jdbcUrl puede incluir información adicional de control de conexión. Por ejemplo, |
No |
N/A |
|
username |
El nombre de usuario del origen de datos. |
No |
N/A |
|
password |
La contraseña del nombre de usuario especificado para el origen de datos. |
No |
N/A |
|
table |
Las tablas que se sincronizarán. Use una matriz JSON para la descripción. Puede leer datos de varias tablas al mismo tiempo. Cuando se configuran varias tablas, asegúrese de que todas las tablas tengan el mismo esquema. ApsaraDB for OceanBase Reader no comprueba la coherencia del esquema entre tablas. Nota
table debe incluirse en la unidad de configuración connection. |
Sí |
N/A |
|
column |
Las columnas que se sincronizarán de las tablas configuradas. Use una matriz JSON para describir la información de columnas. De forma predeterminada, se usan todas las columnas; por ejemplo, [*].
|
Sí |
N/A |
|
splitPk |
Si especifica splitPk cuando ApsaraDB for OceanBase Reader extrae datos, los datos se dividen según la columna especificada por splitPk. Luego, el sistema de sincronización de datos inicia tareas simultáneas para mejorar la eficiencia de sincronización.
|
No |
Vacío |
|
where |
ApsaraDB for OceanBase Reader ensambla una sentencia SQL basado en los parámetros column, table y where especificados, y luego usa la sentencia SQL ensamblada para extraer datos. Por ejemplo, durante las pruebas, puede establecer la condición where en limit 10. En escenarios empresariales reales, normalmente sincroniza los datos generados en el día actual estableciendo la condición where en
|
No |
N/A |
|
querySql |
En algunos escenarios empresariales, el parámetro where puede no ser suficiente para describir las condiciones de filtro obligatorias. Puede usar este parámetro para definir una sentencia SQL de filtro personalizada. Cuando este parámetro se configura, el sistema de sincronización de datos ignora los parámetros tables, columns y splitPk, y usa la sentencia SQL configurada para filtrar datos. Cuando configura querySql, ApsaraDB for OceanBase Reader ignora los parámetros table, column, where y splitPk. |
No |
N/A |
|
fetchSize |
Este parámetro especifica el número de filas recuperadas por lote entre el complemento y el servidor de base de datos. Este valor determina el número de interacciones de red entre el sistema de sincronización de datos y el servidor, y puede mejorar significativamente el rendimiento de la extracción de datos. Nota
Un valor de fetchSize demasiado grande (>2048) puede causar un error de memoria insuficiente (OOM) en el proceso de sincronización de datos. |
No |
1,024 |
Ejemplo de script de Writer
{ "type":"job", "version":"2.0", // The version number. "steps":[ { "stepType":"stream", "parameter":{}, "name":"Reader", "category":"reader" }, { "stepType":"apsaradb_for_OceanBase", // The plug-in name. "parameter":{ "datasource": "Data source name", "column": [ // The columns. "id", "name" ], "table": "apsaradb_for_OceanBase_table", // The table name. "preSql": [ // The SQL statements to execute before the data synchronization task runs. "delete from @table where db_id = -1" ], "postSql": [ // The SQL statements to execute after the data synchronization task runs. "update @table set db_modify_time = now() where db_id = 1" ], "obWriteMode": "insert", }, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0" // The error count. }, "speed":{ "throttle":true, // Specifies whether to enable throttling. A value of false indicates that throttling is disabled and the mbps parameter does not take effect. A value of true indicates that throttling is enabled. "concurrent":1, // The concurrency. "mbps":"12" // The throttling rate. 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }
Parámetros del script de Writer
|
Parámetro |
Descripción |
Obligatorio |
Valor predeterminado |
|
datasource |
Si la edición de DataWorks que utiliza admite agregar orígenes de datos ApsaraDB for OceanBase, puede hacer referencia a un origen de datos ApsaraDB for OceanBase agregado por su nombre. Hay dos métodos de configuración disponibles: jdbcUrl y username. |
No |
N/A |
|
jdbcUrl |
La información de conexión JDBC de la base de datos de destino. jdbcUrl se incluye en la unidad de configuración connection.
|
Sí |
N/A |
|
username |
El nombre de usuario del origen de datos. |
Sí |
N/A |
|
password |
La contraseña del nombre de usuario especificado para el origen de datos. |
Sí |
N/A |
|
table |
El nombre de la tabla en la que se escriben los datos. Use una matriz JSON para la descripción. Nota
table debe incluirse en la unidad de configuración connection. |
Sí |
N/A |
|
column |
Las columnas de la tabla de destino en las que se escriben los datos. Separe los nombres de columnas con comas (,). Por ejemplo, Nota
El parámetro column debe especificarse y no puede dejarse vacío. |
Sí |
N/A |
|
obWriteMode |
El modo que se usa para escribir datos en la tabla de destino. Este parámetro es opcional.
|
No |
insert |
|
onClauseColumns |
Nota
Se usa en el modo de inquilino Oracle. Este parámetro es obligatorio cuando Establezca este parámetro en columnas de clave principal o columnas de restricción única. Separe varias columnas con comas (,). Por ejemplo, |
No |
N/A |
|
obUpdateColumns |
Nota
Este parámetro surte efecto cuando Las columnas que se actualizarán cuando se produzca un conflicto de escritura. Separe varias columnas con comas (,). Por ejemplo, |
No |
Todas las columnas |
|
preSql |
Las sentencias SQL estándar que se ejecutarán antes de escribir datos en la tabla de destino. Si necesita hacer referencia al nombre de la tabla en las sentencias SQL, use |
No |
N/A |
|
postSql |
Las sentencias SQL estándar que se ejecutarán después de escribir datos en la tabla de destino. |
No |
N/A |
|
batchSize |
El número de registros que se enviarán en cada lote. Este valor puede reducir significativamente el número de interacciones de red entre el sistema de sincronización de datos y el servidor, y mejorar el rendimiento general. Nota
Un valor de fetchSize demasiado grande (>2048) puede causar un error de memoria insuficiente (OOM) en el proceso de sincronización de datos. |
No |
1,024 |