Utilice Data Transmission Service (DTS) para sincronizar datos de forma continua desde una instancia de ApsaraDB RDS for MySQL hacia un proyecto de MaxCompute. DTS gestiona todo el proceso, incluida la replicación del esquema, la carga de datos históricos y la captura continua de cambios, lo que le permite construir un sistema de análisis en tiempo real sin tener que administrar la canalización por su cuenta.
Lo que hará
Configurar los requisitos previos (proyecto de MaxCompute, lista blanca de IP, AccessKey).
Configurar las conexiones de origen y destino en DTS.
Seleccionar los objetos y establecer las opciones de sincronización.
Ejecutar una verificación previa; después, adquirir e iniciar la instancia.
Facturación
|
Tipo de sincronización |
Costo |
|
Sincronización de esquemas y sincronización completa de datos |
Gratis |
|
Sincronización incremental de datos |
Con cargo. Consulte Descripción general de facturación. |
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Un proyecto de MaxCompute. Consulte Activate MaxCompute and DataWorks y Create a MaxCompute project.
Una lista blanca de direcciones IP configurada en el proyecto de MaxCompute para permitir el acceso desde DTS. Consulte Configure an IP address whitelist to allow access from Alibaba Cloud services to MaxCompute.
Un par de AccessKey para la cuenta de Alibaba Cloud propietaria del proyecto de MaxCompute. Consulte Create an AccessKey pair.
En lugar de utilizar el AccessKey de la cuenta raíz, puede create a RAM user y configurarlo como superadministrador del proyecto de MaxCompute .
Funcionamiento
DTS sincroniza los datos en tres fases secuenciales:
Sincronización de esquemas: DTS replica los esquemas de las tablas desde la base de datos de origen hacia MaxCompute y agrega
_baseal nombre de cada tabla. Por ejemplo, la tabla de origencustomerse convierte encustomer_baseen MaxCompute.Sincronización completa de datos: DTS carga todos los datos históricos del origen en las tablas
_base(denominadas tablas de línea base completa). Esta instantánea sirve como punto de partida para la sincronización incremental.Sincronización incremental de datos: DTS crea una tabla
_logcorrespondiente para cada tabla sincronizada (por ejemplo,customer_log) y escribe de forma continua los eventos de cambio provenientes del registro binario del origen.
Para consultar el esquema de la tabla _log, consulte Esquema de la tabla de datos incrementales.
Operaciones SQL compatibles con la sincronización incremental
|
Tipo de operación |
Sentencias |
|
DML |
INSERT, UPDATE, DELETE |
|
DDL |
ADD COLUMN (no se admite ADD COLUMN con columnas de atributos) |
DTS no sincroniza claves externas. Las operaciones en cascada y de eliminación realizadas en el origen no se reflejan en el destino.
Permisos obligatorios
La cuenta de base de datos de la instancia de origen ApsaraDB RDS for MySQL debe tener permisos de lectura y escritura. Consulte Create an account y Modify account permissions.
Si la cuenta no se creó desde la consola de ApsaraDB RDS for MySQL, otórguele los siguientes permisos: REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW y SELECT.
Limitaciones
Requisitos de la base de datos de origen
Las tablas deben tener restricciones PRIMARY KEY o UNIQUE con todos los campos únicos. De lo contrario, el destino podría contener registros duplicados.
Al sincronizar tablas que incluyen cambios de nombre en columnas o en la propia tabla, una sola tarea admite hasta 1,000 tablas. Si ejecuta una tarea para sincronizar más de 1,000 tablas, se producirá un error de solicitud. Utilice varias tareas o sincronice a nivel de base de datos.
No ejecute sentencias DDL durante la sincronización de esquemas ni durante la sincronización completa de datos, ya que esto provocará un error en la tarea.
Los datos generados por operaciones en cascada o por la restauración de copias de seguridad físicas no se sincronizan.
Si el origen ejecuta MySQL 8.0.23 o posterior y las tablas contienen columnas invisibles, dichas columnas se excluirán y se perderán datos. Ejecute
ALTER TABLE <table_name> ALTER COLUMN <column_name> SET VISIBLE;para hacerlas visibles antes de iniciar la tarea. Las tablas sin claves primarias reciben automáticamente claves primarias invisibles; hágolas visibles también. Consulte Columnas invisibles y Claves primarias invisibles generadas.
Requisitos del registro binario
Configure los siguientes parámetros de MySQL antes de crear la tarea:
|
Parámetro |
Valor obligatorio |
Aplica a |
|
|
|
ApsaraDB RDS for MySQL y MySQL autogestionado |
|
|
|
Solo MySQL autogestionado |
|
|
|
MySQL autogestionado en un clúster de doble primario |
Requisitos de retención del registro binario:
ApsaraDB RDS for MySQL: conserve los registros binarios durante al menos 3 días; se recomiendan 7 días.
MySQL autogestionado: conserve los registros binarios durante al menos 7 días.
Si los registros binarios se purgan antes de que DTS los lea, la tarea fallará y podría producirse inconsistencia o pérdida de datos. Consulte Eliminar archivos de registro binario para obtener información sobre cómo configurar el periodo de retención.
En el caso de MySQL autogestionado, también debe habilitar explícitamente el registro binario. Para MySQL autogestionado en un clúster de doble primario, establecer log_slave_updates en ON garantiza que DTS pueda leer todos los registros binarios. Consulte Crear una cuenta para una base de datos MySQL autogestionada y configurar el registro binario.
Otras limitaciones
Realice la sincronización fuera del horario pico. La sincronización completa de datos consume recursos de lectura y escritura tanto en el origen como en el destino, lo que incrementa la carga del servidor.
Una vez completada la sincronización completa de datos, el espacio de tablas del destino será mayor que el del origen debido a la fragmentación causada por operaciones INSERT concurrentes.
No ejecute
pt-online-schema-changeni herramientas DDL en línea similares sobre los objetos sincronizados mientras la tarea esté en ejecución, ya que esta fallará.Escribir datos desde otros orígenes en el destino durante la sincronización puede provocar inconsistencia en los datos.
Si el origen tiene EncDB habilitado, no se admite la sincronización completa de datos. Transparent Data Encryption (TDE) no presenta esta restricción: las instancias con TDE admiten sincronización de esquemas, completa e incremental.
Si una tarea de DTS falla, el soporte técnico de DTS intentará restaurarla en un plazo de 8 horas. Durante este periodo, la tarea podría reiniciarse y sus parámetros (no los de la base de datos) podrían modificarse.
Casos especiales para MySQL autogestionado
Un cambio de rol entre primario y secundario mientras la tarea se está ejecutando provocará que esta falle.
La latencia de sincronización se calcula comparando la marca de tiempo del último dato sincronizado en el destino con la marca de tiempo actual del origen. Si no se ejecutan operaciones DML en el origen durante un periodo prolongado, la latencia mostrada podría ser inexacta. Para actualizarla, ejecute cualquier operación DML en el origen. Si sincroniza una base de datos completa, cree una tabla de latidos que reciba actualizaciones cada segundo.
DTS ejecuta periódicamente
CREATE DATABASE IF NOT EXISTS 'test'en el origen para avanzar la posición del registro binario.
Casos especiales para ApsaraDB RDS for MySQL
Las instancias de solo lectura de ApsaraDB RDS for MySQL 5.6 que no registran registros de transacciones no pueden utilizarse como origen.
DTS ejecuta periódicamente
CREATE DATABASE IF NOT EXISTS 'test'en el origen para avanzar la posición del registro binario.
Crear una tarea de sincronización de datos
Paso 1: Abrir la página de sincronización de datos
Utilice cualquiera de las consolas para abrir la página de configuración de tareas.
Consola de DTS
Inicie sesión en la 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 residirá la instancia de sincronización.
Consola de DMS
La ruta de navegación exacta depende del modo y la disposición de su consola de DMS. Consulte Modo simple y Personalizar la disposición y el estilo de la consola de DMS .
Inicie sesión en la 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 situada a la derecha de Data Synchronization Tasks, seleccione la región.
Paso 2: Configurar las bases de datos de origen y destino
Haga clic en Create Task y configure los siguientes parámetros.
| Sección | Parámetro | Descripción |
|---|---|---|
| N/A | Task Name | Nombre de la tarea. DTS genera uno automáticamente. Especifique un nombre descriptivo para facilitar su identificación; no es necesario que sea único. |
| Source Database | Select Existing Connection | Seleccione una instancia de base de datos registrada para completar automáticamente los parámetros o configure la conexión manualmente. |
| Database Type | Seleccione MySQL. | |
| Access Method | Seleccione Alibaba Cloud Instance. | |
| Instance Region | Región de la instancia de origen ApsaraDB RDS for MySQL. | |
| Replicate Data Across Alibaba Cloud Accounts | Seleccione No (escenario de misma cuenta). | |
| RDS Instance ID | ID de la instancia de origen. | |
| Database Account | Cuenta con los permisos necesarios. Consulte Permisos obligatorios. | |
| Database Password | Contraseña de la cuenta de base de datos. | |
| Encryption | Seleccione Non-encrypted o SSL-encrypted. Para SSL, primero habilite el cifrado SSL en la instancia de RDS. Consulte Usar un certificado en la nube para habilitar el cifrado SSL. | |
| Destination Database | Select Existing Connection | Seleccione una instancia registrada o configúrela manualmente. |
| Database Type | Seleccione MaxCompute. | |
| Access Method | Seleccione Alibaba Cloud Instance. | |
| Instance Region | Región del proyecto de MaxCompute. | |
| Project | Nombre del proyecto de MaxCompute de destino. | |
| AccessKey ID of Alibaba Cloud Account | AccessKey ID de la cuenta propietaria del proyecto de MaxCompute. | |
| AccessKey Secret of Alibaba Cloud Account |
Paso 3: Probar la conectividad
Haga clic en Test Connectivity and Proceed en la parte inferior de la página.
DTS necesita acceso a ambas bases de datos. Si se conecta a una base de datos autogestionada, debe agregar los bloques CIDR de DTS a su configuración de seguridad. Consulte Agregar los bloques CIDR de los servidores de DTS . Para bases de datos autogestionadas que no utilizan el acceso mediante Alibaba Cloud Instance , haga clic en Test Connectivity en el cuadro de diálogo CIDR Blocks of DTS Servers .
Haga clic en OK para otorgar permisos a su cuenta de MaxCompute y, a continuación, haga clic en Test Connectivity and Proceed.
Paso 4: Configurar objetos
En el paso Configure Objects, establezca los siguientes parámetros.
|
Parámetro |
Descripción |
|
Synchronization Types |
Seleccione Schema Synchronization, Full Data Synchronization y Incremental Data Synchronization. La sincronización completa de datos carga los datos históricos antes de que comience la sincronización incremental. |
|
Naming Rules of Additional Columns |
DTS agrega columnas de metadatos a las tablas de destino. Si estas entran en conflicto con nombres de columnas existentes, la tarea fallará. Seleccione New Rule o Previous Rule según su configuración. Compruebe si existen conflictos antes de continuar. Consulte Naming rules for additional columns. |
|
Partition Definition of Incremental Data Table |
Seleccione los nombres de partición según sus necesidades. Consulte Partition. |
|
Processing Mode of Conflicting Tables |
Precheck and Report Errors (predeterminado): falla la verificación previa si el destino tiene tablas con los mismos nombres que el origen. Ignore Errors and Proceed: omite esta comprobación. Úselo con precaución: si los esquemas difieren, es posible que solo se sincronicen algunas columnas o que la tarea falle. Si los esquemas coinciden y un registro tiene la misma clave primaria o única, la sincronización completa conserva el registro existente en el destino; la sincronización incremental lo sobrescribe. |
|
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 MaxCompute. Valor predeterminado: DTS default policy. Consulte Especificar el uso de mayúsculas en los nombres de objetos de la instancia de destino. |
|
Source Objects |
Seleccione los objetos y haga clic en el icono de flecha para moverlos a Selected Objects. Puede seleccionar tablas. |
|
Selected Objects |
Haga clic con el botón derecho en un objeto para cambiarle el nombre o filtrar qué operaciones SQL se sincronizarán. Para cambiar el nombre de varios objetos, haga clic en Batch Edit. Para filtrar filas, haga clic con el botón derecho en una tabla y especifique las condiciones WHERE. Consulte Asignar nombres a objetos y Specify filter conditions. |
Cambiar el nombre de un objeto mediante la asignación de nombres puede provocar que los objetos dependientes no se sincronicen correctamente.
Paso 5: Configurar ajustes avanzados
Haga clic en Next: Advanced Settings y configure los siguientes parámetros.
|
Parámetro |
Descripción |
|
Dedicated Cluster for Task Scheduling |
De forma predeterminada, DTS programa las tareas en el clúster compartido. 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 la conexión cuando esta falla. Valores válidos: 10–1440 minutos. Valor predeterminado: 720 minutos. Establezca un mínimo de 30 minutos. Si varias tareas comparten un mismo origen o destino, se aplica el tiempo de reintento más corto. Durante los reintentos, DTS cobra por la instancia. |
|
Retry Time for Other Issues |
Tiempo durante el cual DTS reintenta cuando fallan operaciones DML o DDL. Valores válidos: 1–1440 minutos. Valor predeterminado: 10 minutos. Establezca un mínimo de 10 minutos. Debe ser menor que Retry Time for Failed Connections. |
|
Enable Throttling for Full Data Synchronization |
Limite las QPS (consultas por segundo) hacia el origen, las RPS de la migración completa de datos y la velocidad de migración (MB/s) para reducir la carga. Disponible solo si se selecciona Full Data Synchronization. |
|
Enable Throttling for Incremental Data Synchronization |
Limite las RPS y la velocidad de sincronización de datos (MB/s) para la sincronización incremental a fin de reducir la carga en el destino. |
|
Environment Tag |
Etiqueta opcional para identificar la instancia de DTS según el entorno (por ejemplo, producción o pruebas). |
|
Whether to delete SQL operations on heartbeat tables of forward and reverse tasks |
Yes: DTS no escribe las operaciones de la tabla de latidos en el origen. Podría mostrarse una lectura de latencia. No: DTS escribe las operaciones de latidos, lo que podría afectar la copia de seguridad física y la clonación del origen. |
|
Configure ETL |
Yes: habilita la extracción, transformación y carga (ETL). Introduzca las sentencias de procesamiento en el editor de código. Consulte Configurar ETL en una tarea de migración o sincronización de datos. No: deshabilita ETL. |
|
Monitoring and Alerting |
Yes: configura alertas para fallos en la tarea o latencia que supere un umbral. Establezca el umbral y los contactos de notificación. Consulte Configurar monitoreo y alertas. No: deshabilita las alertas. |
Paso 6: Ejecutar la verificación previa
Haga clic en Next: Save Task Settings and Precheck.
Para previsualizar los parámetros de la API correspondientes a esta configuración de tarea, pase el cursor sobre el botón y haga clic en Preview OpenAPI parameters antes de continuar.
DTS ejecuta una verificación previa antes de que la tarea pueda iniciarse.
Si algún elemento falla, haga clic en View Details para ver la causa. Corrija el problema y haga clic en Precheck Again.
Si algún elemento genera una alerta que puede ignorarse, haga clic en Confirm Alert Details; luego, en el cuadro de diálogo, haga clic en Ignore y después en OK. Haga clic en Precheck Again para continuar. Ignorar alertas puede provocar inconsistencia en los datos.
Paso 7: Adquirir e iniciar la instancia
Espere a que Success Rate alcance el 100% y haga clic en Next: Purchase Instance.
En la página de adquisición, configure los siguientes parámetros.
|
Parámetro |
Descripción |
|
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 al terminar para detener los cargos. |
|
Resource Group Settings |
Resource group para la instancia. Valor predeterminado: default resource group. Consulte ¿Qué es Resource Management? |
|
Instance Class |
Determina la velocidad de sincronización. Consulte Clases de instancia de sincronización de datos. |
|
Subscription Duration |
Disponible para el método de facturación por suscripción. Opciones: 1–9 meses, 1 año, 2 años, 3 años o 5 años. |
Lea y acepte los Data Transmission Service (Pay-as-you-go) Service Terms.
Haga clic en Buy and Start. En el cuadro de diálogo de confirmación, haga clic en OK.
La tarea aparecerá en la lista de tareas, donde podrá monitorear su progreso.
Esquema de la tabla de datos incrementales
Antes de consultar la tabla de datos incrementales, ejecute el siguiente comando en MaxCompute para permitir escaneos completos de tablas:
set odps.sql.allow.fullscan=true;
Cada tabla _log almacena eventos de cambio provenientes del origen. Además de los datos originales de las columnas, DTS agrega los siguientes campos de metadatos a cada fila:
|
Campo |
Descripción |
|
|
Identificador único de la entrada de registro. Se autoincrementa con cada nueva entrada. Para operaciones UPDATE, DTS genera dos entradas (antes y después del cambio) con el mismo |
|
|
Tipo de operación: |
|
|
Marca de tiempo de la operación en UTC, correspondiente a la marca de tiempo del archivo de registro binario. |
|
|
|
|
|
|
Lectura de eventos UPDATE: DTS escribe dos filas por cada UPDATE: una con before_flag=Y (los valores originales) y otra con after_flag=Y (los nuevos valores). Ambas filas comparten el mismo record_id.