Si una tarea de migración de datos permanece inactiva durante un periodo prolongado (con estado Failed, Paused o Completed), es posible que no se pueda reanudar debido a factores como el periodo de retención de los registros incrementales. Para liberar recursos, Data Transmission Service libera las tareas de migración de datos que han estado inactivas por más de tres días. Se recomienda configurar alertas para sus tareas y atender cualquier excepción de manera oportuna.
Contexto
¿Qué es la sincronización bidireccional?
Durante la sincronización incremental de datos, puede configurar tareas de migración en ambos sentidos para el mismo origen de datos con el fin de sincronizar la información entre el origen y el destino. Se utiliza un mecanismo de prevención de replicación cíclica para evitar que los datos ya sincronizados en una dirección se vuelvan a sincronizar repetidamente mediante una tarea en sentido inverso.
La sincronización bidireccional no admite escrituras simultáneas en el origen y el destino. Si una aplicación escribe al mismo tiempo los mismos datos, identificados por la misma clave principal o única, tanto en el origen como en el destino, debe definir una estrategia de resolución de conflictos (sobrescribir o ignorar) para la tarea de sincronización bidireccional. Se recomienda evitar que una aplicación escriba simultáneamente los mismos datos en el origen y el destino.
Migration types that support two-way synchronization
The data transmission service supports two-way data synchronization between a MySQL database and an OceanBase database in MySQL-compatible mode, between an Oracle database and an OceanBase database in Oracle-compatible mode, and between OceanBase databases. For more information about the limitations and considerations, see the topics about the corresponding types of data migration.Migrate data from a MySQL database to an OceanBase database in MySQL-compatible mode
Migrate data from an OceanBase database in MySQL-compatible mode to a MySQL database
Migrate data from an Oracle database to an OceanBase database in Oracle-compatible mode
Migrate data from an OceanBase database in Oracle-compatible mode to an Oracle database
Sentencias para otorgar privilegios en un origen de datos MySQL
Para realizar una sincronización bidireccional entre una base de datos MySQL y una base de datos OceanBase, debe otorgar los privilegios CREATE DATABASE y CREATE TABLE a la cuenta de base de datos en el origen de datos MySQL de la tarea actual. También debe crear una base de datos de transacciones y una tabla de transacciones para evitar la replicación cíclica entre las dos partes involucradas en la sincronización bidireccional. De lo contrario, la tarea de sincronización bidireccional podría presentar anomalías.
-
Otorgar el privilegio global de creación de bases de datos
GRANT CREATE ON *.* TO '<user_name>' ; -
Otorgar el privilegio para crear tablas en la base de datos oms
GRANT CREATE ON oms.* TO '<user_name>'
Sentencias para crear un esquema y otorgar privilegios en un origen de datos Oracle
Para realizar una sincronización bidireccional entre una base de datos Oracle y una base de datos OceanBase, debe crear un esquema llamado OMS en el origen de datos Oracle de la tarea actual y otorgar el privilegio CREATE TABLE sobre el esquema OMS a la cuenta de base de datos en este origen. De lo contrario, la tarea de sincronización bidireccional podría presentar anomalías.
-
Crear un usuario OMS
CREATE USER OMS IDENTIFIED BY <YOUR_PASSWORD> DEFAULT TABLESPACE <tablespace>; // Replace YOUR_PASSWORD with the actual user password. ALTER USER OMS QUOTA unlimited ON <tablespace specified in the previous step>; ALTER USER <data source user> QUOTA unlimited ON <tablespace specified in the previous step>; -
Otorgar privilegios
GRANT CREATE ANY TABLE TO <YOUR_USERNAME>; GRANT INSERT ANY TABLE TO <YOUR_USERNAME>; GRANT UPDATE ANY TABLE TO <YOUR_USERNAME>; GRANT DELETE ANY TABLE TO <YOUR_USERNAME>; GRANT SELECT ANY TABLE TO <YOUR_USERNAME>;
Consideraciones
Una tarea de sincronización bidireccional consta de una tarea directa y una tarea inversa.
Tipo | Descripción |
Tarea directa |
|
Tarea inversa |
|
Otras consideraciones |
|
Escenarios de conflicto de datos
To ensure data consistency in two-way synchronization, make sure that data operations on the same primary key or non-null unique key are performed only at the source or target. If data is simultaneously updated at the source and target, data conflicts may occur, including the following scenarios.-
Conflicto de clave única en operaciones INSERT
Si una aplicación ejecuta operaciones INSERT sobre la misma clave única en el origen y el destino aproximadamente al mismo tiempo, la operación INSERT en el destino fallará debido a la restricción UNIQUE durante la sincronización. Puede configurar la tarea para que ignore los datos en conflicto o sobrescriba los datos en el destino.
-
Conflicto de clave única en operaciones UPDATE
Si los datos que se van a actualizar mediante una operación UPDATE ya existen en el destino, los datos del destino se sobrescriben con los datos del origen.
Si los datos que se van a actualizar mediante una operación UPDATE no existen en el destino, la operación UPDATE falla.
Si una operación UPDATE provoca un conflicto de clave principal o clave única en el destino, la operación UPDATE falla.
-
Conflicto de clave única en operaciones DELETE
Si los datos que se van a eliminar mediante una operación DELETE no existen, la operación DELETE falla.
Procedimiento
Configurar una tarea directa
-
Configure a data migration task as prompted to proceed to the Select Migration Type step, y establezca Synchronous Topology to Bidirectional Synchronization.
Para obtener más información, consulte los temas correspondientes a los tipos de data migration.

-
En la página Select Migration Type, especifique los tipos de migración para la tarea de migración de datos.
La sincronización bidireccional admite los siguientes tipos de migración: Schema Migration, Full Migration, Incremental synchronization y Full Verification.

Tipo de migración
Descripción
Migración de esquemas
Una vez iniciada la tarea de migración de esquemas, el servicio de transmisión de datos migra las definiciones de objetos de base de datos, como tablas, índices, restricciones, comentarios y vistas, desde la base de datos de origen hacia la base de datos de destino, y filtra automáticamente las tablas temporales.
Migración completa
Una vez iniciada la tarea de migración completa, el servicio de transmisión de datos migra los datos existentes de las tablas en la base de datos de origen hacia las tablas correspondientes en la base de datos de destino.
Sincronización incremental
Una vez iniciada la tarea de sincronización incremental, el servicio de transmisión de datos sincroniza los datos modificados (datos agregados, modificados o eliminados) desde la base de datos de origen hacia las tablas correspondientes en la base de datos de destino.
Las opciones para Incremental Synchronization son DML Synchronization y DDL Synchronization. Puede seleccionar las opciones según sea necesario. Para obtener más información, consulte Configure DDL/DML synchronization.
NotaEn la sincronización bidireccional, la opción DML Synchronization debe estar seleccionada.
En la sincronización bidireccional, la sincronización DDL solo es compatible con la tarea directa.
Verificación completa
Una vez completadas las tareas de migración completa y sincronización incremental, el servicio de transmisión de datos inicia automáticamente una tarea de verificación completa para validar las tablas en las bases de datos de origen y destino.
-
Haga clic en Next. En la página Select Migration Objects, seleccione los objetos para la tarea de migración de datos.
Puede seleccionar objetos de migración mediante dos métodos: Specify Objects y Matching Rules. Este tema describe cómo seleccionar objetos de migración mediante el método Specify Objects. Para obtener más información sobre cómo configurar reglas de coincidencia, consulte Configure and modify matching rules.
ImportanteLos nombres de las tablas que se van a migrar y las columnas de dichas tablas no pueden contener caracteres chinos.
Si el nombre de una base de datos o tabla contiene los caracteres "$$", la creación de la tarea de migración de datos podría fallar.
Si selecciona DDL Synchronization en el paso Select Migration Type, se recomienda utilizar reglas de coincidencia para seleccionar los objetos de migración. Esto garantiza que todos los objetos nuevos que coincidan con las reglas se sincronicen. Si selecciona los objetos de migración individualmente, los objetos nuevos o renombrados no se sincronizarán.

En la sección Select Migration Objects, seleccione Specify Objects.
In the Select Migration Scope area, in the Source Objects list, select the objects to migrate. You can select tables and views from one or more databases to migrate.
Click > to add them to the Destination Objects list.
Data Transmission Service permite importar objetos desde archivos de texto. También permite renombrar objetos de destino, establecer filtros de filas, consultar información de columnas y quitar un objeto individual o todos los objetos.
NotaCuando selecciona objetos de migración mediante el método Matching Rules, la sintaxis de la regla de coincidencia anula la capacidad de cambio de nombre, y la sección Actions se limita a establecer condiciones de filtro. Para obtener más información, consulte Configure and modify matching rules.
Operación
Descripción
Importar objeto
En la lista situada a la derecha del área de selección, haga clic en Import Object en la esquina superior derecha.
En el cuadro de diálogo que aparece, haga clic en OK.
ImportanteLa operación de importación sobrescribe las selecciones anteriores. Proceda con precaución.
En el cuadro de diálogo Import Migration Objects, importe los objetos que se van a migrar.
Puede importar un archivo CSV para cambiar el nombre de tablas de bases de datos, establecer condiciones de filtrado de filas y realizar otras operaciones. Para obtener más información, consulte Download and import migration object configurations.
Haga clic en Check Validity.
Después de importar los objetos de migración, compruebe primero su validez. Actualmente no se admite la asignación de campos de columna.
Una vez superada la comprobación, haga clic en OK.
Cambiar nombre
Data Transmission Service permite cambiar el nombre de los objetos de migración. Para obtener más información, consulte Rename database and table objects.
Configuración
Data Transmission Service admite el filtrado de filas mediante condiciones
WHERE. Para obtener más información, consulte Filter data with SQL conditions.También puede consultar la información de columnas de los objetos de migración en el área View Columns.
Quitar/Quitar todo
Data Transmission Service permite quitar uno o varios objetos que se hayan seleccionado temporalmente para el destino durante la asignación de datos.
Quitar un único objeto de migración
En la lista situada a la derecha del área de selección, pase el cursor sobre el objeto de destino y haga clic en el botón Remove que se muestra para quitar el objeto de migración.
Quitar todos los objetos de migración
En la lista situada a la derecha del área de selección, haga clic en Remove All en la esquina superior derecha. En el cuadro de diálogo que aparece, haga clic en OK para quitar todos los objetos de migración.
-
Haga clic en Next. En la página Migration Options, configure los parámetros.
-
Migración completa
La siguiente tabla describe los parámetros para la migración completa, los cuales se muestran únicamente si ha seleccionado Bidirectional Synchronization y Full Migration en la página Select Migration Type.

Parámetro
Descripción
Read Concurrency
La concurrencia para leer datos del origen durante la migración completa. El valor máximo es 512. Una concurrencia de lectura alta puede generar una carga excesiva en el origen y afectar al negocio.
Write Concurrency
La concurrencia para escribir datos en el destino durante la migración completa. El valor máximo es 512. Una concurrencia de escritura alta puede generar una carga excesiva en el destino y afectar al negocio.
Full Migration Rate Limit
Puede elegir si desea limitar la tasa de migración completa según sea necesario. Si decide limitarla, debe especificar los registros por segundo (RPS) y los bytes por segundo (BPS). El valor RPS indica el número máximo de filas de datos migradas al destino por segundo durante la migración completa, y el valor BPS indica la cantidad máxima de datos en bytes migrados al destino por segundo durante la migración completa.
NotaLos valores RPS y BPS especificados aquí son únicamente para limitación de velocidad. El rendimiento real de la migración completa depende de factores como la configuración del origen y del destino, así como de las especificaciones de la instancia.
Handle Non-empty Tables in Target Database
Los valores válidos son Ignore y Stop Migration.
Si selecciona Ignore, cuando los datos que se van a insertar entran en conflicto con datos existentes en una tabla de destino, el servicio de transmisión de datos registra los datos en conflicto y conserva los datos existentes.
ImportanteSi selecciona Ignore, los datos se extraen en modo IN durante la verificación completa. En este caso, la verificación no es aplicable si el destino contiene datos que no existen en el origen, y el rendimiento de la verificación disminuye.
Si selecciona Stop Migration y una tabla de destino contiene registros, se notifica un error que indica que la migración no es compatible durante la migración completa. En este caso, debe procesar los datos en la tabla de destino antes de continuar con la migración.
ImportanteSi hace clic en Resume en el cuadro de diálogo que notifica el error, el servicio de transmisión de datos ignora este error y continúa migrando datos. Proceda con precaución.
Post-Indexing
Especifica si se deben crear índices después de completar la migración completa. La indexación posterior puede reducir el tiempo necesario para la migración completa. Para obtener más información sobre las consideraciones de la indexación posterior, consulte la descripción a continuación.
ImportanteEste parámetro se muestra únicamente si ha seleccionado tanto Schema Migration como Full Migration en la página Select Migration Type.
Solo se pueden crear índices de clave no única después de completar la migración.
Si la base de datos OceanBase de destino devuelve el siguiente error durante la creación del índice, el servicio de transmisión de datos ignora el error y determina que el índice se creó correctamente, sin volver a crearlo.
Mensaje de error en una base de datos OceanBase en modo compatible con MySQL:
Duplicate key name.Mensaje de error en una base de datos OceanBase en modo compatible con Oracle:
name is already used by an existing object.
Si selecciona Allow, configure los siguientes parámetros:
DDL Concurrency for Single Index: el número máximo de operaciones DDL simultáneas permitidas para un solo índice. Un valor mayor implica un mayor consumo de recursos y una migración de datos más rápida.
Maximum DDL Concurrency for Indexes: el número máximo de operaciones DDL de indexación posterior que el sistema puede invocar a la vez.
Si se permite la indexación posterior, se recomienda utilizar un cliente CLI para modificar los siguientes parámetros para inquilinos de negocio en función de las condiciones de hardware de OceanBase Database y del tráfico actual de su negocio:
// Specify the limit on the file memory buffer size. alter system set _temporary_file_io_area_size = '10' tenant = 'xxx'; // Disable throttling in OceanBase Database V4.x. alter system set sys_bkgd_net_percentage = 100; -
Sincronización incremental
La siguiente tabla describe los parámetros para la sincronización incremental, los cuales se muestran únicamente si ha seleccionado Bidirectional Synchronization y Incremental Synchronization en la página Select Migration Type.

Parámetro
Descripción
Write Concurrency
La concurrencia para escribir datos en el destino durante la sincronización incremental. El valor máximo es 512. Una concurrencia de escritura alta puede generar una carga excesiva en el destino y afectar al negocio.
Incremental Synchronization Rate Limit
Puede elegir si desea limitar la tasa de sincronización incremental según sea necesario. Si decide limitarla, debe especificar los registros por segundo (RPS) y los bytes por segundo (BPS). El valor RPS indica el número máximo de filas de datos sincronizadas al destino por segundo durante la sincronización incremental, y el valor BPS indica la cantidad máxima de datos en bytes sincronizados al destino por segundo durante la sincronización incremental.
NotaLos valores RPS y BPS especificados aquí son únicamente para limitación de velocidad. El rendimiento real de la sincronización incremental depende de factores como la configuración del origen y del destino, así como de las especificaciones de la instancia.
Data Conflict Handling Strategy
Los valores válidos son Ignore errors and keep the original data on the target y Ignore conflicts, use source data to overwrite target data. Para obtener más información, consulte la sección "Escenarios de conflicto de datos" de este tema.
-
-
Haga clic en Precheck para realizar la comprobación previa de la tarea de migración de datos.
En el paso Precheck, Data Transmission Service verifica si los elementos cumplen con los requisitos, tales como los permisos de lectura y escritura del usuario de la base de datos y la conectividad de red de la base de datos. Solo puede iniciar la tarea de migración de datos después de que todos los elementos de comprobación se superen. Si la comprobación previa falla:
Puede identificar y solucionar el problema, y luego ejecutar la comprobación previa nuevamente hasta que se complete correctamente.
También puede hacer clic en Skip en la columna Actions para un elemento de comprobación previa fallido. Aparece un cuadro de diálogo que describe el impacto de omitir esta operación. Para continuar, haga clic en OK.
Una vez superada la comprobación previa, haga clic en Start Task para iniciar la tarea directa.
Configurar una tarea inversa
-
Vaya a Migration Tasks page. Wait until the forward task is in the incremental synchronization phase and in the estado Running. Then, click Configuration for the reverse task.

-
En el cuadro de diálogo Configure Reverse Tasks, configure los parámetros.

Parámetro
Descripción
Task Instance
Seleccione una instancia de tarea disponible en la lista desplegable para configurar la tarea inversa. Si no hay ninguna instancia de tarea disponible, adquiera una. Para obtener más información, consulte Purchase a data migration task.
Write Concurrency
La concurrencia para escribir datos en el destino durante la migración completa. El valor máximo es 512. Una concurrencia de escritura alta puede generar una carga excesiva en el destino y afectar al negocio.
Incremental Synchronization Rate Limit
Puede elegir si desea limitar la tasa de sincronización incremental según sea necesario.
Data Conflict Handling Strategy
Los valores válidos son Ignore errors and keep the original data on the target y Ignore conflicts, use source data to overwrite target data.
Haga clic en Precheck. El sistema realiza la comprobación previa de la tarea inversa.
Una vez superada la comprobación previa, haga clic en Start Task para iniciar la tarea inversa.