Utilice Data Transmission Service (DTS) para sincronizar datos desde una base de datos TiDB autogestionada hacia un clúster de AnalyticDB for MySQL V3.0 y realizar análisis en tiempo real.
Funcionamiento
DTS lee los cambios incrementales de TiDB mediante un clúster de Kafka que actúa como búfer de captura de cambios de datos (CDC) y, posteriormente, escribe los datos en AnalyticDB for MySQL V3.0. El flujo completo es el siguiente:
TiDB → Clúster de Kafka → DTS → AnalyticDB for MySQL V3.0
TiDB no expone registros binarios directamente a DTS. Debe configurar uno de los siguientes componentes de CDC para publicar los cambios incrementales en un tema de Kafka:
TiDB Binlog: utiliza los componentes Pump y Drainer.
TiCDC: utiliza el formato Canal-JSON.
DTS lee desde la partición 0 del tema de Kafka y aplica los cambios al clúster de destino.
Límites
Revise estos límites antes de configurar la tarea.
Límites de la base de datos de origen
|
Límite |
Detalles |
|
Se requiere clave primaria o restricción única |
Las tablas que se van a sincronizar deben tener una restricción PRIMARY KEY o UNIQUE con todos los campos únicos. Las tablas sin esta restricción pueden generar registros duplicados en el destino. |
|
Restricciones de DDL durante la sincronización |
No ejecute sentencias DDL que modifiquen los esquemas de bases de datos o tablas durante la sincronización de esquemas o la sincronización completa de datos, ya que la tarea fallará. |
|
Pérdida de longitud de índice de prefijo |
TiDB no almacena la longitud del índice de prefijo en los metadatos. Esta longitud se pierde al sincronizar los datos con AnalyticDB for MySQL V3.0, lo que puede provocar errores en la instancia de destino. Corrija manualmente las longitudes de los índices de prefijo en todas las tablas que los utilicen. |
|
Límite de tablas por tarea |
Si selecciona tablas individuales (no bases de datos completas) y les cambia el nombre, cada tarea admite hasta 1,000 tablas. Si supera este límite, configure varias tareas o sincronice bases de datos completas. |
|
Configuración de Kafka obligatoria |
Despliegue un clúster de Kafka e instale TiDB Binlog o TiCDC antes de crear la tarea de DTS. |
|
Ancho de banda de salida |
El servidor que aloja TiDB debe contar con suficiente ancho de banda de salida. Un ancho de banda insuficiente reduce la velocidad de sincronización. |
Límites del destino y de la tarea
|
Límite |
Detalles |
|
Partición de Kafka |
DTS solo lee desde la partición 0 del tema de Kafka. Cree el tema con exactamente una partición. |
|
Se requiere clave primaria personalizada |
Especifique una clave primaria personalizada en AnalyticDB for MySQL V3.0 o configure Primary Key Column en el paso Configurations for Databases, Tables, and Columns. De lo contrario, la tarea podría fallar. |
|
Umbral de uso de disco |
Si el uso de disco en cualquier nodo del clúster de AnalyticDB for MySQL V3.0 supera el 80%, la tarea de DTS se retrasa y devuelve errores. Calcule el espacio en disco necesario antes de iniciar. |
|
Conflictos con copias de seguridad |
Si se realiza una copia de seguridad del clúster de destino mientras DTS está en ejecución, la tarea fallará. |
|
Tipos de datos heterogéneos |
Los tipos de datos de TiDB y AnalyticDB for MySQL V3.0 no tienen una correspondencia uno a uno. Consulte Data type mappings for initial schema synchronization para obtener más detalles. |
|
Precisión de FLOAT/DOUBLE |
DTS utiliza |
|
Vistas materializadas no compatibles |
Durante la sincronización de esquemas, DTS no admite la sincronización de vistas materializadas hacia la instancia de destino de AnalyticDB for MySQL. Para utilizar vistas materializadas, créelas manualmente en la instancia de destino una vez finalizada la sincronización. |
|
Inicialización del desplazamiento de la tarea |
Después de crear la tarea, realice operaciones en la base de datos de origen o inserte datos de prueba de inmediato. Esto actualiza el desplazamiento de la tarea. Si omite este paso, la tarea podría fallar debido a una latencia excesiva. |
|
Datos de otros orígenes |
No escriba datos en el clúster de destino desde otros orígenes durante la sincronización, ya que esto provoca inconsistencia en los datos. |
|
Reanudación de tareas con errores |
DTS reintenta automáticamente las tareas con errores durante un máximo de 7 días. Antes de trasladar las cargas de trabajo al clúster de destino, detenga o libere cualquier tarea con errores. Como alternativa, ejecute |
|
Rendimiento de la sincronización completa de datos |
La sincronización completa de datos incrementa la carga tanto en la base de datos de origen como en la de destino. Ejecútela fuera del horario pico, cuando el uso de CPU sea inferior al 30%. |
|
Tamaño del espacio de tablas tras la sincronización completa |
Las operaciones INSERT simultáneas durante la sincronización completa de datos causan fragmentación en las tablas. El espacio de tablas de destino será mayor que el de origen. |
|
Errores de DDL |
Si una sentencia DDL falla en la base de datos de destino, la tarea continúa. Revise los registros de la tarea para ver las sentencias DDL fallidas. |
|
SLA de soporte técnico de DTS |
Si una tarea de DTS no se ejecuta correctamente, el soporte técnico de DTS intentará restaurarla en un plazo de 8 horas. Durante la restauración, es posible que se reinicie la tarea y se modifiquen sus parámetros. Solo se pueden modificar los parámetros de la tarea; los parámetros de la base de datos no se alteran. |
Si el destino es un clúster de AnalyticDB for MySQL, DTS solo admite la escritura de tipos de datos compatibles de forma nativa con AnalyticDB for MySQL. Esto incluye tipos de datos básicos y tipos de datos complejos como ARRAY, MAP y JSON. No se admiten tipos de datos como MULTIVALUE.
Operaciones SQL para la sincronización incremental
|
Tipo de operación |
Sentencias compatibles |
|
DML |
INSERT, UPDATE, DELETE |
|
DDL |
CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE, ADD COLUMN, DROP COLUMN |
Cuando DTS escribe sentencias UPDATE en AnalyticDB for MySQL V3.0, las convierte automáticamente en REPLACE INTO . Si la sentencia UPDATE afecta a la clave primaria, DTS la convierte en DELETE seguido de INSERT.
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 clúster de AnalyticDB for MySQL V3.0 con almacenamiento disponible superior al tamaño total de los datos de su base de datos TiDB. Consulte Create a cluster.
Un clúster de Kafka o una instancia de ApsaraMQ for Kafka desplegada y accesible desde el servidor de TiDB.
Los permisos necesarios para la cuenta de la base de datos (consulte Permisos necesarios).
Permisos necesarios
|
Base de datos |
Permisos necesarios |
Referencia |
|
TiDB |
SELECT en los objetos a sincronizar, SHOW VIEW |
|
|
AnalyticDB for MySQL V3.0 |
Permisos de lectura y escritura en la base de datos de destino |
Configurar la captura de datos incrementales
DTS requiere que los eventos de cambio incremental de TiDB se publiquen en un tema de Kafka. Elija uno de los siguientes métodos.
Elegir un método
|
TiDB Binlog |
TiCDC |
|
|
Componentes |
Pump + Drainer |
TiCDC (gestionado mediante TiUP) |
|
Formato de salida |
Formato binlog predeterminado de TiDB |
Formato Canal-JSON |
|
Recomendado para |
Despliegues existentes de TiDB Binlog |
Nuevas configuraciones y TiDB v4.0+ |
|
Configuración de DTS |
Utilizar el formato binlog predeterminado de la base de datos TiDB |
Utilizar el formato TiCDC Canal-JSON |
Preparar el clúster de Kafka
Ambos métodos requieren un clúster de Kafka. Utilice una de las siguientes opciones:
Clúster de Kafka autogestionado: Despliegue Apache Kafka. Consulte la documentación de Apache Kafka.
Instancia de ApsaraMQ for Kafka: Cree una instancia. Consulte Getting started overview.
Independientemente de la opción que elija:
Despliegue el clúster de Kafka en la misma red o nube privada virtual (VPC) que el servidor de TiDB para minimizar la latencia de red.
Establezca los parámetros del broker de Kafka
message.max.bytesyreplica.fetch.max.bytesen valores altos, y configure el parámetro del consumidorfetch.message.max.bytescon un valor alto equivalente. Esto garantiza que el clúster pueda manejar el volumen de datos de registros binarios provenientes de TiDB. Consulte la referencia de configuración de Kafka.
Después de configurar el clúster, cree un tema con exactly one partition. DTS solo lee desde la partición 0, por lo que múltiples particiones provocarán pérdida de datos.
Opción 1: TiDB Binlog
Despliegue Pump y Drainer en servidores dentro de la misma red interna que TiDB. Consulte el despliegue de clúster de TiDB Binlog.
Edite el archivo de configuración de Drainer para apuntar a su clúster de Kafka como destino descendente. Consulte la guía del cliente consumidor de Binlog. Compruebe que el servidor de TiDB puede conectarse al clúster de Kafka antes de continuar.
Agregue los bloques CIDR de los servidores DTS a la lista de permitidos de la base de datos TiDB. Consulte Agregar los bloques CIDR de los servidores DTS.
Opción 2: TiCDC
Instale TiCDC mediante TiUP. Agregue un nuevo nodo de TiCDC o escale horizontalmente un nodo existente en el clúster de TiDB. Consulte Desplegar y mantener TiCDC.
Cree un changefeed para replicar datos incrementales desde TiDB hacia su clúster de Kafka. Utilice
tiup cdc cli changefeed createy especifique el URI del sink Canal-JSON. Consulte Replicar datos a Kafka. Compruebe que el servidor de TiDB puede conectarse al clúster de Kafka antes de continuar.
Crear una tarea de sincronización de datos
Paso 1: Ir a 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.DTS console
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
Los pasos pueden variar según 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.DMS console
En la barra de navegación superior, pase el puntero sobre Data + AI y seleccione DTS (DTS) > Data Synchronization.
En la lista desplegable a la derecha de Data Synchronization Tasks, seleccione la región donde residirá la instancia de sincronización.
Paso 2: Configurar las bases de datos de origen y destino
Haga clic en Create Task y configure los siguientes parámetros.
Base de datos de origen
|
Parámetro |
Descripción |
|
Task Name |
Nombre de la tarea de DTS. DTS genera uno automáticamente. Especifique un nombre descriptivo para facilitar su identificación. El nombre no necesita ser único. |
|
Select a DMS database instance |
Seleccione una base de datos registrada existente o deje este campo vacío y complete los parámetros a continuación. Para registrar una base de datos: en la consola de DMS, haga clic en Add DMS Database Instance; en la consola de DTS, utilice la página Database Connections. Consulte Registrar una instancia de base de datos de Alibaba Cloud y Registrar una base de datos alojada en un servicio de nube de terceros o una base de datos autogestionada. |
|
Database Type |
Seleccione TiDB. |
|
Access Method |
Seleccione el método de acceso que corresponda al lugar donde está desplegado TiDB. Este ejemplo utiliza Self-managed Database on ECS. Para otros métodos de acceso, prepare primero el entorno requerido. Consulte Preparation overview. |
|
Instance Region |
La región donde reside TiDB. |
|
ECS Instance ID |
El ID de la instancia de ECS que aloja TiDB. |
|
Port Number |
El puerto del servicio de TiDB. Valor predeterminado: 4000. |
|
Database Account |
La cuenta de TiDB con los permisos necesarios. |
|
Database Password |
La contraseña de la cuenta de TiDB. |
|
Migrate Incremental Data |
Siempre establecido en Yes configuración de notificaciones de alertas. Esto no se puede cambiar. Para sincronizar sin datos incrementales, cree una tarea de migración de datos en su lugar. Consulte Migrate data from a self-managed TiDB database to an AnalyticDB for MySQL V3.0 cluster. |
|
Kafka Cluster Type |
Seleccione el método de acceso que corresponda al lugar donde está desplegado su clúster de Kafka. Este ejemplo utiliza Self-managed Database on ECS. Si selecciona Express Connect, VPN Gateway, or Smart Access Gateway, seleccione también una VPC en Connected VPC y especifique Domain Name or IP. |
|
Kafka Data Source Component |
Seleccione Use the default binlog format of the TiDB database (para TiDB Binlog) o Use the TiCDC Canal-JSON format (para TiCDC), según lo que haya configurado en Configurar la captura de datos incrementales. |
|
ECS Instance ID |
El ID de la instancia de ECS donde está desplegado el clúster de Kafka. |
|
Port Number |
El puerto del servicio de Kafka. |
|
Kafka Cluster Account / Kafka Cluster Password |
El nombre de usuario y la contraseña de Kafka. Déjelos en blanco si la autenticación no está habilitada. |
|
Kafka Version |
La versión de Kafka. Si la versión es 1.0 o posterior, seleccione 1.0. |
|
Encryption |
Seleccione Non-encrypted o SCRAM-SHA-256 según sus requisitos de seguridad. |
|
Topic |
El tema de Kafka que recibe los datos incrementales de TiDB. |
Base de datos de destino
|
Parámetro |
Descripción |
|
Select a DMS database instance |
Seleccione una base de datos registrada existente o deje este campo vacío y complete los parámetros a continuación. |
|
Database Type |
Seleccione AnalyticDB for MySQL 3.0. |
|
Access Method |
Seleccione Alibaba Cloud Instance. |
|
Instance Region |
La región donde reside el clúster de AnalyticDB for MySQL V3.0. |
|
Instance ID |
El ID del clúster de destino de AnalyticDB for MySQL V3.0. |
|
Database Account |
La cuenta de la base de datos con permisos de lectura y escritura. |
|
Database Password |
La contraseña de la cuenta de la base de datos. |
Paso 3: Probar la conectividad
Haga clic en Test Connectivity and Proceed. En el cuadro de diálogo CIDR Blocks of DTS Servers, haga clic en Test Connectivity.
Si los bloques CIDR de DTS aún no están agregados a la configuración de seguridad de su base de datos, agréguelos antes de continuar. Consulte Agregar los bloques CIDR de los servidores DTS.
Paso 4: Configurar los objetos a sincronizar
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. Los tres son obligatorios. Incremental Data Synchronization está seleccionado de forma predeterminada; debe seleccionar también los otros dos. La sincronización completa de datos proporciona la línea base de datos históricos para la sincronización incremental. |
| Processing Mode of Conflicting Tables | Precheck and Report Errors (predeterminado): falla la comprobación previa si existen tablas con nombres idénticos en el destino. Utilice la asignación de nombres de objetos para resolver conflictos sin eliminar las tablas de destino. Consulte Asignar nombres de objetos. Ignore Errors and Proceed: omite la comprobación previa de nombres de tabla idénticos. Durante la sincronización completa, se conservan los registros existentes en el destino. Durante la sincronización incremental, los registros de destino se sobrescriben. Utilícelo con precaución, ya que esto puede causar inconsistencia en los datos. |
| Capitalization of Object Names in Destination Instance | Controla el uso de mayúsculas en los nombres de bases de datos, tablas y columnas en el destino. 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 las bases de datos o tablas que desea sincronizar y haga clic en el icono de flecha para moverlas a Selected Objects. |
| Selected Objects | Para cambiar el nombre de un objeto en el destino, haga clic derecho sobre él y utilice la asignación de nombres de objetos. Para cambiar el nombre de varios objetos a la vez, haga clic en Batch Edit. Para filtrar filas con condiciones SQL WHERE, haga clic derecho en una tabla y especifique las condiciones. Consulte Specify filter conditions. Cambiar el nombre de un objeto puede afectar a los objetos dependientes. |
Paso 5: Configurar ajustes avanzados
Haga clic en Next: Advanced Settings y configure lo siguiente.
|
Parámetro |
Descripción |
|
Retry Time for Failed Connections |
Tiempo durante el cual DTS reintenta conexiones fallidas después de iniciar la tarea. Rango: 10–1440 minutos. Valor predeterminado: 720 minutos. Establézcalo en más de 30 minutos. Si varias tareas comparten la misma base de datos de origen o destino, prevalece el tiempo de reintento más corto. |
|
Retry Time for Other Issues |
Tiempo durante el cual DTS reintenta operaciones DDL o DML fallidas. Rango: 1–1440 minutos. Valor predeterminado: 10 minutos. Establézcalo 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 carga de lectura y escritura durante la sincronización completa de datos. Configure QPS (queries per second) 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 carga de escritura durante la sincronización incremental de datos. Configure RPS of Incremental Data Synchronization y Data synchronization speed for incremental synchronization (MB/s). |
|
Environment Tag |
Una etiqueta opcional para identificar la instancia de DTS por entorno (por ejemplo, producción o pruebas). |
|
Configure ETL |
Seleccione Yes para habilitar extracción, transformación y carga (ETL) e introducir sentencias de procesamiento de datos. Seleccione No para omitirlo. Consulte ¿Qué es ETL? |
|
Monitoring and Alerting |
Seleccione Yes para configurar alertas por fallos en la tarea o superación de umbrales de latencia. Configure el umbral de alerta y la configuración de notificaciones. Consulte Configurar monitoreo y alertas. |
Paso 6: Configurar la verificación de datos (opcional)
Haga clic en Next Step: Data Verification para configurar la verificación de datos. Consulte Configurar una tarea de verificación de datos.
Paso 7: Configurar campos de bases de datos y tablas (opcional)
Haga clic en Next: Configure Database and Table Fields para configurar ajustes específicos de AnalyticDB for MySQL V3.0 para cada tabla.
Este paso solo está disponible cuando Schema Synchronization está seleccionado. Establezca Definition Status en All para ver y modificar todas las tablas.
|
Parámetro |
Descripción |
|
Type |
El tipo de tabla en AnalyticDB for MySQL V3.0. |
|
Primary Key Column |
Las columnas de clave primaria para la tabla. Admite claves primarias compuestas. |
|
Distribution Key |
La clave de distribución para la tabla. Debe ser una o más de las columnas de clave primaria. |
|
Partition Key / Partitioning Rules / Partition Lifecycle |
Configuración de particionamiento para la tabla. Consulte CREATE TABLE. |
Paso 8: Guardar la tarea y ejecutar la comprobación previa
Para previsualizar los parámetros de API de esta configuración de tarea, pase el puntero sobre Next: Save Task Settings and Precheck y haga clic en Preview OpenAPI parameters.
Haga clic en Next: Save Task Settings and Precheck para guardar e iniciar la comprobación previa.
Si la comprobación previa falla:
Haga clic en View Details junto a cada elemento fallido, corrija el problema y vuelva a ejecutar la comprobación previa.
Si un elemento muestra una alerta que se puede ignorar, haga clic en Confirm Alert Details, luego en Ignore, después en OK y finalmente en Precheck Again. Ignorar alertas puede causar inconsistencia en los datos.
Paso 9: Adquirir una instancia
Espere a que Success Rate alcance 100% y haga clic en Next: Purchase Instance.
En la página de compra, configure lo siguiente.
|
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 cuando ya no la necesite para evitar cargos innecesarios. |
|
Resource Group Settings |
El resource group para la instancia de sincronización. Valor predeterminado: default resource group. Consulte ¿Qué es Resource Management? |
|
Instance Class |
El nivel de 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 seleccione Data Transmission Service (Pay-as-you-go) Service Terms.
Haga clic en Buy and Start y luego en OK en el cuadro de diálogo de confirmación.
La tarea aparecerá en la lista de tareas. Monitoree su progreso desde allí.