Data Transmission Service (DTS) permite sincronizar datos desde una base de datos MySQL hacia el motor LindormTable de una instancia de Lindorm. Este tema utiliza una instancia de ApsaraDB RDS for MySQL como origen.
Requisitos previos
Antes de empezar, asegúrese de cumplir con lo siguiente:
Una instancia de Lindorm de destino con el motor LindormTable habilitado y una capacidad de almacenamiento superior al almacenamiento utilizado en la instancia de RDS for MySQL de origen. Consulte Create an instance.
El endpoint compatible con MySQL habilitado para la instancia de Lindorm de destino. Consulte Enable the MySQL-compatible feature.
Una base de datos (namespace) creada previamente en la instancia de Lindorm de destino. Si no selecciona Schema Synchronization, también debe crear previamente una tabla ancha (se recomienda realizar un pre-particionamiento basado en el conjunto completo de datos antes de iniciar la sincronización para mejorar el rendimiento). Consulte Connect to and use LindormTable using the MySQL command line, Connect to and use LindormTable using Lindorm-cli, Access LindormTable using Lindorm Shell, CREATE TABLE y Data type mapping.
Todos los objetos en la instancia de Lindorm de destino deben cumplir con Lindorm naming conventions and limits.
Facturación
|
Synchronization type |
Fee |
|
Sincronización completa de datos |
Sin costo |
|
Sincronización incremental de datos |
Con costo. Consulte Billing overview. |
Operaciones SQL compatibles con la sincronización incremental
|
Type |
SQL statements |
|
DML |
INSERT, UPDATE, DELETE |
|
DDL |
CREATE TABLE, DROP TABLE, ADD COLUMN |
Cuando las instrucciones ADD COLUMN incluyen atributos adicionales, solo se sincroniza la definición de la columna; los atributos como los valores predeterminados se descartan. Por ejemplo, ALTER TABLE test ADD COLUMN col INT DEFAULT 0; en el origen resulta en ALTER TABLE test ADD COLUMN col INT; en el destino, debido a los límites de LindormTable.
Permisos necesarios para las cuentas de base de datos
|
Database |
Required permissions |
How to grant |
|
RDS MySQL de origen |
Permisos de lectura y escritura sobre los objetos a sincronizar |
Create an account y Modify the permissions of a standard account on an ApsaraDB RDS for MySQL instance |
|
Lindorm de destino |
Permisos de lectura y escritura sobre el namespace de destino |
Si la cuenta de la base de datos de origen no se creó ni recibió permisos a través de la consola de RDS for MySQL, asegúrese de que la cuenta cuente con los permisos REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW y SELECT.
Límites
Límites de la base de datos de origen
Las tablas a sincronizar deben tener claves primarias con campos únicos. Sin claves primarias, podrían aparecer datos duplicados en el destino.
Los tipos de punto flotante, como FLOAT y DOUBLE, no son compatibles como claves primarias ni como claves primarias compuestas.
Al sincronizar a nivel de tabla con asignación de nombres, una sola tarea admite un máximo de 1,000 tablas. Superar este límite provoca un error después de enviar la tarea. Divida las tablas en varias tareas o configure la tarea para sincronizar toda la base de datos.
No ejecute operaciones DDL en la base de datos de origen durante la fase de sincronización completa de datos, ya que esto causa un error en la tarea. Las consultas de DTS añaden un bloqueo de metadatos que también podría bloquear las operaciones DDL en el origen durante esta fase.
Los cambios de datos provenientes de operaciones no registradas en los registros binarios (como la recuperación de copias de seguridad físicas y las operaciones en cascada) no se sincronizan con el destino. Si esto ocurre y su negocio lo permite, elimine la base de datos o tabla afectada de los objetos de sincronización y vuelva a agregarla. Consulte Modificar objetos de sincronización.
-
Para MySQL 8.0.23 y versiones posteriores, las columnas invisibles provocan pérdida de datos porque DTS no puede leerlas. Haga visibles las columnas invisibles antes de iniciar la sincronización:
Ejecute
ALTER TABLE <table_name> ALTER COLUMN <column_name> SET VISIBLE;para cada columna invisible. Consulte Columnas invisibles.Las tablas sin clave primaria generan automáticamente una clave primaria invisible; hágala visible también. Consulte Claves primarias invisibles generadas.
Requisitos de registros binarios
Origen de ApsaraDB RDS for MySQL
El registro binario está habilitado de forma predeterminada en las instancias de RDS MySQL. Confirme que el siguiente parámetro esté configurado correctamente:
|
Parameter |
Required value |
Note |
|
|
|
Si no se configura correctamente, la verificación previa reporta un error y la tarea no puede iniciarse. Consulte Configurar parámetros de instancia. |
Conserve los registros binarios locales durante 3 días como mínimo (se recomiendan 7 días). Un periodo de retención más corto puede causar fallos en la tarea y, en casos extremos, pérdida o inconsistencia de datos. Los problemas derivados de una retención insuficiente no están cubiertos por el Acuerdo de Nivel de Servicio (SLA) de DTS. Consulte Eliminar registros locales automáticamente.
Origen de MySQL autogestionado
Habilite el registro binario y configure los siguientes parámetros:
|
Parameter |
Required value |
Note |
|
|
|
Necesario para que DTS capture cambios a nivel de fila. |
|
|
|
Necesario para capturar la imagen completa de la fila en cada cambio. |
|
|
Habilitado |
Necesario solo para arquitecturas primary/primary, para garantizar que DTS pueda obtener todos los registros binarios. Consulte Crear una cuenta de base de datos para una base de datos MySQL autogestionada y configurar el registro binario. |
Conserve los registros binarios locales durante 7 días como mínimo. Un periodo de retención más corto puede causar fallos en la tarea y, en casos extremos, pérdida o inconsistencia de datos. Los problemas derivados de una retención insuficiente no están cubiertos por el SLA de DTS.
Otros límites
|
Limit |
Details |
|
Sincronización de esquemas |
La sincronización de esquemas hacia Lindorm depende de las capacidades propias de Lindorm para la creación de esquemas. |
|
Límite de índices en columnas sin clave primaria |
Lindorm tiene un límite predeterminado en el número de columnas para índices en columnas sin clave primaria. DTS no puede crear dichos índices durante la sincronización de esquemas cuando el número de columnas supera este límite. Para utilizar estos índices, créelos manualmente. Para más detalles, consulte ALTER SYSTEM. |
|
Tipos de objetos no compatibles |
Objetos INDEX, PARTITION, VIEW, PROCEDURE, FUNCTION, TRIGGER y FK. |
|
Datos de tipo BIT |
No compatible. |
|
Sincronización exclusiva de clave primaria |
No compatible. Los datos a sincronizar deben incluir al menos un campo que no sea clave primaria. |
|
Motor de destino |
Solo se admite el motor LindormTable. |
|
Cadenas VARBINARY vacías |
Tanto DTS como Lindorm las tratan como nulas. |
|
Discrepancia en precisión de campos DECIMAL |
Si la precisión del campo DECIMAL en el destino difiere de la del origen, la tarea falla. |
|
Límites de solicitud de datos de Lindorm |
Los datos escritos en Lindorm deben cumplir con sus data request limits. Excederlos provoca un fallo en la tarea. |
|
Uso de recursos durante la sincronización completa |
La sincronización completa de datos consume recursos de lectura y escritura tanto en la base de datos de origen como en la de destino. Ejecute la sincronización fuera de horas pico, cuando el uso de CPU sea inferior al 30% en ambas instancias. |
|
Espacio de tablas de destino tras inicialización completa |
La inicialización completa ejecuta operaciones INSERT simultáneas, lo que causa fragmentación en las tablas. Tras la inicialización completa, el espacio de tablas de destino será mayor que el del origen. |
|
Herramientas DDL en línea durante la sincronización |
No utilice herramientas como pt-online-schema-change para realizar operaciones DDL en línea sobre los objetos sincronizados mientras una tarea de DTS está activa, ya que esto provoca un fallo en la tarea. |
|
Escrituras externas en el destino |
Escribir datos en la base de datos de destino desde fuentes distintas a DTS durante la sincronización causa inconsistencia en los datos. |
|
Función EncDB (siempre confidencial) |
Si la función EncDB está habilitada en la instancia de RDS for MySQL de origen, la sincronización completa de datos no es compatible. Transparent Data Encryption (TDE) no tiene esta restricción: las instancias con TDE habilitado admiten sincronización de esquemas, sincronización completa de datos y sincronización incremental de datos. |
|
Recuperación de instancia DTS |
Si una instancia de DTS falla, el servicio de soporte técnico de DTS intenta recuperarla en un plazo de 8 horas. Durante la recuperación, DTS puede reiniciar la instancia o ajustar los parámetros de la instancia DTS (no los parámetros de la base de datos). Consulte Modificar parámetros de instancia. |
Casos especiales
Origen de MySQL autogestionado
Un failover primary/secondary en la base de datos de origen durante la sincronización provoca un fallo en la tarea.
La latencia se calcula a partir de la diferencia de tiempo entre la hora actual y el último registro sincronizado en el destino. Si no se realizan operaciones DML en el origen durante un periodo prolongado, la latencia mostrada puede ser inexacta. Para actualizar la latencia, realice una operación DML en el origen. Alternativamente, cree una tabla de latidos: DTS escribe en ella cada segundo cuando se sincroniza toda la base de datos.
DTS ejecuta periódicamente
CREATE DATABASE IF NOT EXISTS \test\`` en el origen para avanzar el desplazamiento del registro binario.Para Amazon Aurora MySQL u otras instancias de MySQL en modo clúster, el nombre de dominio o la dirección IP configurados para la tarea siempre deben resolverse al nodo de lectura/escritura (RW). De lo contrario, la tarea podría no ejecutarse correctamente.
Origen de ApsaraDB RDS for MySQL
Las instancias de solo lectura de ApsaraDB RDS for MySQL 5.6 no pueden usarse como origen, ya que no registran registros de transacciones.
DTS ejecuta periódicamente
CREATE DATABASE IF NOT EXISTS \test\`` en el origen para avanzar el desplazamiento del registro binario.
Configurar la tarea de sincronización
Paso 1: Abrir la página de sincronización de datos
Utilice la consola de DTS o la consola de DMS.
Consola de DTS
Inicie sesión en la consola de DTS.consola de DTS
En el panel de navegación izquierdo, haga clic en Data Synchronization.
En la esquina superior izquierda, seleccione la región donde reside la tarea de sincronización.
Consola de DMS
Los pasos reales pueden variar según el modo y el diseño de la consola de DMS. Consulte Modo simple y Personalizar el diseño y estilo de la consola de DMS.
Inicie sesión en la consola de DMS.consola de DMS
En la barra de navegación superior, pase el puntero sobre Data + AI y elija DTS (DTS) > Data Synchronization.
En la lista desplegable junto a Data Synchronization Tasks, seleccione la región donde reside la instancia.
Paso 2: Configurar las bases de datos de origen y destino
Haga clic en Create Task.
Configure las bases de datos de origen y destino mediante los parámetros de la siguiente tabla.
|
Categoría |
Parámetro |
Descripción |
|
N/A |
Task Name |
Nombre descriptivo para la tarea de DTS. DTS genera un nombre automáticamente; reemplácelo por uno que facilite la identificación de la tarea. Los nombres de las tareas no necesitan ser únicos. |
|
Source Database |
Select Existing Connection |
Si ya tiene una instancia de base de datos registrada en DTS, selecciónela de la lista desplegable y DTS completará automáticamente los parámetros restantes. En la consola de DMS, seleccione de la lista Select a DMS database instance. De lo contrario, configure manualmente los parámetros siguientes. |
|
Database Type |
Establézcalo en MySQL. |
|
|
Access Method |
Establézcalo en Alibaba Cloud Instance. |
|
|
Instance Region |
Seleccione la región de la instancia de RDS MySQL de origen. |
|
|
Replicate Data Across Alibaba Cloud Accounts |
Seleccione No si la base de datos de origen pertenece a la cuenta actual de Alibaba Cloud. |
|
|
RDS Instance ID |
Seleccione el ID de la instancia de RDS MySQL de origen. |
|
|
Database Account |
Introduzca la cuenta de la base de datos. Para conocer los permisos necesarios, consulte Permissions required for database accounts. |
|
|
Database Password |
La contraseña de la cuenta de la base de datos. |
|
|
Encryption |
Seleccione Non-encrypted o SSL-encrypted según sus necesidades. Para usar cifrado SSL, habilítelo en la instancia de RDS for MySQL antes de configurar la tarea de DTS. Consulte Usar un certificado en la nube para habilitar el cifrado SSL. |
|
|
Destination Database |
Select Existing Connection |
Si ya tiene una instancia de base de datos registrada en DTS, selecciónela de la lista desplegable y DTS completará automáticamente los parámetros restantes. En la consola de DMS, seleccione de la lista Select a DMS database instance. De lo contrario, configure manualmente los parámetros siguientes. |
|
Database Type |
Establézcalo en Lindorm. |
|
|
Access Method |
Establézcalo en Alibaba Cloud Instance. |
|
|
Instance Region |
Seleccione la región de la instancia de Lindorm de destino. |
|
|
Instance ID |
Seleccione el ID de la instancia de Lindorm de destino. |
|
|
Database Account |
Introduzca la cuenta de la base de datos de la instancia de Lindorm de destino. Para conocer los permisos necesarios, consulte Permissions required for database accounts. |
|
|
Database Password |
La contraseña de la cuenta de la base de datos. |
-
Haga clic en Test Connectivity and Proceed.
NotaLas direcciones IP de los servidores de DTS deben agregarse a la configuración de seguridad tanto de la base de datos de origen como de la de destino. Esto puede hacerse automática o manualmente. Consulte Agregar direcciones IP de servidores DTS a una lista de permitidos. Si el origen o el destino es una base de datos autogestionada con un método de acceso distinto a Alibaba Cloud Instance, haga clic en Test Connectivity en el cuadro de diálogo CIDR Blocks of DTS Servers.
Paso 3: Configurar objetos de sincronización
En el paso Configure Objects, establezca los siguientes parámetros.
|
Parámetro |
Descripción |
|
Synchronization Types |
Incremental Data Synchronization está seleccionado de forma predeterminada. Opcionalmente, seleccione también Full Data Synchronization. Schema Synchronization no está disponible. Cuando la sincronización completa de datos está habilitada, DTS sincroniza los datos históricos del origen al destino antes de iniciar la sincronización incremental. |
|
Processing Mode of Conflicting Tables |
Mantenga el valor predeterminado. |
|
Capitalization of Object Names in Destination Instance |
Controla el uso de mayúsculas y minúsculas en los nombres de bases de datos, tablas y columnas en el destino. El valor predeterminado es DTS default policy. Seleccione una opción diferente si necesita que el uso de mayúsculas coincida con el del origen o el destino. Consulte Especificar el uso de mayúsculas en nombres de objetos de la instancia de destino. |
|
Source Objects |
Seleccione las bases de datos o tablas a sincronizar y luego haga clic en el icono |
|
Selected Objects |
Si los nombres de bases de datos, tablas o columnas en la instancia de Lindorm de destino difieren de los de la instancia de RDS MySQL de origen, utilice la asignación de nombres de objetos. Consulte Map table and column names. Nota
Cambiar el nombre de un objeto mediante asignación de nombres puede provocar que los objetos dependientes fallen en la sincronización. Para filtrar filas, haga clic derecho sobre una tabla en Selected Objects y especifique condiciones WHERE. Consulte Especificar condiciones de filtro. Para seleccionar operaciones SQL específicas para la sincronización incremental, haga clic derecho sobre un objeto y elija las operaciones a incluir. |
Paso 4: Configurar ajustes avanzados
Haga clic en Next: Advanced Settings y configure los siguientes parámetros.
|
Parámetro |
Descripción |
|
Dedicated Cluster for Task Scheduling |
DTS programa la tarea en un clúster compartido de forma predeterminada. Para mayor estabilidad, adquiera un clúster dedicado. Consulte Qué es un clúster dedicado de DTS. |
|
Retry Time for Failed Connections |
Tiempo durante el cual DTS reintenta tras un fallo de conexión. Valores válidos: 10–1440 minutos. Valor predeterminado: 720 minutos. Establezca este valor en 30 minutos como mínimo. Si DTS se reconecta dentro de este periodo, la tarea se reanuda automáticamente; de lo contrario, falla. Nota
Cuando varias tareas comparten el mismo origen o destino, prevalece el periodo de reintento más corto. DTS cobra por la instancia durante los periodos de reintento; establezca este valor según las necesidades de su negocio. |
|
Retry Time for Other Issues |
Tiempo durante el cual DTS reintenta tras fallos en operaciones DDL o DML. Valores válidos: 1–1440 minutos. Valor predeterminado: 10 minutos. Establezca este valor en más de 10 minutos. Este valor debe ser menor que Retry Time for Failed Connections. |
|
Enable Throttling for Full Data Synchronization |
Limita la velocidad de la sincronización completa de datos para reducir la carga en el destino. Configure Queries per second (QPS) to the source database, RPS of Full Data Migration y Data migration speed for full migration (MB/s). Disponible solo cuando Full Data Synchronization está seleccionado. |
|
Enable Throttling for Incremental Data Synchronization |
Limita la velocidad de la sincronización incremental de datos. Configure RPS of Incremental Data Synchronization y Data synchronization speed for incremental synchronization (MB/s). |
|
Environment Tag |
Etiqueta opcional para identificar el entorno de la instancia. |
|
Whether to delete SQL operations on heartbeat tables of forward and reverse tasks |
Controla si DTS escribe operaciones SQL de latidos en la base de datos de origen. Seleccione Yesalert notification settings para omitir la escritura (podría mostrarse un valor de latencia para la instancia). Seleccione No para escribir operaciones de latidos (esto podría afectar las copias de seguridad físicas y la clonación de la base de datos de origen). |
|
Configure ETL |
Seleccione Yes para habilitar la función de extracción, transformación y carga (ETL) e introducir instrucciones de procesamiento de datos. Consulte ¿Qué es ETL? y Configurar ETL en una tarea de migración o sincronización de datos. Seleccione No para omitirlo. |
|
Monitoring and Alerting |
Seleccione Yes para recibir notificaciones cuando la tarea falle o la latencia supere un umbral. Configure el umbral de alerta y los ajustes de notificación. Consulte Configurar monitoreo y alertas al crear una tarea de DTS. Seleccione No para deshabilitar las alertas. |
Paso 5: Ejecutar la verificación previa
Haga clic en Next: Save Task Settings and Precheck.
Para obtener una vista previa de los parámetros de API correspondientes a esta configuración de tarea, pase el cursor sobre Next: Save Task Settings and Precheck y haga clic en Preview OpenAPI parameters antes de continuar.
DTS ejecuta una verificación previa antes de iniciar la tarea. Si algún elemento falla:
Haga clic en View Details junto al elemento fallido, analice la causa, solucione el problema y haga clic en Precheck Again.
Si un elemento de alerta no puede ignorarse, haga clic en View Details junto al elemento fallido, resuelva el problema y ejecute nuevamente la verificación previa.
Si un elemento de alerta puede ignorarse, haga clic en Confirm Alert Details, luego haga clic en Ignore en el cuadro de diálogo de detalles, haga clic en OK y finalmente haga clic en Precheck Again. Ignorar elementos de alerta puede resultar en inconsistencia de datos.
Paso 6: Adquirir la instancia
Espere a que la Success Rate alcance el 100% y luego haga clic en Next: Purchase Instance.
En la página de compra, configure los siguientes parámetros.
|
Parameter |
Description |
|
Billing Method |
Subscription: Pago anticipado por un plazo fijo. Más rentable para uso a largo plazo. Pay-as-you-go: Facturación por hora. Adecuado para uso a corto plazo; libere la instancia cuando ya no la necesite para detener los cargos. |
|
Resource Group Settings |
El resource group para la instancia. Valor predeterminado: default resource group. Consulte What is Resource Management? |
|
Instance Class |
La velocidad de sincronización varía según la clase de instancia. Seleccione una según sus necesidades. Consulte Clases de instancia de sincronización de datos. |
|
Subscription Duration |
Disponible solo para el método de facturación Subscription. Opciones: 1–9 meses, 1 año, 2 años, 3 años o 5 años. |
Lea y seleccione Data Transmission Service (Pay-as-you-go) Service Terms.
Haga clic en Buy and Start y luego haga clic en OK en el cuadro de diálogo de confirmación.
La tarea aparece en la lista de tareas. Monitoree su progreso desde allí.