Data Transmission Service (DTS) mantiene sincronizado en tiempo real un clúster de PolarDB for MySQL con un clúster de ApsaraDB for ClickHouse. Esto permite centralizar el análisis sin interrumpir la base de datos de origen.
Tipos de sincronización y facturación
|
Synchronization type |
Billing |
|
Sincronización de esquemas |
Gratuita |
|
Sincronización completa de datos |
Gratuita |
|
Sincronización incremental de datos |
De pago. Para más detalles, consulte Descripción general de la facturación. |
Requisitos previos
Antes de empezar, compruebe lo siguiente:
Un clúster de ApsaraDB for ClickHouse con la versión V20.8 o posterior está listo como destino. Consulte Create an ApsaraDB for ClickHouse cluster.
El clúster de destino tiene más espacio de almacenamiento disponible que el tamaño total de los datos del clúster de origen de PolarDB for MySQL.
El registro binario está habilitado en el clúster de origen y
loose_polar_log_binestá establecido enon. Consulte Enable binary logging y Modificar parámetros.Las cuentas de la base de datos de origen tienen los permisos obligatorios (consulte Permissions required for database accounts).
Los registros binarios del clúster de origen deben conservarse durante como mínimo siete días. Un periodo de retención más corto puede provocar que DTS pierda su posición en el registro binario, lo que genera errores en la tarea o pérdida de datos. Habilitar el registro binario implica cargos de almacenamiento en PolarDB for MySQL.
Permisos obligatorios para las cuentas de base de datos
Base de datos | Permisos obligatorios | Referencias |
Clúster de origen de PolarDB for MySQL | Permisos de lectura sobre todos los objetos que se van a sincronizar | Create and manage a database account y Manage the password of a database account |
ApsaraDB for ClickHouse de destino V22.8 o posterior | Permisos de lectura y escritura en la base de datos de destino (una cuenta con privilegios es suficiente) | Manage database accounts in a Community-compatible Edition cluster |
ApsaraDB for ClickHouse de destino V21.8 | Read, Write and Set Permissions y Enable DDL | Igual que el anterior |
Límites
Límites de la instancia de origen
El servidor de origen debe contar con suficiente ancho de banda de salida. Un ancho de banda insuficiente ralentiza la sincronización.
Si sincroniza tablas y desea cambiarles el nombre o modificar columnas en el destino, una sola tarea admite hasta 1,000 tablas. Si supera esa cantidad, divida el trabajo en varias tareas o sincronice toda la base de datos.
No ejecute operaciones DDL en el origen durante la sincronización completa de datos, ya que esto provocará errores en la tarea.
No se admite la sincronización de datos de tipo VECTOR.
Otros límites
DTS no sincroniza nodos de solo lectura ni tablas externas de Object Storage Service (OSS) desde el clúster de origen.
Las instrucciones DDL que no correspondan a la sintaxis estándar de MySQL pueden generar errores en la tarea o pérdida de datos.
RENAME TABLE no es compatible.
Los valores DATETIME del origen deben estar dentro de los rangos de tiempo compatibles con ClickHouse (consulte Time range).
Todas las columnas seleccionadas como Partition Key deben ser campos no vacíos.
Se pueden sincronizar hasta 256 bases de datos hacia un solo clúster de ApsaraDB for ClickHouse.
Los nombres de bases de datos, tablas y columnas deben cumplir con las convenciones de nomenclatura de ApsaraDB for ClickHouse. Consulte Limits on object naming conventions.
Durante la sincronización de esquemas, DTS agrega los campos
_sign,_is_deletedy_versiona las tablas de destino. Si deshabilita Schema Synchronization, cree la tabla de destino manualmente e incluya estos campos.No escriba datos de otras fuentes en la base de datos de destino durante la sincronización. Las escrituras simultáneas generan inconsistencia en los datos.
No utilice pt-online-schema-change para ejecutar DDL en las tablas que se sincronizan a nivel de tabla. En su lugar, use DDL sin bloqueo de Data Management (DMS).
Ejecute la sincronización en horarios de baja demanda siempre que sea posible. La sincronización completa de datos consume recursos de lectura y escritura en ambos clústeres.
Si una tarea presenta errores, el soporte de DTS intentará restaurarla en un plazo de 8 horas. Durante este proceso, podría reiniciar la tarea o modificar sus parámetros (no los de la base de datos).
Operaciones SQL compatibles con la sincronización de datos
DML
INSERT, UPDATE y DELETE
DDL
|
DDL operation |
Supported |
|
CREATE TABLE |
Sí |
|
TRUNCATE TABLE |
Sí |
|
ALTER TABLE |
Sí |
|
ADD COLUMN |
Sí |
|
MODIFY COLUMN |
Sí |
|
DROP TABLE |
Sí |
|
DROP COLUMN |
Sí |
|
RENAME TABLE |
No |
Mapeo de tipos de datos
PolarDB for MySQL y ApsaraDB for ClickHouse admiten distintos tipos de datos. Durante la sincronización inicial del esquema, DTS asigna los tipos de origen a tipos compatibles en el destino. Consulte Data type mappings for initial schema synchronization.
Crear una tarea de sincronización
Paso 1: Ir a la página de sincronización de datos
Consola de DTS
Inicie sesión en la 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 residirá la instancia de sincronización.
Consola de DMS
Nota
La ruta de navegación exacta varía según el modo 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
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 residirá la instancia de sincronización.
Paso 2: Configurar las bases de datos de origen y de destino
Haga clic en Create Task y complete los siguientes parámetros.
Sección | Parámetro | Descripción |
N/A | Task Name | Nombre de la tarea de DTS. El sistema genera uno automáticamente. Use un nombre descriptivo para identificarla fácilmente. No es obligatorio que sea único. |
Source Database | Select Existing Connection | Seleccione una instancia de base de datos registrada en la lista desplegable o configure la conexión manualmente si la instancia no está registrada. |
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 sincronizar dentro de la misma cuenta. | |
PolarDB Cluster ID | ID del clúster de origen de PolarDB for MySQL. | |
Database Account | Cuenta de base de datos del clúster de origen. | |
Database Password | Contraseña de la cuenta. | |
Encryption | Indica si se cifra la conexión con la base de datos de origen. Consulte Configure SSL encryption. | |
Destination Database | Select Existing Connection | Seleccione una instancia registrada o configure la conexión manualmente. |
Database Type | Seleccione ClickHouse. | |
Access Method | Seleccione Alibaba Cloud Instance. | |
Instance Region | Región donde reside el clúster de destino de ApsaraDB for ClickHouse. | |
Replicate Data Across Alibaba Cloud Accounts | Seleccione No para sincronizar dentro de la misma cuenta. | |
Cluster Type | Tipo del clúster de destino de ApsaraDB for ClickHouse. | |
Cluster ID | ID del clúster de destino de ApsaraDB for ClickHouse. | |
Database Account | Cuenta de base de datos del clúster de destino. | |
Database Password | Contraseña de la cuenta. |
Haga clic en Test Connectivity and Proceed.
Compruebe que los bloques CIDR de los servidores de DTS estén agregados a las reglas del security group de las bases de datos de origen y de destino. Consulte Agregar los bloques CIDR de los servidores de DTS .
Paso 3: Configurar los objetos que se van 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. La sincronización completa carga los datos históricos antes de iniciar la sincronización incremental. |
Processing Mode of Conflicting Tables | Precheck and Report Errors (predeterminado): genera un error en la comprobación previa si el destino contiene tablas con el mismo nombre que las del origen. Utilice el mapeo de nombres de objetos para evitar conflictos. Ignore Errors and Proceed: omite la comprobación de conflictos. Durante la sincronización completa, se conservan los registros existentes en el destino; en la incremental, se sobrescriben. Si los esquemas difieren, la tarea puede presentar errores. Úselo con precaución. |
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. Valor predeterminado: DTS default policy. Consulte Especificar el uso de mayúsculas y minúsculas en los nombres de objetos de la instancia de destino. |
Source Objects | Seleccione las bases de datos, tablas o columnas que desea sincronizar y haga clic en el ícono de flecha para agregarlas a Selected Objects. |
Selected Objects | Haga clic derecho en un objeto para cambiarle el nombre, o bien haga clic en Batch Edit para renombrar varios objetos a la vez. Haga clic derecho en una tabla para agregar condiciones de filtro SQL. Consulte Mapear nombres de objetos y Set filter conditions . |
Si utiliza el mapeo de nombres de objetos, aquellos que dependan de los elementos renombrados podrían no sincronizarse correctamente.
Haga clic en Next: Advanced Settings y configure los siguientes parámetros.
|
Parameter |
Description |
|
Dedicated Cluster for Task Scheduling |
De forma predeterminada, DTS usa el clúster compartido. Para mayor estabilidad, adquiera un clúster dedicado. Consulte ¿Qué es un clúster dedicado de DTS?. |
|
Time zone of destination database |
Zona horaria que se aplica a los datos DateTime escritos en el clúster de destino de ClickHouse. |
|
Retry Time for Failed Connections |
Tiempo durante el cual DTS reintenta las conexiones con errores después de iniciar la tarea. Valores válidos: de 10 a 1440 minutos. Valor predeterminado: 720 minutos. Establezca como mínimo 30 minutos. Si varias tareas comparten el mismo origen o destino, se aplica el tiempo de reintento más corto. Los cargos de DTS continúan durante los reintentos. |
|
Retry Time for Other Issues |
Tiempo durante el cual DTS reintenta las operaciones DDL o DML con errores. Valores válidos: de 1 a 1440 minutos. Valor predeterminado: 10 minutos. Establezca como mínimo 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. Configure Queries per second (QPS) to the source database, RPS of Full Data Migration y Data migration speed for full migration (MB/s). Solo está disponible cuando se selecciona Full Data Synchronization. |
|
Enable Throttling for Incremental Data Synchronization |
Limita la carga durante la sincronización incremental. Configure RPS of Incremental Data Synchronization y Data synchronization speed for incremental synchronization (MB/s). |
|
Whether to delete SQL operations on heartbeat tables of forward and reverse tasks |
Yesconfiguración de notificaciones de alerta: DTS no escribe SQL de latido en el origen, lo que podría mostrar latencia en la tarea. No: DTS escribe SQL de latido, lo que puede afectar la copia de seguridad física y la clonación del origen. |
|
Environment Tag |
Etiquetas opcionales para categorizar la instancia de sincronización. |
|
Configure ETL |
Indica si se habilita la función de extracción, transformación y carga (ETL). Yes: introduzca las 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. No: omita ETL. |
|
Monitoring and Alerting |
Yes: configure los umbrales de alerta y los contactos de notificación para que DTS le avise cuando la tarea presente errores o la latencia supere el umbral. Consulte Configurar monitoreo y alertas. No: no se envían alertas. |
Haga clic en Next: Configure Database and Table Fields para establecer Type, Primary Key Column, Sort Key, Distribution Key y Partition Key de cada tabla de destino en ClickHouse.
DTS configura estos campos automáticamente de forma predeterminada. Para modificarlos, establezca Definition Status en All .
Primary Key Column y Sort Key aceptan varias columnas. Distribution Key acepta solo una columna.
Partition Key es opcional. Si lo configura, todas las columnas seleccionadas deben ser campos no vacíos.
Para obtener detalles sobre los parámetros de las tablas de ClickHouse, consulte CREATE TABLE .
Paso 4: Ejecutar la comprobación previa
Haga clic en Next: Save Task Settings and Precheck.
Para previsualizar los parámetros de la API de esta tarea, coloque el puntero sobre Next: Save Task Settings and Precheck y haga clic en Preview OpenAPI parameters .
DTS ejecuta una comprobación previa antes de iniciar la tarea. Si la comprobación presenta errores:
Haga clic en View Details junto al elemento con errores, corrija el problema y haga clic en Precheck Again.
Para los elementos de alerta que se puedan ignorar, haga clic en Confirm Alert Details > Ignore > OK y luego en Precheck Again. Ignorar alertas puede causar inconsistencia en los datos.
Paso 5: Adquirir una instancia
Espere a que Success Rate alcance 100% y luego haga clic en Next: Purchase Instance.
En la página buy, configure los siguientes parámetros.
|
Parameter |
Description |
|
Billing Method |
Subscription: pago por adelantado, 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 detener los cargos. |
|
Resource Group Settings |
Resource group de la instancia de sincronización. Valor predeterminado: default resource group. Consulte ¿Qué es Resource Management? |
|
Instance Class |
La clase de instancia determina la velocidad de sincronización. Consulte Clases de instancia para instancias de sincronización de datos. |
|
Subscription Duration |
Disponible solo para la facturación por Subscription. 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 de confirmación.
La tarea aparecerá en la lista de tareas. Desde ahí podrá monitorear su progreso.
Consultar los datos sincronizados
Una vez completada la sincronización, utilice la siguiente instrucción para consultar los datos en el clúster de destino de ClickHouse:
SELECT * FROM table_name FINAL WHERE _sign > 0;
La palabra clave FINAL combina las filas con la misma clave de ordenamiento y devuelve la versión más reciente. El filtro WHERE _sign > 0 excluye las filas marcadas para eliminación.
Apéndice
Rangos de tiempo
|
Data type |
Minimum value |
Maximum value |
|
Date |
1970-01-01 00:00:00 |
2149-06-06 00:00:00 |
|
Date32 |
1925-01-01 00:00:00 |
2283-11-11 00:00:00 |
|
DateTime |
1970-01-01 08:00:00 |
2106-02-07 14:28:15 |
|
DateTime64 |
1925-01-01 08:00:00 |
2283-11-12 07:59:59 |
Tablas
Si crea las tablas de destino manualmente (sin sincronización de esquemas), estas deben cumplir con los siguientes requisitos.
Si la tabla de destino incluye el parámetro ENGINE, establézcalo en ENGINE = ReplicatedReplacingMergeTree(_version, _is_deleted). Cualquier otro valor provoca inconsistencia en los datos.
Community-compatible Edition: cree una tabla local y una distribuida. El nombre de la tabla distribuida debe coincidir con el de la tabla de origen. El nombre de la tabla local sigue el formato
<distributed_table_name>_local.Enterprise Edition: cree una tabla con el mismo nombre que la tabla de origen.
Campos
DTS agrega los siguientes campos de metadatos a las tablas de destino.
ApsaraDB for ClickHouse Community-compatible Edition con la versión V23.8 o anterior
|
Field |
Data type |
Default value |
Description |
|
|
Int8 |
1 |
Tipo de operación DML: INSERT o UPDATE = |
|
|
UInt64 |
1 |
Hora en la que se escribió la fila en el clúster de ClickHouse. |
ApsaraDB for ClickHouse Enterprise Edition o Community-compatible Edition con la versión V23.8 o posterior
|
Field |
Data type |
Default value |
Description |
|
|
Int8 |
1 |
Tipo de operación DML: INSERT o UPDATE = |
|
|
UInt8 |
0 |
Indica si la fila está eliminada: INSERT o UPDATE = |
|
|
UInt64 |
1 |
Marca de tiempo en la que se escribió la fila en el clúster de ClickHouse. |