Utilice Data Transmission Service (DTS) para migrar datos de un clúster de PolarDB for MySQL a una instancia de ApsaraDB for SelectDB y procesar cargas de trabajo analíticas a gran escala. DTS admite la migración de esquemas, la migración completa de datos y la migración incremental de datos, por lo que es posible migrar con un tiempo de inactividad mínimo.
Requisitos previos
Antes de empezar, compruebe que cuenta con lo siguiente:
Un clúster de origen de PolarDB for MySQL.
Una ApsaraDB for SelectDB instance de destino.
Cuentas de base de datos con los permisos obligatorios en ambas instancias (consulte Permissions required).
Facturación
|
Tipo de migración |
Tarifas de configuración del enlace |
Tarifas de transferencia de datos |
|
Migración de esquemas + migración completa de datos |
Gratuita |
Gratuita (salvo que el método de acceso de destino sea Public IP Address; consulte Billing overview) |
|
Migración incremental de datos |
De pago; consulte Billing overview |
— |
Permisos obligatorios
| Base de datos | Migración de esquemas | Migración completa | Migración incremental |
|---|---|---|---|
| Origen: PolarDB for MySQL | SELECT | SELECT | Lista de control de acceso |
| Destino: SelectDB | USAGE_PRIV, SELECT_PRIV, LOAD_PRIV, ALTER_PRIV, CREATE_PRIV, DROP_PRIV | ||
Para crear cuentas y otorgar permisos, siga estas indicaciones:
PolarDB for MySQL: consulte Create and manage database accounts y Manage the password of a database account.
SelectDB: consulte Cluster permission management y Basic permission management.
Límites
Base de datos de origen
|
Límite |
Detalles |
|
Ancho de banda |
El servidor de la base de datos de origen debe tener como mínimo 100 Mb/s de ancho de banda de salida. Un ancho de banda inferior reduce la velocidad de migración. |
|
Objetos no compatibles |
No se pueden migrar nodos de solo lectura, tablas externas de OSS, índices, particiones, vistas, procedimientos, funciones, desencadenadores ni claves externas. |
|
Límite de tablas para la asignación de columnas |
Si asigna nombres de columnas o edita los objetos de migración, una sola tarea admite hasta 1,000 tablas. Para migrar más, divida las tablas en varias tareas o migre toda la base de datos sin ediciones a nivel de columna. |
|
Registro binario (solo migración incremental) |
Habilite el registro binario y establezca el parámetro |
|
Retención de registros binarios (solo migración incremental) |
Conserve los registros binarios durante como mínimo 3 días (se recomiendan 7 días). Si DTS no puede recuperar los registros binarios, la migración podría fallar o provocar inconsistencia o pérdida de datos. Este escenario no está cubierto por el acuerdo de nivel de servicio (SLA) de DTS. Consulte Modificar el periodo de retención. |
Base de datos de destino (SelectDB)
|
Límite |
Detalles |
|
Motores compatibles |
Solo se admiten tablas que usan el motor Unique o Duplicate. |
|
Motor Unique |
Todas las claves únicas de la tabla de destino deben existir en la tabla de origen e incluirse en los objetos de migración. De lo contrario, podría producirse inconsistencia de datos. |
|
Motor Duplicate |
Pueden aparecer filas duplicadas cuando ocurre un reintento, se reinicia la instancia o se ejecutan dos o más operaciones DML sobre la misma fila después de iniciar la instancia. Utilice las columnas adicionales |
|
Parámetro |
En el cuadro Selected Objects, solo se puede configurar el parámetro |
|
Reglas de nomenclatura |
Los nombres de bases de datos y tablas deben comenzar con una letra. Los nombres de objeto que contengan caracteres chinos (bases de datos, tablas o columnas) deben renombrarse mediante la función de asignación de nombres de objeto antes de la migración. |
|
Conversión de longitud VARCHAR |
En PolarDB for MySQL, |
|
Fusión de varias tablas |
Al migrar varias tablas de origen hacia una sola tabla de destino, los esquemas de las tablas de origen deben ser idénticos. Las diferencias de esquema provocan inconsistencia de datos o el fallo de la tarea. |
Límites operativos durante la migración
Evite las siguientes acciones mientras la migración esté en ejecución:
|
Acción prohibida |
Riesgo |
|
Operaciones DDL que modifican esquemas (durante la migración de esquemas o la migración completa) |
La tarea de migración falla. |
|
Operaciones DDL que modifican varias columnas a la vez o la misma tabla de forma consecutiva |
No son compatibles; la tarea falla. |
|
Operaciones DDL en línea con pt-online-schema-change en el origen |
No se pueden migrar; podrían causar pérdida de datos o el fallo de la tarea. |
|
Creación de clústeres en la instancia de SelectDB de destino |
La tarea falla. Reinicie la instancia de migración para reanudarla. |
|
Adición de nodos de backend (BE) a SelectDB |
La tarea falla. Reinicie la instancia de migración para reanudarla. |
|
Escritura de datos en el destino desde orígenes distintos de DTS |
Podría causar inconsistencia de datos. |
|
Escritura de datos nuevos en el origen (solo migración completa, sin migración incremental) |
Provoca inconsistencia de datos entre el origen y el destino. |
|
Conmutación por error entre nodo principal y secundario durante la migración completa |
DTS no admite la conmutación por error durante la migración completa. Vuelva a configurar la tarea si ocurre una conmutación. |
Otras consideraciones
DDL en línea con DMS o gh-ost: DTS migra únicamente las instrucciones DDL originales, no los datos de las tablas temporales. Esto podría bloquear las tablas de destino.
Operaciones fuera del registro binario: Los cambios de datos que no se registran en los registros binarios (como la recuperación de copias de seguridad físicas y las operaciones en cascada) no se migran. Ejecute de nuevo una migración completa de datos si esto ocurre.
RENAME TABLE: La instrucción RENAME TABLE durante la migración incremental podría causar inconsistencia de datos. Si renombra una tabla que es objeto de migración, sus datos podrían no migrarse. Para evitarlo, seleccione la base de datos (no tablas individuales) como objeto de migración y compruebe que la base de datos aparezca en los objetos de migración tanto antes como después del cambio de nombre.
Latencia de sincronización incremental: De forma predeterminada, DTS escribe en cada objeto de sincronización como máximo una vez cada 5 segundos. La latencia normal suele mantenerse por debajo de 10 segundos. Para reducirla, ajuste el parámetro
selectdb.reservoir.timeout.millisecondsen la consola de DTS (rango válido: 1,000–10,000 ms). Los intervalos más cortos aumentan la frecuencia de escritura y podrían elevar la carga del destino y el tiempo de respuesta (RT) de escritura.Impacto en el rendimiento: La migración completa lee todos los datos de origen y escribe en el destino de forma concurrente, lo que aumenta la carga en ambas bases de datos. Ejecute las migraciones en horarios de baja demanda y habilite la limitación de velocidad cuando sea necesario.
Tamaño del tablespace tras la migración completa: Las operaciones INSERT concurrentes durante la migración completa generan fragmentación. Por ello, el tablespace de destino podría ser mayor que el de origen al finalizar la migración.
Recuperación de instancias: Si la instancia de migración falla, el equipo de soporte de DTS intenta recuperarla en un plazo de 8 horas. La recuperación podría implicar reiniciar la instancia o ajustar parámetros de la instancia de DTS (no parámetros de la base de datos). Consulte Modificar parámetros de instancia para conocer los parámetros que se pueden modificar.
Operaciones SQL compatibles con la migración incremental
|
Tipo de operación |
Instrucciones SQL |
|
DML |
INSERT, UPDATE, DELETE |
|
DDL |
ADD COLUMN, MODIFY COLUMN, CHANGE COLUMN, DROP COLUMN, DROP TABLE, TRUNCATE TABLE, RENAME TABLE |
La instrucción RENAME TABLE podría causar inconsistencia de datos. Si selecciona una tabla como objeto de migración y la renombra durante el proceso, sus datos podrían no migrarse al destino. Para evitarlo, seleccione la base de datos (no tablas individuales) como objeto de migración y compruebe que la base de datos aparezca en los objetos de migración tanto antes como después del cambio de nombre.
Creación de una tarea de migración
Paso 1: Abrir la página Data Migration
Utilice una de las siguientes consolas:
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
Nota
Los pasos exactos pueden variar según el modo y el diseño de su consola de DMS. Consulte Modo simple y Personalizar el diseño y el estilo de la consola de DMS.
Inicie sesión en la consola de DMS.DMS console
En la barra de navegación superior, vaya a Data + AI > DTS (DTS) > Data Migration.
En la lista desplegable situada 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 de destino
Haga clic en Create Task.
En la página de configuración de la tarea, configure los siguientes parámetros.
General
|
Parámetro |
Descripción |
|
Task Name |
Nombre de la tarea de DTS. DTS genera un nombre automáticamente. Especifique un nombre descriptivo para identificar la tarea. No es obligatorio que el nombre sea único. |
Source Database
|
Parámetro |
Descripción |
|
Select Existing Connection |
Si la instancia de origen ya está registrada en DTS, selecciónela en la lista desplegable; DTS completará automáticamente los parámetros restantes. En la consola de DMS, utilice la lista desplegable Select a DMS database instance. Si la instancia no está registrada, configure manualmente los parámetros siguientes. |
|
Database Type |
Seleccione PolarDB for MySQL. |
|
Access Method |
Seleccione Alibaba Cloud Instance. |
|
Instance Region |
Región donde reside el clúster de origen de PolarDB for MySQL. |
|
Replicate Data Across Alibaba Cloud Accounts |
Seleccione No para migraciones dentro de la misma cuenta. Para migrar entre cuentas distintas, primero configure RAM authorization. |
|
PolarDB Cluster ID |
Identificador del clúster de origen de PolarDB for MySQL. |
|
Database Account |
Cuenta de base de datos del clúster de origen. Consulte Permissions required. |
|
Database Password |
Contraseña de la cuenta de base de datos. |
|
Encryption |
Seleccione una opción según la configuración de su clúster de PolarDB for MySQL. Para obtener detalles sobre el cifrado Secure Sockets Layer (SSL), consulte Configure SSL encryption. |
Destination Database
|
Parámetro |
Descripción |
|
Select Existing Connection |
Si la instancia de destino ya está registrada en DTS, selecciónela en la lista desplegable. En la consola de DMS, utilice la lista desplegable Select a DMS database instance. Si no está registrada, configure manualmente los parámetros siguientes. |
|
Database Type |
Seleccione SelectDB. |
|
Access Method |
Seleccione Alibaba Cloud Instance. |
|
Instance Region |
Región donde reside la instancia de destino de SelectDB. |
|
Replicate Data Across Alibaba Cloud Accounts |
Seleccione No para migraciones dentro de la misma cuenta. |
|
Instance ID |
Identificador de la instancia de destino de SelectDB. |
|
Database Account |
Cuenta de base de datos de la instancia de destino de SelectDB. Consulte Permissions required. |
|
Database Password |
Contraseña de la cuenta de base de datos. |
Haga clic en Test Connectivity and Proceed.
Los bloques CIDR de los servidores de DTS deben agregarse a la configuración de seguridad de ambas bases de datos para que la prueba de conectividad sea exitosa. Consulte Agregar direcciones IP de servidores de DTS a una lista blanca .
Paso 3: Seleccionar los objetos de migración
En la página Configure Objects, configure los siguientes ajustes.
|
Configuración |
Descripción |
|
Migration Types |
Seleccione los tipos de migración según sus necesidades: Solo migración completa: seleccione Schema Migration y Full Data Migration. Migración con tiempo de inactividad mínimo: seleccione Schema Migration, Full Data Migration y Incremental Data Migration. |
|
Processing Mode of Conflicting Tables |
Precheck and Report Errors (predeterminado): DTS comprueba si existen tablas con el mismo nombre en el destino. Si hay duplicados, la comprobación previa falla y la tarea no inicia. Para resolverlo sin eliminar la tabla de destino, utilice object name mapping. Ignore Errors and Proceed: DTS omite la comprobación de tablas duplicadas. Úselo con precaución: si los esquemas coinciden, los registros de origen sobrescriben los registros de destino con la misma clave principal; si difieren, algunas columnas podrían no migrarse o la tarea podría fallar. |
|
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 del destino. El valor predeterminado es DTS default policy. Consulte Especificar el uso de mayúsculas y minúsculas en los nombres de objeto de la instancia de destino. |
|
Source Objects |
Seleccione las bases de datos o tablas que desea migrar. Haga clic en el icono de flecha para agregarlas a Selected Objects. |
|
Selected Objects |
Haga clic con el botón derecho en un objeto de migración para renombrarlo, establecer el parámetro |
Si no selecciona Schema Migration, cree las tablas con el modelo de clave Unique o Duplicate en la instancia de destino de SelectDB antes de iniciar la migración. Consulte Data type mappings, Additional columns y Data model.
Si no selecciona Incremental Data Migration, no escriba datos nuevos en la instancia de origen durante la migración.
El uso de la asignación de nombres de objeto podría provocar que los objetos dependientes fallen durante la migración.
Haga clic en Next: Advanced Settings y configure lo siguiente.
|
Configuración |
Descripción |
|
Dedicated Cluster for Task Scheduling |
De forma predeterminada, DTS utiliza un 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 las conexiones fallidas. Rango válido: 10–1,440 minutos. Valor predeterminado: 720 minutos. Establézcalo en como mínimo 30 minutos. Si DTS se reconecta dentro de este periodo, la migración se reanuda; de lo contrario, la tarea falla. Tenga en cuenta que las tareas distintas que comparten el mismo origen o destino utilizan el valor configurado más recientemente, y que DTS cobra por la instancia durante los reintentos. |
|
Retry Time for Other Issues |
Tiempo durante el cual DTS reintenta las operaciones DDL o DML fallidas. Rango válido: 1–1,440 minutos. Valor predeterminado: 10 minutos. Establézcalo en como mínimo 10 minutos. Debe ser menor que Retry Time for Failed Connections. |
|
Enable Throttling for Full Data Migration |
Limita la carga de lectura y escritura durante la migración completa. 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 la carga durante la migración incremental. 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 |
(Opcional) Etiqueta para identificar la instancia. |
|
Whether to delete SQL operations on heartbeat tables of forward and reverse tasks |
Yesconfiguración de notificaciones de alerta: no escribe las operaciones de latido en el origen (podría aparecer un indicador de latencia en la instancia de DTS). No: escribe las operaciones de latido (podría afectar la copia de seguridad física y la clonación del origen). |
|
Configure ETL |
Yes: configura el procesamiento de extracción, transformación y carga (ETL) mediante instrucciones de procesamiento de datos en el editor de código. Consulte Configurar ETL en una tarea de migración o sincronización de datos y ¿Qué es ETL?. No: omite ETL. |
|
Monitoring and Alerting |
Yes: configura alertas para fallos de tarea o latencias que superen un umbral. Establezca el umbral de alerta y los contactos de notificación. Consulte Configurar monitoreo y alertas al crear una tarea de DTS. No: no se configuran alertas. |
(Opcional) Haga clic en Next: Configure Database and Table Fields para establecer Primary Key Column, Distribution Key y Engine de las tablas de destino.
Este paso solo está disponible cuando se selecciona Schema Migration . Establezca Definition Status en All para ver todas las tablas.
Seleccione una o más columnas como Primary Key Column . Como mínimo, una columna de clave principal también debe seleccionarse como Distribution Key .
Para las tablas sin claves principales ni restricciones UNIQUE, establezca Engine en duplicate . De lo contrario, la migración podría fallar o perderse datos.
Paso 4: Ejecutar una comprobación previa
Haga clic en Next: Save Task Settings and Precheck.
Para previsualizar los parámetros de API de esta tarea, coloque el cursor sobre Next: Save Task Settings and Precheck y haga clic en Preview OpenAPI parameters .
DTS ejecuta una comprobación previa antes de iniciar la migración. La tarea solo puede comenzar después de superar esta comprobación.
Si un elemento de comprobación falla, haga clic en View Details junto al elemento con errores, corrija el problema y luego haga clic en Precheck Again.
-
Si se activa una alerta:
Si no se puede ignorar, haga clic en View Details, corrija el problema y vuelva a ejecutar la comprobación previa.
Si se puede ignorar, haga clic en Confirm Alert Details, luego en Ignore en el cuadro de diálogo, después en OK y finalmente en Precheck Again.
Ignorar las alertas de la comprobación previa podría generar inconsistencia de datos u otros riesgos.
Paso 5: Adquirir e iniciar la instancia de migración
Espere a que Success Rate alcance 100% y luego haga clic en Next: Purchase Instance.
En la página Purchase Instance, configure lo siguiente.
| Sección | Parámetro | Descripción |
|---|---|---|
| New Instance Class | Resource Group | El resource group de la instancia de migración. Valor predeterminado: default resource group. Consulte What is Resource Management? |
| Instance Class | Determina la velocidad de migración. Selecciónelo según el volumen de datos y la ventana de migración. Consulte Clases de instancia de las instancias de migración de datos. |
Lea y acepte 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.
Siga el progreso de la migración en la página Data Migration:
Solo migración completa: la tarea se detiene automáticamente al finalizar. El estado muestra Completed.
Incremental migration: la tarea se ejecuta de forma continua y no se detiene automáticamente. El estado muestra Running.
Asignaciones de tipos de datos
A continuación se muestra cómo se asignan los tipos de datos de PolarDB for MySQL a los tipos de datos de SelectDB.
| Categoría | PolarDB for MySQL | SelectDB |
|---|---|---|
| Numéricos | TINYINT | TINYINT |
| TINYINT UNSIGNED | SMALLINT | |
| SMALLINT | SMALLINT | |
| SMALLINT UNSIGNED | INT | |
| MEDIUMINT | INT | |
| MEDIUMINT UNSIGNED | BIGINT | |
| INT | INT | |
| INT UNSIGNED | BIGINT | |
| BIGINT | BIGINT | |
| BIGINT UNSIGNED | LARGEINT | |
| BIT(M) | INT | |
| Decimal | Decimal (Zerofill no compatible) | |
| Numeric | Decimal | |
| Float | Float | |
| Double | DOUBLE | |
| BOOL / BOOLEAN | BOOLEAN | |
| Fecha y hora | DATE | DATEV2 |
| DATETIME[(fsp)] | DATETIMEV2 | |
| Timestamp[(fsp)] | DATETIMEV2 | |
| Time[(fsp)] | VARCHAR | |
| YEAR[(4)] | INT | |
| Cadena | CHAR / VARCHAR | VARCHAR |
| BINARY / VARBINARY | STRING | |
| TINYTEXT / TEXT / MEDIUMTEXT / LONGTEXT | STRING | |
| TINYBLOB / BLOB / MEDIUMBLOB / LONGBLOB | STRING | |
| ENUM | STRING | |
| SET | STRING | |
| JSON | STRING |
Para evitar la pérdida de datos, CHAR y VARCHAR(n) se convierten a VARCHAR(4*n) durante la migración a SelectDB.
Si no se especifica ninguna longitud, el valor predeterminado es VARCHAR(65533).
Los datos con más de 65,533 caracteres se convierten a STRING.
Columnas adicionales
Para las tablas que usan el motor Duplicate, DTS agrega automáticamente las siguientes columnas a las tablas de destino. Si crea las tablas de destino manualmente, agregue estas columnas usted mismo.
|
Nombre de columna |
Tipo de dato |
Valor predeterminado |
Descripción |
|
|
Int |
0 |
Indica si la fila está eliminada. 0 para INSERT y UPDATE; 1 para DELETE. |
|
|
Bigint |
0 |
0 para la migración completa. Para la migración incremental, corresponde a la marca de tiempo en segundos del registro binario de origen. |
|
|
Bigint |
0 |
0 para la migración completa. Para la migración incremental, corresponde al identificador de registro único autoincremental de la entrada del registro incremental. |
Pasos siguientes
Una vez finalizada la migración, compruebe la consistencia de los datos entre las bases de datos de origen y de destino. En el caso de la migración incremental, detenga las escrituras en el origen, permita que DTS sincronice los cambios restantes y luego dirija el tráfico de su aplicación hacia SelectDB.