Utilice Data Transmission Service (DTS) para migrar datos de una base de datos TiDB autogestionada a un clúster de PolarDB for MySQL. DTS admite la migración de esquemas, la migración completa de datos y la migración incremental de datos, lo que permite minimizar el tiempo de inactividad al mantener el destino sincronizado con el origen hasta el corte final.
El proceso general consta de cuatro etapas:
Cree el clúster de destino de PolarDB for MySQL y compruebe los permisos de la cuenta.
(Solo para migración incremental) Configure un clúster de Kafka y configure TiDB Binlog o TiCDC para transmitir los cambios a Kafka.
Cree y configure la tarea de migración de DTS.
Ejecute la verificación previa, adquiera la instancia y supervise el progreso de la tarea.
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Un clúster de PolarDB for MySQL con un espacio de almacenamiento mayor al que utiliza la base de datos de origen de TiDB. Consulte Purchase a pay-as-you-go PolarDB for MySQL cluster y Purchase a subscription PolarDB for MySQL cluster
Las cuentas de base de datos necesarias con los permisos indicados en Permisos obligatorios
(Solo para migración incremental) Un clúster de Kafka y una canalización de recopilación de datos incrementales configurada. Consulte (Opcional) Configurar la recopilación de datos incrementales
Permisos obligatorios
| Base de datos | Permisos obligatorios | Referencia |
|---|---|---|
| Base de datos TiDB | SHOW VIEW y SELECT en los objetos que se van a migrar | Privilege management |
| Clúster de PolarDB for MySQL | Lectura y escritura en la base de datos de destino | Create and manage database accounts |
Facturación
|
Tipo de migración |
Tarifa de configuración de la instancia |
Tarifa de tráfico por Internet |
|
Migración de esquema y migración completa de datos |
Gratuita |
Se aplica cuando Access Method está establecido en Public IP Address. Consulte Descripción general de facturación. |
|
Migración incremental de datos |
De pago. Consulte Descripción general de facturación. |
Consulte Descripción general de facturación. |
Operaciones SQL compatibles con la migración incremental
|
Tipo de operación |
Sentencias SQL |
|
DML |
INSERT, UPDATE, DELETE |
|
DDL |
CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE, ADD COLUMN, DROP COLUMN |
Notas de uso
Límites de la base de datos de origen
Ancho de banda de salida: El servidor de la base de datos de origen debe tener suficiente ancho de banda de salida. Un ancho de banda insuficiente reduce la velocidad de migración.
Clave primaria o restricción UNIQUE: Las tablas deben tener una PRIMARY KEY o una restricción UNIQUE con todos los campos únicos. Sin estas restricciones, la base de datos de destino podría contener registros duplicados.
Límite de tablas por tarea: Al migrar tablas individuales con ediciones a nivel de columna (como cambiar el nombre de columnas), una sola tarea admite hasta 1,000 tablas. Si tiene más de 1,000 tablas, divida el trabajo en varias tareas o migre toda la base de datos.
Restricciones de DDL durante la migración: Durante la migración de esquemas y la migración completa de datos, no ejecute operaciones DDL que modifiquen el esquema de la base de datos o de las tablas. La tarea de migración fallará si se detectan operaciones DDL.
Índices de prefijo: Los metadatos de TiDB no almacenan las longitudes de los índices de prefijo. Después de la migración, estas longitudes se pierden, lo que podría impedir que la instancia se ejecute. Corrija manualmente las longitudes de los índices de prefijo en las tablas afectadas después de la migración.
Requisitos de datos incrementales: La migración incremental de datos requiere un clúster de Kafka y componentes de TiDB Binlog o TiCDC. Consulte (Opcional) Configurar la recopilación de datos incrementales.
Otros límites
Incremental data partition: DTS lee los datos incrementales únicamente desde la partición con ID 0 en el tema de Kafka.
Inicialización de posición: Después de crear una tarea con migración incremental, realice cambios o inserte datos de prueba en la base de datos de origen de inmediato para actualizar la información de posición. De lo contrario, la tarea podría fallar debido a una latencia excesiva.
Caracteres de 4 bytes: Si los datos incluyen caracteres poco comunes o emoji (caracteres de 4 bytes), la base de datos y las tablas de destino deben usar el conjunto de caracteres UTF8mb4. Si utiliza la migración de esquemas de DTS, establezca también el parámetro de instancia
character_set_serveren UTF8mb4 en la base de datos de destino.Uso de recursos en la migración completa: La migración completa de datos consume recursos de lectura y escritura tanto en la base de datos de origen como en la de destino, lo que aumenta su carga. Evalúe el rendimiento de la base de datos antes de migrar y ejecute la migración completa en horas de baja demanda (por ejemplo, cuando la carga de CPU sea inferior al 30%).
Tamaño del tablespace después de la migración completa: Las operaciones INSERT simultáneas durante la migración completa de datos provocan fragmentación en las tablas. El tablespace en la base de datos de destino será mayor que en la base de datos de origen una vez completada la migración.
Escrituras en el destino durante la migración: Escribir en la base de datos de destino durante la migración puede causar inconsistencia de datos entre el origen y el destino.
Precisión de FLOAT y DOUBLE: DTS utiliza
ROUND(COLUMN,PRECISION)para leer valores FLOAT y DOUBLE. La precisión predeterminada es de 38 dígitos para FLOAT y 308 dígitos para DOUBLE. Compruebe que estos ajustes de precisión cumplen sus requisitos.Reanudación automática: DTS intenta reanudar automáticamente las tareas que fallaron en los últimos siete días. Antes de transferir las cargas de trabajo a la instancia de destino, detenga o libere la tarea de DTS, o ejecute
REVOKEpara eliminar los permisos de escritura de la cuenta de DTS en la instancia de destino.Fallos en DDL: Si una sentencia DDL falla en la base de datos de destino, la tarea de DTS continúa ejecutándose. Consulte las sentencias DDL fallidas en los registros de la tarea. Véase Ver registros de tareas.
Intervención de soporte técnico: Si una tarea de DTS falla, el soporte técnico intentará restaurarla en un plazo de 8 horas. Durante la restauración, la tarea podría reiniciarse y modificarse algunos parámetros de la tarea (no de la base de datos). Para conocer los parámetros que podrían modificarse, consulte la sección Modificar parámetros de instancia.
(Opcional) Configurar la recopilación de datos incrementales
Omita esta sección si solo necesita la migración de esquemas y la migración completa de datos.
Para capturar los cambios incrementales de TiDB, necesita un clúster de Kafka y TiDB Binlog o TiCDC. Ambos métodos utilizan Kafka como capa de transporte. Complete primero los pasos compartidos de configuración de Kafka y luego siga los pasos correspondientes al método elegido.
Paso 1: Configurar un clúster de Kafka
Utilice una de las siguientes opciones:
-
Clúster de Kafka autogestionado: Despliegue Apache Kafka siguiendo la documentación de Apache Kafka.
AvisoPara manejar el volumen de datos del registro binario de TiDB, aumente los siguientes parámetros en su configuración de Kafka. Consulte Configuración de Kafka.
Componente
Parámetro
Motivo
Broker
message.max.bytesEstablece el tamaño máximo de mensaje que acepta el broker. Los eventos del registro binario de TiDB pueden ser grandes, por lo que el límite predeterminado provoca fallos de escritura.
Broker
replica.fetch.max.bytesEstablece el número máximo de bytes que un seguidor puede obtener por solicitud. Debe ser al menos igual a
message.max.bytespara replicar mensajes de gran tamaño.Consumer
fetch.message.max.bytesEstablece el número máximo de bytes que un consumidor obtiene por partición. Debe ser al menos igual a
message.max.bytespara que DTS pueda leer eventos completos. -
Message Queue for Apache Kafka: Utilice el servicio administrado de Kafka de Alibaba Cloud. Consulte Getting started.
Despliegue la instancia de Message Queue for Apache Kafka en la misma virtual private cloud (VPC) que el servidor de la base de datos de origen para reducir la latencia de red y garantizar una conectividad estable.
Paso 2: Crear un tema de Kafka
Cree un tema en el clúster de Kafka o en la instancia de Message Queue for Apache Kafka.
El tema debe tener exactamente una partición. DTS lee los datos incrementales únicamente desde la partición con ID 0.
Paso 3: Configurar TiDB Binlog o TiCDC
Elija un método según su entorno:
<details> <summary>Opción A: TiDB Binlog</summary>
Para minimizar el impacto de la latencia de red, despliegue el componente Pump, el componente Drainer y el clúster de Kafka en servidores que compartan la misma red interna que el servidor de la base de datos TiDB de origen.
Despliegue los componentes Pump y Drainer. Consulte Despliegue de clúster de TiDB Binlog.
Edite el archivo de configuración de Drainer para establecer Kafka como salida. Consulte Desarrollo personalizado de Kafka.Kafka Custom Development
Compruebe que el servidor de la base de datos TiDB pueda conectarse al clúster de Kafka.
Agregue los bloques CIDR de los servidores DTS a la lista blanca de la base de datos TiDB. Consulte Agregar los bloques CIDR de los servidores DTS.
</details>
<details> <summary>Opción B: TiCDC</summary>
Instale el componente TiCDC. Utilice TiUP para agregar o escalar horizontalmente TiCDC en su clúster de TiDB existente. Consulte Desplegar TiCDC.
Replicar datos incrementales a Kafka utilizando
tiup cdc cli changefeed create \como primer comando. Consulte Replicar datos a Kafka.Compruebe que el servidor de la base de datos TiDB pueda conectarse al clúster de Kafka.
</details>
Crear una tarea de migración
Paso 1: Ir a la página de migración de datos
Utilice uno de los siguientes métodos:
Consola de DTS
Inicie sesión en la consola de DTS.DTS console
En el panel de navegación izquierdo, haga clic en Data Migration.
En la esquina superior izquierda, seleccione la región donde reside la instancia de migració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.DMS console
En la barra de navegación superior, mueva el puntero sobre Data + AI > DTS (DTS) > Data Migration.
En la lista desplegable a la derecha de Data Migration Tasks, seleccione la región donde reside la instancia de migración.
Paso 2: Configurar las bases de datos de origen y destino
Haga clic en Create Task.
En la página de configuración de la tarea, configure las bases de datos de origen y destino.
Parámetros de la base de datos de origen
|
Parámetro |
Descripción |
|
Task Name |
Nombre para la tarea de DTS. DTS genera un nombre automáticamente. Especifique un nombre descriptivo para facilitar su identificación. El nombre no necesita ser único. |
|
Select Existing Connection |
Seleccione una instancia de base de datos registrada en la lista desplegable o configure la conexión manualmente. En la consola de DMS, seleccione desde Select a DMS database instance. |
|
Database Type |
Seleccione TiDB. |
|
Access Method |
Seleccione el tipo de conexión según dónde esté desplegada la base de datos TiDB. Este ejemplo utiliza Self-managed Database on ECS. Para otros tipos de conexión, complete los preparativos correspondientes. |
|
Instance Region |
La región donde se encuentra la base de datos TiDB. |
|
ECS Instance ID |
El ID de la instancia de Elastic Compute Service (ECS) que ejecuta la base de datos TiDB. |
|
Port Number |
El puerto de servicio de la base de datos TiDB. Predeterminado: 4000. |
|
Database Account |
La cuenta para la base de datos TiDB. |
|
Database Password |
La contraseña de la cuenta de la base de datos TiDB. |
|
Migrate Incremental Data |
Para migrar datos incrementales, seleccione Yesconfiguración de notificaciones de alerta y complete la información del clúster de Kafka. Consulte Parámetros del clúster de Kafka. |
Parámetros de la base de datos de destino
|
Parámetro |
Descripción |
|
Select Existing Connection |
Seleccione una instancia de base de datos registrada en la lista desplegable o configure la conexión manualmente. En la consola de DMS, seleccione desde Select a DMS database instance. |
|
Database Type |
Seleccione PolarDB for MySQL. |
|
Access Method |
Seleccione Alibaba Cloud Instance. |
|
Instance Region |
La región donde se encuentra el clúster de destino de PolarDB for MySQL. |
|
Replicate Data Across Alibaba Cloud Accounts |
Seleccione No cuando utilice una instancia de base de datos bajo la cuenta actual de Alibaba Cloud. |
|
PolarDB Cluster ID |
Seleccione el ID del clúster de destino de PolarDB for MySQL. |
|
Database Account |
La cuenta para el clúster de destino de PolarDB for MySQL. |
|
Database Password |
La contraseña de la cuenta del clúster de destino de PolarDB for MySQL. |
|
Encryption |
Indica si se debe cifrar la conexión. Para obtener detalles sobre el cifrado SSL, consulte Configurar cifrado SSL. |
Paso 3: Probar la conectividad
En la parte inferior de la página, haga clic en Test Connectivity and Proceed. En el cuadro de diálogo CIDR Blocks of DTS Servers, haga clic en Test Connectivity.
Asegúrese de que los bloques CIDR de los servidores DTS estén agregados a la configuración de seguridad de las bases de datos de origen y destino. Consulte Agregar los bloques CIDR de los servidores DTS .
Paso 4: Configurar los objetos de migración
En la página Configure Objects, establezca los siguientes parámetros.
Tipos de migración y manejo de conflictos
| Parámetro | Descripción |
|---|---|
| Migration Types | Seleccione los tipos de migración según sus necesidades: <br>- Schema Migration + Full Data Migration: migra solo el esquema y los datos existentes. <br>- Schema Migration + Full Data Migration + Incremental Data Migration: minimiza el tiempo de inactividad al capturar también los cambios durante la migración. <br> Nota
Si omite Schema Migration, cree manualmente la base de datos y las tablas de destino, y habilite la asignación de nombres de objetos en Selected Objects. Si omite Incremental Data Migration, evite escribir en la base de datos de origen durante la migración para mantener la consistencia de los datos. |
| Processing Mode of Conflicting Tables | - Precheck and Report Errors (predeterminado): falla la verificación previa si el destino contiene tablas con los mismos nombres que el origen. Utilice la asignación de nombres de objetos para renombrar las tablas en conflicto. <br>- Ignore Errors and Proceed: omite la verificación previa de conflictos de nombres. Aviso
Esta opción conlleva riesgo de inconsistencia de datos: durante la migración completa, DTS omite los registros en conflicto; durante la migración incremental, DTS los sobrescribe. Si los esquemas difieren, solo se migrarán columnas específicas o la tarea podría fallar. |
| 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. Predeterminado: DTS default policy. Consulte Especificar el uso de mayúsculas en nombres de objetos en la instancia de destino. |
Selección de objetos
| Parámetro | Descripción |
|---|---|
| Source Objects | Seleccione las tablas o bases de datos a migrar. Haga clic en |
| Selected Objects | Haga clic derecho en un objeto para cambiarle el nombre. Consulte Asignar nombre a un solo objeto. Haga clic en Batch Edit para cambiar el nombre de varios objetos a la vez. Consulte Asignar nombres a múltiples objetos simultáneamente. Haga clic derecho en una tabla para configure a WHERE filter condition. Nota
Cambiar el nombre de un objeto puede impedir que se migren los objetos dependientes. Nota
|
Haga clic en Next: Advanced Settings.
Advanced settings
| Parámetro | Descripción |
|---|---|
| Select the engine type of the destination database | El motor de almacenamiento para la base de datos de destino: InnoDB (predeterminado) o X-Engine (para cargas de trabajo de procesamiento de transacciones en línea u OLTP). |
| Retry Time for Failed Connections | Tiempo durante el cual DTS reintenta conexiones fallidas después de iniciar la tarea. Rango: 10–1,440 minutos. Predeterminado: 720. Se recomienda establecer este parámetro en un valor superior a 30 minutos. Si la conexión se restablece dentro de este periodo, la tarea se reanuda; de lo contrario, falla. Nota
Cuando varias tareas comparten la misma base de datos de origen o destino, prevalece el valor establecido más recientemente. DTS cobra por la instancia durante el tiempo de reintento. |
| Retry Time for Other Issues | Tiempo durante el cual DTS reintenta operaciones DDL o DML fallidas. Rango: 1–1,440 minutos. Predeterminado: 10. Se recomienda establecer este parámetro en un valor superior a 10 minutos. Importante
Este valor debe ser menor que Retry Time for Failed Connections. |
| Enable Throttling for Full Data Migration | Limita el uso de recursos durante la migración completa de datos. 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 se selecciona Full Data Migration. |
| Enable Throttling for Incremental Data Migration | Limita el uso de recursos durante la migración incremental de datos. Configure RPS of Incremental Data Migration y Data migration speed for incremental migration (MB/s). Disponible solo cuando se selecciona Incremental Data Migration. |
| Environment Tag | Una etiqueta opcional para identificar la instancia de migración. |
| Configure ETL | Indica si se debe habilitar la extracción, transformación y carga (ETL). Seleccione Yes para introducir sentencias de procesamiento de datos. Consulte ¿Qué es ETL? y Configurar ETL en una tarea de migración o sincronización de datos. |
| Monitoring and Alerting | Indica si se deben configurar alertas para la tarea. Seleccione Yes para establecer un umbral de alerta y contactos de notificación. Consulte Configurar monitoreo y alertas al crear una tarea de DTS. |
Haga clic en Next Step: Data Verification para configurar la verificación de datos. Consulte Configurar una tarea de verificación de datos.
Paso 5: Ejecutar la verificación previa
Para previsualizar los parámetros de API de esta tarea, mueva 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.
DTS ejecuta una verificación previa antes de iniciar la migración. La tarea solo comienza después de aprobar dicha verificación.
Para los elementos de verificación previa fallidos, haga clic en View Details para diagnosticar el problema, resuélvalo y luego ejecute nuevamente la verificación previa.
Para elementos de alerta: si la alerta no se puede ignorar, corrija el problema y vuelva a ejecutar la verificación previa. Si la alerta se puede ignorar, haga clic en Confirm Alert Details , luego haga clic en Ignore > OK > Precheck Again .
Paso 6: Adquirir e iniciar la instancia
Espere hasta que Success Rate alcance 100%, luego haga clic en Next: Purchase Instance.
En la página Purchase Instance, configure la clase de instancia.
|
Parámetro |
Descripción |
|
Resource Group |
El resource group para la instancia de migración. Predeterminado: default resource group. Consulte ¿Qué es Resource Management? |
|
Instance Class |
La clase de instancia determina la velocidad de migración. Consulte Clases de instancias de migración de datos. |
Lea y acepte los Data Transmission Service (Pay-as-you-go) Service Terms seleccionando la casilla de verificación.
Haga clic en Buy and Start, luego haga clic en OK.
La tarea aparecerá en la página Data Migration. Supervise su progreso desde allí.
Parámetros del clúster de Kafka
Configure los siguientes parámetros cuando Migrate Incremental Data esté establecido en Yes.
|
Parámetro |
Descripción |
|
Kafka Cluster Type |
El tipo de conexión según dónde esté desplegado el 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 Connected VPC e introduzca Domain Name or IP. |
|
Kafka Data Source Component |
Seleccione según el método de recopilación incremental que haya configurado: Use the default binlog format of the TiDB database. (TiDB Binlog) o Use the TiCDC Canal-JSON format. (TiCDC). |
|
ECS Instance ID |
El ID de la instancia de ECS que ejecuta el clúster de Kafka. |
|
Port Number |
El puerto de servicio del clúster de Kafka. |
|
Kafka Cluster Account |
El nombre de usuario del clúster de Kafka. Déjelo en blanco si la autenticación no está habilitada. |
|
Kafka Cluster Password |
La contraseña del clúster de Kafka. Déjela en blanco si la autenticación no está habilitada. |
|
Kafka Version |
La versión del clúster 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 que contiene los datos incrementales. |