Data Transmission Service (DTS) le permite migrar datos de ApsaraDB RDS for MySQL a una base de datos Apache Doris para análisis a gran escala. Esta guía utiliza una instancia de RDS for MySQL como origen y una base de datos Doris desplegada en una instancia ECS como destino.
Para consultar las versiones de bases de datos de origen y destino compatibles, consulte Migration solutions overview.
Funciones que admite DTS
|
Función |
Detalles |
|
Migración de esquemas |
DTS crea el esquema de destino automáticamente. Si omite este paso, cree tablas con el modelo Unique Key o Duplicate Key en Doris antes de la migración. |
|
Migración completa de datos |
Migra todos los datos existentes. |
|
Migración incremental de datos |
Sincroniza continuamente los cambios del registro binario de MySQL después de que finaliza la migración completa. Seleccione esta opción para lograr una migración con un tiempo de inactividad casi nulo. |
|
Operaciones DML |
INSERT, UPDATE, DELETE |
|
Operaciones DDL |
ADD COLUMN, MODIFY COLUMN, CHANGE COLUMN, DROP COLUMN, DROP TABLE, TRUNCATE TABLE, RENAME TABLE |
|
ETL |
Transformaciones ETL (extracción, transformación y carga) opcionales durante la migración. |
|
Limitación de velocidad |
Límites configurables de consultas por segundo (QPS) y filas por segundo (RPS) para la migración completa e incremental. |
Las operaciones RENAME TABLE pueden provocar inconsistencias en los datos. Si cambia el nombre de una tabla durante la migración, agregue tanto la base de datos con el nombre anterior como la del nombre nuevo a los objetos de migración.
Facturación
|
Tipo de migración |
Tarifa de configuración del enlace |
Tarifa de transferencia de datos |
|
Migración de esquemas + migración completa de datos |
Gratuita |
Gratuita (salvo que el método de acceso al destino sea Public IP Address) |
|
Migración incremental de datos |
De pago |
— |
Para obtener más detalles sobre los precios, consulte Billing overview.
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Una base de datos Apache Doris de destino con un espacio de almacenamiento mayor que el de la instancia de RDS for MySQL de origen
Una cuenta de base de datos para la instancia de RDS for MySQL de origen con los permisos que se indican a continuación
Una cuenta de base de datos para la base de datos Doris de destino con los permisos que se indican a continuación
Permisos obligatorios
| Base de datos | Migración de esquemas | Migración completa | Migración incremental |
|---|---|---|---|
| RDS for MySQL de origen | SELECT | SELECT | Lectura y escritura (REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW, SELECT si la cuenta no se creó en la consola de RDS) |
| Doris de destino | Usage_priv, Select_priv, Load_priv, Alter_priv, Create_priv, Drop_priv | ||
Para crear cuentas y otorgar permisos:
RDS for MySQL: consulte Create an account y Modify the permissions of an account.
Doris: consulte Autenticación y autorización.
Requisitos del registro binario (solo para migración incremental)
Para la migración incremental, la instancia de RDS for MySQL de origen debe tener el registro binario configurado correctamente:
binlog_format=ROWbinlog_row_image=FULLRetención local del registro binario: como mínimo 3 días (se recomiendan 7 días)
Si el origen es una base de datos MySQL autogestionada, los registros binarios locales deben conservarse durante al menos 7 días.
Si alguna de estas configuraciones es incorrecta, la comprobación previa falla y la migración no puede iniciarse.
Para obtener instrucciones sobre cómo establecer el periodo de retención del registro binario en RDS for MySQL, consulte Delete local logs automatically .
Límites
Revise estas restricciones antes de configurar la tarea de migración.
Límites de la base de datos de origen
El servidor que aloja la base de datos de origen debe contar con suficiente ancho de banda de salida. Un ancho de banda bajo reduce la velocidad de migración.
Si ejecuta una migración incremental en un clúster MySQL autogestionado con doble nodo primario (donde cada nodo actúa como primario del otro), habilite el parámetro
log_slave_updatesen el origen.Para migrar tablas con ediciones a nivel de columna (como la asignación de nombres de columnas), una sola tarea admite un máximo de 1,000 tablas. En migraciones más grandes, divida las tablas en varias tareas o migre toda la base de datos.
No ejecute operaciones DDL que modifiquen el esquema de la base de datos o de las tablas durante la migración de esquemas ni durante la migración completa de datos, ya que esto provocará errores en la tarea.
Si solo ejecuta la migración completa de datos (sin la incremental), no escriba datos nuevos en el origen durante el proceso.
Los datos generados por operaciones que no se registran en los registros binarios, como la restauración de copias de seguridad físicas o las operaciones en cascada, no se migran.
Si el origen es MySQL 8.0.23 o posterior y los datos contienen columnas invisibles, dichas columnas no se migran, lo que podría causar pérdida de datos. Ejecute
ALTER TABLE <table_name> ALTER COLUMN <column_name> SET VISIBLE;para hacer visibles las columnas invisibles antes de la migración. Las tablas sin clave primaria generan automáticamente una clave primaria invisible, por lo que también debe hacerla visible. Para obtener más información, consulte Generated Invisible Primary Keys.Las instancias de RDS for MySQL con la función always-confidential habilitada no admiten la migración completa de datos. Las instancias con Transparent Data Encryption (TDE) habilitado admiten todos los tipos de migración.
Límites del destino (Doris)
DTS solo puede escribir en tablas que utilizan el modelo Unique Key o Duplicate Key en Doris.
Cuando una tabla de destino usa el modelo Duplicate Key, DTS convierte las instrucciones UPDATE y DELETE en instrucciones INSERT. Pueden aparecer filas duplicadas si la tarea de migración se reintenta o se reinicia, o si varias operaciones DML afectan el mismo registro entre sincronizaciones. Utilice las columnas adicionales
_is_deleted,_versiony_record_idpara eliminar duplicados. Consulte Additional column information para obtener más detalles.El único parámetro de tabla configurable en DTS es
bucket_count(número de buckets). El valor debe ser un número entero positivo; el valor predeterminado esauto.No cree un clúster nuevo en la base de datos Doris de destino durante la migración. Si la tarea falla por este motivo, reinicie la instancia de migración.
No agregue nodos de backend (BE) al clúster de Doris durante la migración. Si la tarea falla por este motivo, reinicie la instancia de migración.
Doris solo acepta nombres de bases de datos y tablas que comienzan con una letra. Utilice la asignación de nombres de objetos para renombrar cualquier objeto que no cumpla con esta regla.
Si algún nombre de base de datos, tabla o columna contiene caracteres chinos, utilice la asignación de nombres de objetos para cambiarlo (por ejemplo, a un nombre en inglés). De lo contrario, la tarea podría fallar.
Evite las operaciones DDL que modifican varias columnas simultáneamente o que alteran la misma tabla en intervalos muy cortos.
En escenarios de fusión de varias tablas (donde múltiples tablas de origen se combinan en una sola tabla de destino), las tablas de origen deben tener esquemas idénticos.
MySQL
VARCHAR(M)utiliza longitud de caracteres (M), mientras que DorisVARCHAR(N)emplea longitud de bytes (N). Si omite la migración de esquemas y crea las tablas de Doris manualmente, establezca la longitud VARCHAR de Doris en cuatro veces la longitud VARCHAR de MySQL.Al usar Data Management (DMS) o gh-ost para ejecutar DDL en línea en el origen, DTS migra únicamente las instrucciones DDL originales y no los datos de las tablas temporales. Esto podría provocar bloqueos de tablas en el destino. pt-online-schema-change no es compatible con DDL en línea en el origen; su uso puede causar pérdida de datos o fallos en la tarea.
No utilice herramientas como pt-online-schema-change en los objetos de migración de la base de datos de origen durante el proceso.
La migración completa de datos utiliza operaciones INSERT concurrentes, lo que genera fragmentación en las tablas. Después de este proceso, las tablas de destino podrían ocupar más almacenamiento que las de origen.
Si otra fuente escribe en la base de datos de destino durante la migración, podrían producirse inconsistencias en los datos.
Comportamiento de la migración incremental
De forma predeterminada, DTS procesa por lotes las escrituras incrementales en el destino como máximo una vez cada 5 segundos por objeto de sincronización. Esto genera una latencia de sincronización normal de hasta 10 segundos.
Para reducir la latencia, ajuste el parámetro selectdb.reservoir.timeout.milliseconds de la instancia de DTS en la consola. El rango válido es de 1,000 a 10,000 milisegundos.
Los intervalos de procesamiento por lotes más cortos aumentan la frecuencia de escritura en el destino. Esto incrementa la carga y el tiempo de respuesta (RT) en Doris, lo que podría elevar la latencia general de sincronización. Ajústelos según la capacidad de carga del destino.
Recomendaciones de rendimiento
Antes de iniciar la migración, compruebe que la carga de CPU de las bases de datos de origen y de destino sea inferior al 30 %. Ejecute la migración fuera del horario de mayor actividad para minimizar el impacto en las cargas de trabajo de producción.
Casos especiales
Si el origen es una base de datos MySQL autogestionada:
Un failover entre nodos primario y secundario en el origen provoca errores en la tarea de migración.
DTS calcula la latencia comparando la marca de tiempo UNIX del último registro migrado con la hora actual. Si no se ejecutan operaciones DML en el origen durante un periodo prolongado, la latencia mostrada podría ser inexacta. Ejecute una operación DML en el origen para actualizarla o cree una tabla de latidos (heartbeat) en la que se escriba cada segundo.
DTS ejecuta periódicamente
CREATE DATABASE IF NOT EXISTSen el origen para avanzar el desplazamiento del registro binario.Para Amazon Aurora MySQL u otras instancias MySQL en clúster, confirme que el nombre de dominio o la dirección IP configurados en la tarea siempre resuelvan al nodo de lectura y escritura (RW).
Si el origen es una instancia de RDS for MySQL:
Las instancias de solo lectura de RDS for MySQL (como las de RDS for MySQL 5.6) no registran registros de transacciones, por lo que no pueden utilizarse como origen para la migración incremental.
DTS ejecuta periódicamente
CREATE DATABASE IF NOT EXISTSen el origen para avanzar el desplazamiento del registro binario.
Crear una tarea de migración
Paso 1: Abrir la página Data Migration
Utilice uno de los siguientes métodos para abrir la página Data Migration.
Consola de DTS
Inicie sesión en la consola de DTS.
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 Data Management (DMS)
La ruta de navegación exacta puede variar según el modo y el diseño de la consola de DMS. Para obtener más detalles, consulte Simple mode y Customize the layout and style of the DMS console .
Inicie sesión en la consola de DMS.
En la barra de navegación superior, coloque el puntero sobre Data + AI > DTS (DTS) > Data Migration.
En la lista desplegable junto a Data Migration Tasks, seleccione la región.
Paso 2: Configurar las bases de datos de origen y de destino
Haga clic en Create Task para abrir la página de configuración de la tarea y configure los siguientes parámetros.
|
Parámetro |
Configuración |
|
Task Name |
Introduzca un nombre descriptivo. No es obligatorio que los nombres sean únicos. |
|
Select Existing Connection (origen) |
Seleccione una instancia de base de datos registrada en DTS o configure el origen manualmente. |
|
Database Type (origen) |
MySQL |
|
Access Method (origen) |
Alibaba Cloud Instance |
|
Instance Region (origen) |
Región donde reside la instancia de RDS for MySQL de origen |
|
Replicate Data Across Alibaba Cloud Accounts |
No (este ejemplo utiliza una sola cuenta) |
|
RDS Instance ID |
ID de la instancia de RDS for MySQL de origen |
|
Database Account (origen) |
Cuenta con los permisos necesarios (consulte Requisitos previos) |
|
Database Password (origen) |
Contraseña de la cuenta de la base de datos |
|
Encryption |
Non-encrypted o SSL-encrypted. Para usar SSL, primero habilite el cifrado SSL en la instancia de RDS for MySQL. Consulte Use a cloud certificate to enable SSL encryption. |
|
Select Existing Connection (destino) |
Seleccione una instancia de base de datos registrada en DTS o configure el destino manualmente. |
|
Database Type (destino) |
Doris |
|
Access Method (destino) |
Self-managed Database on ECS (para este ejemplo). Para otros tipos de acceso, consulte Preparations. |
|
Instance Region (destino) |
Región donde reside la base de datos Doris de destino |
|
ECS Instance ID |
ID de la instancia ECS que aloja Doris. Si los nodos BE o FE de Doris se ejecutan en instancias ECS adicionales, agregue manualmente los bloques CIDR del servidor de DTS a las reglas de seguridad de cada una de esas instancias. |
|
Port Number |
Puerto de servicio de la base de datos Doris de destino (valor predeterminado: 9030) |
|
Database Account (destino) |
Cuenta con los permisos necesarios (consulte Requisitos previos) |
|
Database Password (destino) |
Contraseña de la cuenta de la base de datos |
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 Confirm authorization and test link.
Asegúrese de que los bloques CIDR del servidor de DTS puedan agregarse (de forma automática o manual) a la configuración de seguridad tanto del origen como del destino. Para obtener más detalles, consulte Add DTS server IP addresses to a whitelist.
Paso 4: Seleccionar los objetos y tipos de migración
En la página Configure Objects, configure los siguientes ajustes.
Tipos de migración
|
Objetivo |
Selección |
|
Migración completa con un tiempo de inactividad mínimo |
Schema Migration + Full Data Migration + Incremental Data Migration |
|
Solo migración completa (detener las escrituras en el origen durante la migración) |
Schema Migration + Full Data Migration |
Si omite Schema Migration, cree tablas con el modelo Unique Key o Duplicate Key y la estructura correcta en Doris antes de comenzar. Consulte Data type mappings, Additional column information y Primary Key Model.
Para las tablas sin clave primaria ni restricción UNIQUE, establezca Engine en duplicate durante el paso Configure Database and Table Fields.
Modo de procesamiento de tablas en conflicto
|
Opción |
Comportamiento |
|
Precheck and Report Errors |
Provoca un error en la comprobación previa si ya existen tablas con el mismo nombre en el destino. Cambie el nombre de las tablas en conflicto mediante object name mapping si es necesario. |
|
Ignore Errors and Proceed |
Omite la comprobación. Los registros con claves primarias coincidentes sobrescriben los registros de destino. Úselo con precaución, ya que podrían producirse inconsistencias en los datos. |
Uso de mayúsculas en los nombres de objetos de la instancia de destino
De forma predeterminada, se aplica DTS default policy. Modifique esta opción si necesita que el uso de mayúsculas en los nombres de objetos coincida con el del origen o el destino. Consulte Specify the capitalization of object names in the destination instance.
Selección y configuración de objetos de migración
En Source Objects, seleccione las bases de datos o tablas que desea migrar y luego haga clic en
para moverlas a Selected Objects.-
En Selected Objects, haga clic con el botón derecho en cualquier objeto para:
Asignarle un nombre distinto en el destino
Seleccionar operaciones SQL incrementales específicas a nivel de base de datos o de tabla
Establecer condiciones WHERE para filtrar filas (Set filter conditions)
Configurar el parámetro
bucket_count(si seleccionó la migración de esquemas): haga clic con el botón derecho en una tabla, vaya a Parameter Settings, establezca Enable Parameter Settings en Yes, introduzca el valor y haga clic en OK
El uso de la asignación de nombres de objetos puede provocar que los objetos dependientes fallen durante la migración.
Paso 5: Configurar los 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 utiliza el clúster compartido. Para mayor estabilidad, adquiera un clúster dedicado. Consulte What is a DTS dedicated cluster. |
|
Retry Time for Failed Connections |
Intervalo de tiempo (de 10 a 1,440 minutos; valor predeterminado: 720) durante el cual DTS reintenta las conexiones con errores. Establézcalo en más de 30 minutos. DTS reanuda la tarea si se reconecta dentro de este periodo; de lo contrario, la tarea falla. Durante los reintentos, la instancia de DTS sigue generando cargos. |
|
Retry Time for Other Issues |
Intervalo de tiempo (de 1 a 1,440 minutos; valor predeterminado: 10) durante el cual DTS reintenta las operaciones DDL o DML con errores. Establézcalo en más de 10 minutos. Debe ser menor que Retry Time for Failed Connections. |
|
Enable Throttling for Full Data Migration |
Limita el QPS hacia la base de datos de origen, el RPS y la velocidad de migración de datos (MB/s) para reducir la carga en el destino. Disponible solo cuando se selecciona Full Data Migration. |
|
Enable Throttling for Incremental Data Migration |
Limita el RPS y la velocidad de migración de datos (MB/s) para la migración incremental. Disponible solo cuando se selecciona Incremental Data Migration. |
|
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 aparecer un indicador de latencia). No: DTS escribe las operaciones de la tabla de latidos (podría afectar las copias de seguridad físicas y la clonación de la base de datos de origen). |
|
Environment Tag |
Etiqueta opcional para identificar el entorno de la instancia. |
|
Configure ETL |
Yes: introduzca las instrucciones de procesamiento de datos en el editor de código. Consulte Configure ETL in a data migration or data synchronization task. No: omita el proceso ETL. |
|
Monitoring and Alerting |
Yes: configure los umbrales de alerta y los contactos de notificación para fallos en la tarea o picos de latencia. Consulte Configure monitoring and alerting. No: omita las alertas. |
Paso 6: (Opcional) Configurar los campos de bases de datos y tablas
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 está disponible solo si se selecciona Schema Migration .
Establezca Definition Status en All para ver y modificar todas las tablas.
Primary Key Column admite claves primarias compuestas. Seleccione una o más columnas de Primary Key Column como Distribution Key .
Para las tablas sin clave primaria ni restricción UNIQUE, establezca Engine en duplicate .
Paso 7: Ejecutar la comprobación previa
Haga clic en Next: Save Task Settings and Precheck.
Para previsualizar los parámetros de openapi antes de guardar, 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 comienza únicamente cuando esta comprobación se supera correctamente.
Si algún elemento falla, haga clic en View Details junto al elemento con errores, resuelva el problema y haga clic en Precheck Again.
Si aparece una alerta no crítica que pueda ignorarse de forma segura, haga clic en Confirm Alert Details > Ignore > OK > Precheck Again. Ignorar alertas puede generar inconsistencias en los datos.
Paso 8: Adquirir e iniciar la instancia
Espere hasta que Success Rate alcance el 100% y luego haga clic en Next: Purchase Instance.
-
En la página Purchase Instance, configure la instancia:
Parámetro
Descripción
Resource Group
Resource group para la instancia de migración (valor predeterminado: default resource group). Consulte What is Resource Management?
Instance Class
Determina la velocidad de migración. Elija la opción adecuada según sus requisitos. Consulte Instance classes of data migration instances.
Lea y acepte los 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.
Verificar el estado de la migración
Consulte el progreso de la tarea en la página Data Migration.
Solo migración completa: la tarea se detiene automáticamente al finalizar. El estado muestra Completed.
Migración completa e incremental: la fase incremental se ejecuta de forma continua. El estado muestra Running.
Si una instancia presenta errores, el equipo de soporte de DTS intenta recuperarla en un plazo de 8 horas. Las operaciones de recuperación pueden incluir reiniciar la instancia y ajustar los parámetros de la instancia de DTS (no los de la base de datos). Para obtener más detalles, consulte Modify instance parameters .
Asignaciones de tipos de datos
DTS convierte automáticamente los tipos de datos de MySQL a los tipos correspondientes de Doris durante la migración de esquemas.
| Categoría | Tipo de MySQL | Tipo de Doris |
|---|---|---|
| Entero | 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 / NUMERIC | DECIMAL (atributo zerofill no compatible) |
| 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 |
CHAR y VARCHAR(n) se convierten a VARCHAR(4*n) en Doris para evitar la pérdida de datos.
Si no se especifica ninguna longitud, se utiliza el valor predeterminado de Doris VARCHAR(65533).
Si la longitud supera 65533, los datos se convierten a STRING.
Información de columnas adicionales
Para las tablas que utilizan el modelo Duplicate Key, DTS agrega automáticamente las siguientes columnas a la tabla de destino. Utilícelas para identificar y eliminar filas duplicadas.
|
Columna |
Tipo de datos |
Valor predeterminado |
Descripción |
|
|
INT |
0 |
Indicador de eliminación de fila: |
|
|
BIGINT |
0 |
|
|
|
BIGINT |
0 |
|