Data Transmission Service (DTS) le permite sincronizar datos de forma continua desde un clúster de PolarDB for MySQL hacia una base de datos Doris autogestionada para análisis a gran escala. Este tema describe la configuración mediante una base de datos Doris desplegada en una instancia de Elastic Compute Service (ECS).
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Una base de datos Doris de destino cuyo espacio de almacenamiento disponible sea mayor que el almacenamiento utilizado por el clúster de PolarDB for MySQL de origen.
El registro binario habilitado en el clúster de PolarDB for MySQL de origen, con el parámetro
loose_polar_log_binestablecido enON. Consulte Enable binary logging y Modificar parámetrosUn periodo de retención del registro binario de como mínimo tres días (se recomiendan siete días).
Cuentas de base de datos con los permisos obligatorios (consulte Permissions required).
Habilitar el registro binario en un clúster de PolarDB for MySQL genera cargos de almacenamiento por los archivos de registro binario.
Para conocer las versiones de bases de datos de origen y destino compatibles, consulte Overview of data synchronization solutions.
Permisos necesarios
Base de datos | Permisos obligatorios | Referencia |
Clúster de PolarDB for MySQL de origen | Permisos de lectura y escritura sobre los objetos que se van a sincronizar | |
Base de datos Doris de destino | USAGE_PRIV y los siguientes: SELECT_PRIV, LOAD_PRIV, ALTER_PRIV, CREATE_PRIV, DROP_PRIV |
Facturación
|
Synchronization type |
Cost |
|
Sincronización de esquemas y sincronización completa de datos |
Gratuita |
|
Sincronización incremental de datos |
Con cargo. Consulte Descripción general de la facturación |
Operaciones SQL compatibles con la sincronización incremental
|
Operation type |
Statements |
|
DML (Data Manipulation Language) |
INSERT, UPDATE, DELETE |
|
DDL (Data Definition Language) |
ADD COLUMN, MODIFY COLUMN, CHANGE COLUMN, DROP COLUMN, DROP TABLE, TRUNCATE TABLE, RENAME TABLE |
La operación RENAME TABLE puede provocar inconsistencias en los datos. Si cambia el nombre de una tabla seleccionada como objeto de sincronización, sus datos dejarán de sincronizarse con el destino. Para evitarlo, seleccione toda la base de datos como objeto de sincronización en lugar de tablas individuales. Además, compruebe que tanto la tabla original como la renombrada pertenezcan a bases de datos incluidas en el alcance de la sincronización.
Limitaciones
Base de datos de origen
Tablas con restricciones PRIMARY KEY o UNIQUE: todos los campos deben ser únicos; de lo contrario, el destino podría contener datos duplicados.
Tablas sin restricciones PRIMARY KEY ni UNIQUE: seleccione Schema Synchronization en Synchronization Types y duplicate en Engine durante el paso Configurations for Databases, Tables, and Columns.
Si selecciona tablas (y no bases de datos) como objetos de sincronización y necesita cambiar el nombre de tablas o columnas en el destino, una sola tarea admite hasta 1,000 tablas. Superar este límite provoca un error de solicitud. Configure varias tareas o sincronice toda la base de datos.
-
Requisitos del registro binario:
loose_polar_log_bindebe establecerse enONPeriodo de retención: como mínimo tres días; se recomiendan siete días.
No ejecute operaciones DDL que modifiquen los esquemas de bases de datos o tablas durante la sincronización inicial de esquemas ni durante la sincronización inicial completa de datos. DTS consulta la base de datos de origen durante la sincronización completa, lo que genera bloqueos de metadatos que pueden impedir las operaciones DDL.
Los cambios provenientes de operaciones no registradas en los registros binarios (como datos restaurados desde copias de seguridad físicas o generados por operaciones en cascada) no se sincronizan con el destino. Si esto ocurre y su negocio lo permite, elimine y vuelva a agregar la base de datos o tabla afectada entre los objetos de sincronización. Consulte Modify synchronization objects.
Limitaciones generales
DTS no sincroniza los nodos de solo lectura del clúster de PolarDB for MySQL de origen.
DTS no sincroniza las tablas externas de Object Storage Service (OSS) del origen.
No se admite el cambio entre nodo principal y en espera durante la sincronización inicial completa de datos. Si ocurre un cambio, vuelva a configurar la tarea de sincronización.
-
Solo se admiten tablas que usan Unique Key Model o Duplicate Key Model en Doris. Al utilizar Duplicate Key Model, DTS convierte las instrucciones UPDATE y DELETE en instrucciones INSERT. Pueden aparecer datos duplicados si ocurre alguna de las siguientes situaciones. Utilice las columnas adicionales
_is_deleted,_versiony_record_idpara deduplicar cuando sea necesario (consulte Additional columns added by DTS).Se ejecuta una operación de reintento en la instancia de sincronización de datos.
Se reinicia la instancia.
Se aplican dos o más operaciones DML a la misma fila después de iniciar la instancia.
En la sección Selected Objects solo se puede especificar el parámetro
bucket_count. El valor debe ser un número entero positivo. Valor predeterminado: auto.No cree clústeres en la base de datos Doris de destino durante la sincronización. Si lo hace, la tarea fallará. Reinicie la instancia de sincronización de datos para reanudarla.
Doris solo admite nombres de bases de datos y tablas que comiencen con una letra. Utilice la función de asignación de nombres de objetos para cambiar el nombre de cualquier objeto que empiece con un carácter distinto de una letra.
Si el nombre de una 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.
No es posible modificar operaciones DDL en varias columnas al mismo tiempo, ni aplicar modificaciones DDL consecutivas sobre una misma tabla.
No agregue nodos de backend (BE) a la base de datos Doris de destino durante la sincronización. Si lo hace, la tarea fallará. Reinicie la instancia de sincronización de datos para reanudarla.
En escenarios de fusión de varias tablas (varias tablas de origen sincronizadas hacia una sola tabla de destino), los esquemas de todas las tablas de origen deben ser idénticos. De lo contrario, podrían producirse inconsistencias en los datos o fallos en la tarea.
En PolarDB for MySQL,
VARCHAR(M)define M como longitud en caracteres. En Doris,VARCHAR(N)define N como longitud en bytes. Si no utiliza la sincronización de esquemas, establezca la longitud VARCHAR de Doris en cuatro veces la longitud VARCHAR correspondiente de MySQL para evitar la pérdida de datos.Cuando se usa DMS o gh-ost para aplicar cambios DDL en línea en el origen, DTS sincroniza únicamente el DDL original con el destino. Los cambios DDL en línea realizados con pt-online-schema-change no son compatibles y pueden provocar pérdida de datos o fallos de sincronización.
Durante la sincronización inicial completa de datos, DTS consume recursos de lectura y escritura de ambas bases de datos. Evalúe previamente el impacto en el rendimiento y programe la sincronización en horarios de baja demanda, cuando el uso de CPU en ambos extremos sea inferior al 30%.
Las operaciones INSERT simultáneas durante la sincronización inicial completa de datos provocan fragmentación de tablas en el destino. Una vez finalizada la sincronización completa, las tablas de destino podrían ocupar más almacenamiento que las de origen.
No utilice pt-online-schema-change ni herramientas similares para ejecutar operaciones DDL en línea sobre los objetos de sincronización mientras esta se encuentra activa, ya que provocaría un fallo.
Si durante la sincronización se escriben datos en la base de datos de destino desde orígenes distintos a DTS, podrían producirse inconsistencias entre el origen y el destino.
DTS ejecuta periódicamente
CREATE DATABASE IF NOT EXISTS \test\`` en el origen para avanzar la posición del registro binario.Durante la sincronización incremental, DTS aplica una estrategia por lotes y escribe en cada objeto de sincronización como máximo una vez cada cinco segundos. Esto puede generar una latencia de sincronización normal inferior a 10 segundos. Para reducirla, ajuste el parámetro
selectdb.reservoir.timeout.milliseconds(rango: 1,000–10,000 milisegundos) en la consola de DTS. Los intervalos de procesamiento por lotes más cortos aumentan la frecuencia de escritura, lo que puede elevar la carga y el tiempo de respuesta del destino.Si una instancia presenta errores, el soporte de DTS intenta recuperarla en un plazo de ocho horas. Durante la recuperación, la instancia podría reiniciarse o ajustarse sus parámetros. Solo se modifican los parámetros de la instancia de DTS; los de la base de datos permanecen sin cambios.
No se admite la sincronización de datos de tipo VECTOR.
Crear una tarea de sincronización de datos
Paso 1: Ir a la página de sincronización de datos
Utilice uno de los métodos a continuación:
Consola de DTS
Inicie sesión en la consola de DTS.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 reside la tarea de sincronización de datos.
Consola de DMS
Los pasos pueden variar según el modo y el diseño de la 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.consola de DMS
En la barra de navegación superior, coloque el puntero sobre Data + AI y elija DTS (DTS) > Data Synchronization.
En la lista desplegable junto a Data Synchronization Tasks, seleccione la región donde reside la instancia.
Paso 2: Configurar las bases de datos de origen y destino
Haga clic en Create Task.
Configure Task Name. DTS genera un nombre automáticamente. Especifique un nombre descriptivo para identificar la tarea con facilidad; no es obligatorio que sea único.
Configure las conexiones de las bases de datos de origen y destino con los parámetros a continuación.
Base de datos de origen (PolarDB for MySQL)
|
Parameter |
Value |
|
Select Existing Connection |
Seleccione una instancia registrada de la lista para completar automáticamente los campos siguientes o configúrelos manualmente. |
|
Database Type |
PolarDB for MySQL |
|
Access Method |
Alibaba Cloud Instance |
|
Instance Region |
La región donde reside el clúster de PolarDB for MySQL de origen. |
|
Replicate Data Across Alibaba Cloud Accounts |
No (este ejemplo utiliza la cuenta actual). |
|
PolarDB Cluster ID |
El identificador del clúster de PolarDB for MySQL de origen. |
|
Database Account |
La cuenta del clúster de origen (consulte Permissions required). |
|
Database Password |
La contraseña de la cuenta de la base de datos. |
|
Encryption |
Selecciónela según sea necesario. Para la configuración de SSL, consulte Configure SSL encryption. |
Base de datos de destino (Doris)
|
Parameter |
Value |
|
Select Existing Connection |
Seleccione una instancia registrada de la lista para completar automáticamente los campos siguientes o configúrelos manualmente. |
|
Database Type |
Doris |
|
Access Method |
Self-managed Database on ECS (en este ejemplo). Para otros métodos de acceso, consulte Preparations. |
|
Instance Region |
La región donde reside la base de datos Doris de destino. |
|
ECS Instance ID |
El identificador de la instancia de ECS que ejecuta la base de datos Doris. Si los nodos BE o frontend (FE) están en instancias de ECS distintas, agregue los bloques CIDR de los servidores de DTS a las reglas de seguridad de cada instancia. |
|
Port Number |
El puerto de servicio de la base de datos Doris de destino. Valor predeterminado: 9030 |
|
Database Account |
La cuenta de la base de datos de destino (consulte Permissions required). |
|
Database Password |
La contraseña de la cuenta de la base de datos. |
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 de DTS estén agregados a la configuración de seguridad de las bases de datos de origen y destino. Consulte Agregar direcciones IP de servidores de DTS a una lista blanca .
Paso 3: Seleccionar los objetos de sincronización
En el paso Configure Objects, configure lo siguiente:
Parámetro | Descripción |
Synchronization Types | Seleccione Schema Synchronization, Full Data Synchronization y Incremental Data Synchronization. La sincronización completa establece los datos de referencia antes de iniciar la sincronización incremental. Si omite la sincronización de esquemas, cree previamente las tablas de destino con Unique Key Model o Duplicate Key Model. Consulte Data type mappings, Additional columns added by DTS y Unique Key Model |
Processing Mode of Conflicting Tables | Precheck and Report Errors: reporta un error si existe una tabla con el mismo nombre en el destino. Ignore Errors and Proceed: omite la comprobación. Si los esquemas de las tablas difieren, la inicialización de datos podría fallar o sincronizarse solo algunas columnas. Si los esquemas son iguales, los datos de origen sobrescriben los registros de destino con claves primarias o únicas coincidentes. |
Capitalization of Object Names in Destination Instance | De manera predeterminada, aplica DTS default policy. Ajústelo según sea necesario. Consulte Especificar el uso de mayúsculas en los nombres de objetos |
Source Objects | Seleccione las bases de datos o tablas que desea sincronizar y haga clic en el ícono de flecha derecha para agregarlas a Selected Objects. |
Selected Objects | Haga clic con el botón derecho en un objeto para cambiarle el nombre, filtrar datos con condiciones WHERE o seleccionar operaciones SQL específicas. Si la sincronización de esquemas está habilitada, haga clic con el botón derecho en una tabla y configure |
Haga clic en Next: Advanced Settings y configure lo siguiente:
|
Parameter |
Description |
|
Dedicated Cluster for Task Scheduling |
De manera predeterminada, DTS utiliza 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 tras un fallo de conexión. Rango: 10–1,440 minutos. Valor predeterminado: 720. Establézcalo en como mínimo 30. Si la reconexión se logra dentro de este periodo, la sincronización se reanuda; de lo contrario, la tarea falla. Se aplica el valor más corto entre las tareas que comparten el mismo origen o destino. |
|
Retry Time for Other Issues |
Tiempo durante el cual DTS reintenta tras fallos de DDL o DML. Rango: 1–1,440 minutos. Valor predeterminado: 10. Establézcalo en como mínimo 10. Debe ser menor que Retry Time for Failed Connections. |
|
Enable Throttling for Full Data Synchronization |
Limite la sincronización completa definiendo las QPS (consultas por segundo) hacia el origen, las RPS (filas por segundo) de la migración completa y la velocidad de migración de datos. Disponible solo cuando se selecciona Full Data Synchronization. |
|
Enable Throttling for Incremental Data Synchronization |
Limite la sincronización incremental definiendo las RPS y la velocidad de sincronización de datos. |
|
Whether to delete SQL operations on heartbeat tables of forward and reverse tasks |
Yesconfiguración de notificaciones de alerta: no escribe el SQL de latido en el origen (podría mostrarse latencia). No: escribe el SQL de latido (puede afectar la copia de seguridad física y la clonación del origen). |
|
Environment Tag |
Opcional. Etiquete la instancia para identificar el entorno. |
|
Configure ETL |
Habilite extract, transform, and load (ETL) para aplicar transformaciones de datos. Consulte ¿Qué es ETL? y Configure ETL |
|
Monitoring and Alerting |
Configure alertas para fallos de tareas o latencias que superen un umbral. Consulte Configurar monitoreo y alertas |
(Opcional) Haga clic en Next: Configure Database and Table Fields. Especifique Primary Key Column, Distribution Key y Engine para cada tabla.
Este paso solo está disponible cuando se selecciona Schema Synchronization . Establezca Definition Status en All para ver todas las tablas.
Primary Key Column admite varias columnas. Distribution Key debe ser un subconjunto de las columnas de clave primaria.
Para las tablas sin claves primarias ni restricciones UNIQUE, seleccione duplicate en Engine . De lo contrario, la tarea podría fallar o perderse datos.
Paso 4: Ejecutar la comprobación previa
Haga clic en Next: Save Task Settings and Precheck.
DTS ejecuta una comprobación previa antes de iniciar la tarea. Esta comienza únicamente después de aprobar todas las comprobaciones.
Si alguna comprobación falla, haga clic en View Details para ver la causa, corrija el problema y vuelva a ejecutar la comprobación previa.
Si aparece una advertencia: corríjala y vuelva a ejecutarla si el elemento no se puede ignorar; haga clic en Confirm Alert Details > Ignore > OK > Precheck Again si el elemento se puede ignorar de forma segura. Ignorar advertencias puede provocar inconsistencias en los datos.
Para previsualizar los parámetros de openapi de esta configuración de tarea, coloque el puntero sobre Next: Save Task Settings and Precheck y haga clic en Preview OpenAPI parameters.
Paso 5: Adquirir una instancia
Espere a que Success Rate alcance 100% y luego haga clic en Next: Purchase Instance.
En la página de compra, configure lo siguiente:
|
Parameter |
Description |
|
Billing Method |
Subscription: pago anticipado por un plazo fijo, más rentable para uso prolongado. Pay-as-you-go: facturación por hora, adecuada para uso a corto plazo. Libere la instancia cuando ya no la necesite para detener los cargos. |
|
Resource Group Settings |
El resource group de la instancia. Valor predeterminado: default resource group. Consulte ¿Qué es Resource Management? |
|
Instance Class |
Selecciónela según sus requisitos de rendimiento. Consulte Clases de instancia de las instancias de sincronización de datos |
|
Subscription Duration |
Disponible para la facturación por suscripción. Opciones: de 1 a 9 meses, o 1, 2, 3 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.
La tarea aparecerá en la lista de tareas. Desde ahí podrá monitorear su progreso.
Asignaciones de tipos de datos
La tabla a continuación muestra cómo se asignan los tipos de datos de PolarDB for MySQL a los de Doris.
Categoría | PolarDB for MySQL | Doris |
Numérico | 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 | Decimal (no se admite ZEROFILL) |
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 |
Notas sobre la conversión de CHAR y VARCHAR:
Los valores CHAR y VARCHAR(n) se convierten a
VARCHAR(4*n)para evitar la pérdida de datos. Esto compensa la diferencia en la definición del tamaño VARCHAR entre PolarDB for MySQL (longitud en caracteres) y Doris (longitud en bytes).Si no se especifica una longitud, el valor predeterminado es
VARCHAR(65533).Los valores que superan los 65,533 caracteres se convierten al tipo STRING.
Si no utiliza la sincronización de esquemas, establezca la longitud VARCHAR de Doris en cuatro veces la longitud VARCHAR correspondiente de MySQL.
Columnas adicionales agregadas por DTS
Al sincronizar con una tabla que utiliza Duplicate Key Model, DTS agrega automáticamente las siguientes columnas a la tabla de destino:
|
Column |
Data type |
Default |
Description |
|
|
Int |
0 |
Indicador de eliminación: 0 para operaciones INSERT y UPDATE, 1 para operaciones DELETE. |
|
|
Bigint |
0 |
0 durante la sincronización completa; la marca de tiempo del registro binario correspondiente (en segundos) durante la sincronización incremental. |
|
|
Bigint |
0 |
0 durante la sincronización completa; el identificador de registro único e incremental del registro incremental durante la sincronización incremental. |
Utilice estas columnas para deduplicar datos cuando la tabla de destino emplea Duplicate Key Model.