Data Transmission Service (DTS) sincroniza datos desde un clúster de PolarDB for MySQL hacia una instancia de SelectDB, lo que permite realizar análisis en tiempo real sobre sus datos operativos. SelectDB ofrece respuestas a consultas en menos de un segundo a gran escala, gestiona hasta 10,000 consultas puntuales por segundo y admite análisis complejos de alto rendimiento.
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Una instancia de SelectDB con espacio de almacenamiento disponible superior al almacenamiento utilizado por el clúster de origen de PolarDB for MySQL. Para crear una, consulte Create an instance
El registro binario habilitado en el clúster de origen de PolarDB for MySQL, con el parámetro
loose_polar_log_binestablecido enON. De lo contrario, se devuelven mensajes de error durante la verificación previa y no es posible iniciar una tarea de DTS. Consulte Enable binary logging y Modificar parámetrosEl período de retención de registros binarios configurado en como mínimo 3 días (se recomiendan 7 días) en el clúster de origen. En circunstancias excepcionales, puede producirse inconsistencia o pérdida de datos. Asegúrese de configurar el período de retención de los registros binarios según los requisitos anteriores. De lo contrario, no se garantiza la confiabilidad ni el rendimiento del servicio establecidos en el Acuerdo de Nivel de Servicio (SLA) de DTS. Consulte Modificar el período de retención
Cuentas de base de datos con los permisos necesarios tanto en la base de datos de origen como en la de destino. Consulte Permissions required for database accounts
Habilitar el registro binario en un clúster de PolarDB for MySQL genera cargos de almacenamiento por el espacio de dichos registros.
Límites
Base de datos de origen
Tablas con claves primarias o restricciones únicas: todos los campos en el destino deben ser únicos; de lo contrario, el destino puede contener datos duplicados.
Tablas sin claves primarias o restricciones únicas: seleccione Schema Synchronization para Synchronization Types y duplicate para Engine en el paso Configurations for Databases, Tables, and Columns.
Al seleccionar tablas (no bases de datos completas) como objetos de sincronización, una sola tarea admite hasta 1,000 tablas. Si necesita más de 1,000 tablas, configure varias tareas o sincronice a nivel de base de datos.
No ejecute operaciones de lenguaje de definición de datos (DDL) que modifiquen esquemas durante la sincronización inicial de esquemas o la sincronización inicial completa de datos. Durante la sincronización completa de datos, DTS consulta la base de datos de origen, lo que crea bloqueos de metadatos que pueden impedir las operaciones DDL.
Los cambios en los datos que no se registran en los registros binarios (como los datos restaurados desde una copia de seguridad física o generados por operaciones en cascada) no se sincronizan con el destino. Si esto ocurre, quite la base de datos o tabla afectada de los objetos de sincronización y vuelva a agregarla. Consulte Modificar objetos de sincronización.
Objetos y operaciones no compatibles
Los nodos de solo lectura del clúster de origen de PolarDB for MySQL no se sincronizan.
Las tablas externas de OSS del clúster de origen no se sincronizan.
INDEX, PARTITION, VIEW, PROCEDURE, FUNCTION, TRIGGER y FK no se sincronizan.
No se admite la conmutación entre principal y secundaria durante la sincronización completa. Si ocurre una conmutación, reconfigure la tarea.
No es posible modificar DDL en varias columnas a la vez ni modificar DDL en la misma tabla de forma consecutiva.
No se admiten cambios DDL en línea mediante pt-online-schema-change. Si existen tales cambios en el origen, puede producirse pérdida de datos o errores en la instancia de sincronización.
Restricciones del destino
En la instancia de destino de SelectDB solo se admiten el modelo Unique Key y el modelo Duplicate Key.
Los nombres de bases de datos y tablas en SelectDB deben comenzar con una letra. Utilice la función de asignación de nombres de objetos para renombrar aquellos que no cumplan este requisito.
Si el nombre de una base de datos, tabla o columna contiene caracteres chinos, utilice la función de asignación de nombres de objetos para renombrarlo (por ejemplo, cámbielo a su equivalente en inglés). De lo contrario, la tarea puede fallar.
No cree clústeres en la instancia de destino de SelectDB durante la sincronización. Si la tarea falla por esta razón, reinicie la instancia de sincronización de datos para reanudarla.
No agregue nodos de backend a la instancia de destino de SelectDB durante la sincronización. Si la tarea falla por esta razón, reinicie la instancia de sincronización de datos para reanudarla.
Solo se puede especificar el parámetro
bucket_counten la sección Selected Objects. El valor debe ser un número entero positivo. Valor predeterminado: auto.En escenarios de fusión de varias tablas donde los datos de múltiples tablas de origen se sincronizan en la misma tabla de destino, todas las tablas de origen deben tener el mismo esquema. Los esquemas no coincidentes pueden causar inconsistencia de datos o fallos en la tarea.
En PolarDB for MySQL,
MenVARCHAR(M)representa la longitud en caracteres. En SelectDB,NenVARCHAR(N)representa la longitud en bytes. Si no utiliza la sincronización de esquemas de DTS, establezca las longitudes de los campos VARCHAR de SelectDB en cuatro veces la longitud de los campos VARCHAR correspondientes de PolarDB for MySQL.Al usar DMS o gh-ost para realizar cambios DDL en línea en el origen, DTS sincroniza solo el DDL original con el destino. Esto puede provocar bloqueos de tablas en el destino.
Si se escriben datos en la base de datos de destino desde fuentes distintas a DTS durante la sincronización, puede producirse inconsistencia de datos.
DTS ejecuta
CREATE DATABASE IF NOT EXISTS \test\`` en la base de datos de origen a intervalos programados para avanzar la posición del registro binario.Durante la sincronización incremental, DTS utiliza una estrategia por lotes que escribe datos para cada objeto de sincronización como máximo una vez cada 5 segundos. Esto resulta en una latencia de sincronización normal inferior a 10 segundos. Para reducir esta latencia, ajuste el parámetro
selectdb.reservoir.timeout.millisecondsen la consola de DTS. El rango permitido es de 1,000 a 10,000 milisegundos. Valores más bajos aumentan la frecuencia de escritura, lo que puede incrementar la carga y el tiempo de respuesta (RT) del destino.Si una instancia de DTS falla, el servicio de asistencia técnica intenta recuperarla en un plazo de 8 horas. Durante la recuperación, la instancia puede reiniciarse o ajustarse sus parámetros. Para conocer los parámetros que pueden modificarse, consulte Modificar parámetros de instancia.
Antes de sincronizar datos, evalúe el rendimiento de ambas bases de datos y ejecute la sincronización fuera de las horas pico. La sincronización inicial completa de datos ejecuta operaciones INSERT simultáneas, lo que aumenta la carga en ambas bases de datos y causa fragmentación de tablas en el destino, lo que resulta en un espacio de tablas mayor que en el origen.
Modelo Unique Key
Todas las claves únicas en la tabla de destino deben existir en la tabla de origen y estar incluidas en los objetos de sincronización. De lo contrario, puede producirse inconsistencia de datos.
Modelo Duplicate Key
Pueden aparecer datos duplicados en el destino si ocurre alguno de los siguientes eventos:
Una operación de reintento en una instancia de sincronización de datos
Dos o más operaciones de lenguaje de manipulación de datos (DML) en la misma fila después de que se inicia la instancia de sincronización
Para eliminar duplicados en los datos, utilice las columnas adicionales _is_deleted, _version y _record_id. Para obtener detalles sobre las columnas, consulte Additional column information.
Para las tablas del modelo Duplicate Key, DTS convierte las sentencias UPDATE y DELETE en sentencias INSERT.
Facturación
|
Tipo de sincronización |
Tarifa de configuración de la tarea |
|
Sincronización de esquemas y sincronización completa de datos |
Gratuita |
|
Sincronización incremental de datos |
Con cargo. Consulte Descripción general de facturación. |
Operaciones SQL que admiten sincronización incremental
|
Tipo de operación |
Sentencia SQL |
|
DML |
INSERT, UPDATE, DELETE |
|
DDL |
ADD COLUMN, MODIFY COLUMN, CHANGE COLUMN, DROP COLUMN, DROP TABLE, TRUNCATE TABLE, RENAME TABLE |
La operación RENAME TABLE puede causar inconsistencia de datos. Si renombra una tabla durante la sincronización y solo se seleccionó la tabla (no la base de datos completa) como objeto de sincronización, los datos de la tabla renombrada no se sincronizan. Para evitarlo, seleccione la base de datos como objeto de sincronización y asegúrese de incluir tanto la base de datos de la tabla original como la de la tabla renombrada.
Permisos necesarios para las cuentas de base de datos
|
Base de datos |
Permisos obligatorios |
Cómo configurar |
|
Origen: PolarDB for MySQL |
Permisos de lectura y escritura en los objetos que se van a sincronizar |
Create and manage a database account y Manage the password of a database account |
|
Destino: SelectDB |
USAGE_PRIV en el clúster; SELECT_PRIV, LOAD_PRIV, ALTER_PRIV, CREATE_PRIV y DROP_PRIV en la base de datos |
Crear una tarea de sincronización de datos
Paso 1: Ir a la página Data Synchronization
Utilice uno de los siguientes métodos para abrir la página Data Synchronization.
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 reside la instancia de sincronización de datos.
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. 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, pase el puntero sobre Data + AI y elija DTS (DTS) > Data Synchronization.
En la lista desplegable a la derecha de 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 el nombre de la tarea y la base de datos de origen.
Parámetro
Descripción
Task Name
DTS genera un nombre automáticamente. Especifique un nombre descriptivo para facilitar la identificación de la tarea. El nombre no necesita ser único.
Select Existing Connection (origen)
Si la instancia de origen está registrada en DTS, selecciónela de la lista. DTS completa automáticamente los parámetros de conexión. De lo contrario, configure los parámetros manualmente. Consulte Manage database connections.
Database Type
Seleccione PolarDB for MySQL.
Access Method
Seleccione Alibaba Cloud Instance.
Instance Region
Seleccione la 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 de Alibaba Cloud.
PolarDB Cluster ID
Seleccione el ID del clúster de origen de PolarDB for MySQL.
Database Account
Introduzca la cuenta del clúster de origen. Consulte Permissions required for database accounts.
Database Password
Introduzca la contraseña de la cuenta de la base de datos.
Encryption
Seleccione un método de cifrado según sea necesario. Para el cifrado Secure Sockets Layer (SSL), consulte Set SSL encryption.
-
Configure la base de datos de destino.
Parámetro
Descripción
Select Existing Connection (destino)
Si la instancia de destino está registrada en DTS, selecciónela de la lista. DTS completa automáticamente los parámetros de conexión. De lo contrario, configure los parámetros manualmente. Consulte Gestionar conexiones de base de datos.
Database Type
Seleccione SelectDB.
Access Method
Seleccione Alibaba Cloud Instance.
Instance Region
Seleccione la región donde reside la instancia de destino de SelectDB.
Replicate Data Across Alibaba Cloud Accounts
Seleccione No para sincronizar dentro de la misma cuenta de Alibaba Cloud.
Instance ID
Seleccione el ID de la instancia de destino de SelectDB.
Database Account
Introduzca la cuenta de la instancia de destino. Consulte Permissions required for database accounts.
Database Password
Introduzca la contraseña de la cuenta de la 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 tanto de la base de datos de origen como de la de destino. DTS puede agregarlos automáticamente o usted puede hacerlo manualmente. Consulte Agregar direcciones IP de servidores DTS a una lista blanca . Si el Access Method de la base de datos de origen o destino no es Alibaba Cloud Instance , haga clic en Test Connectivity en el cuadro de diálogo CIDR Blocks of DTS Servers .
Paso 3: Configurar objetos de sincronización
-
En el paso Configure Objects, establezca los siguientes parámetros.
Parámetro Descripción Synchronization Types De forma predeterminada, Incremental Data Synchronization está seleccionado. Seleccione también Schema Synchronization y Full Data Synchronization. Después de la verificación previa, DTS sincroniza los datos históricos del origen al destino como base para la posterior sincronización incremental. ImportanteAl sincronizar desde PolarDB for MySQL hacia SelectDB, se convierten los tipos de datos. Si no selecciona Schema Synchronization, cree previamente tablas de modelo Unique o Duplicate con los esquemas adecuados en la instancia de destino de SelectDB. Consulte Data type mappings, Additional column information y Data models.
Processing Mode of Conflicting Tables Precheck and Report Errors: comprueba si existen tablas con el mismo nombre en el destino. Si hay un conflicto, se reporta un error durante la verificación previa y la tarea no se inicia. Para resolver conflictos sin eliminar ni renombrar la tabla de destino, utilice la función de asignación de nombres de objetos. Consulte Asignar nombres de bases de datos, tablas y columnas. Ignore Errors and Proceed: omite la comprobación. AvisoEsto puede causar inconsistencia de datos. Si los esquemas coinciden, DTS sobrescribe los registros de destino con la misma clave primaria o única. Si los esquemas difieren, la inicialización de datos puede fallar o solo algunas columnas podrían sincronizarse.
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 en el destino. Valor predeterminado: DTS default policy. Consulte Especificar el uso de mayúsculas en nombres de objetos de la instancia de destino. Source Objects Seleccione uno o varios objetos y haga clic en el icono
para moverlos a Selected Objects. Puede seleccionar bases de datos o tablas.Selected Objects Para renombrar un objeto de sincronización, haga clic derecho sobre él. Consulte Asignar el nombre de un solo objeto. Si Schema Synchronization está seleccionado, haga clic derecho en una tabla en Selected Objects, establezca Enable Parameter Settings en Sí, especifique un valor para bucket_county haga clic en OK. Para filtrar operaciones SQL o filas de un objeto específico, haga clic derecho sobre él y configure las opciones. Para el filtrado de filas, consulte Especificar condiciones de filtro.NotaRenombrar un objeto con la función de asignación de nombres puede provocar que los objetos dependientes fallen en la sincronización.
-
Haga clic en Next: Advanced Settings y configure los siguientes parámetros.
Parámetro Descripción Dedicated Cluster for Task Scheduling De forma predeterminada, la tarea se programa en 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 la conexión si falla la conexión a la base de datos de origen o destino después de iniciada la tarea. Rango válido: 10–1,440 minutos. Valor predeterminado: 720 minutos. Establezca un valor superior a 30 minutos. Si DTS se reconecta dentro del período de reintento, la tarea se reanuda. De lo contrario, la tarea falla. NotaSi varias tareas comparten la misma base de datos de origen o destino, prevalece el tiempo de reintento más corto. Se aplican cargos de DTS durante el período de reintento.
Retry Time for Other Issues Tiempo durante el cual DTS reintenta operaciones DDL o DML fallidas. Rango válido: 1–1,440 minutos. Valor predeterminado: 10 minutos. Establezca un valor superior a 10 minutos. Este valor debe ser menor que Retry Time for Failed Connections. Enable Throttling for Full Data Synchronization Limita el uso de recursos de lectura/escritura durante la sincronización completa de datos. Cuando está habilitado, 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 si Full Data Synchronization está seleccionado. Enable Throttling for Incremental Data Synchronization Limita el uso de recursos durante la sincronización incremental. Cuando está habilitado, configure RPS of Incremental Data Synchronization y Data synchronization speed for incremental synchronization (MB/s). Environment Tag Opcionalmente, seleccione una etiqueta para identificar la instancia. Whether to delete SQL operations on heartbeat tables of forward and reverse tasks Controla si DTS escribe operaciones SQL de tablas de latido en la base de datos de origen. Sí: no escribe operaciones de latido (puede mostrarse latencia en la instancia de DTS). No: escribe operaciones de latido (puede afectar funciones como la copia de seguridad física y la clonación de la base de datos de origen). Configure ETL Habilita la función de extracción, transformación y carga (ETL). Consulte ¿Qué es ETL? Sí: configura ETL con sentencias de procesamiento de datos. Consulte Configurar ETL en una tarea de migración o sincronización de datos. No: omite la configuración de ETL. Monitoring and Alerting Configura alertas para fallos de tareas o latencia de sincronización que supere un umbral. Sí: configure el umbral de alerta y la configuración de notificaciones. Consulte Configurar monitoreo y alertas al crear una tarea de DTS. No: las alertas están deshabilitadas. -
(Opcional) Haga clic en Next: Configure Database and Table Fields. En el cuadro de diálogo, especifique Primary Key Column, Distribution Key y Engine para las tablas a sincronizar.
Este paso está disponible solo si Schema Synchronization está seleccionado. Establezca Definition Status en All para ver y modificar todas las tablas. Puede seleccionar varias columnas para Primary Key Column . Una o más de esas columnas pueden usarse para Distribution Key . Para tablas sin claves primarias o restricciones únicas, seleccione duplicate para Engine . De lo contrario, la tarea puede fallar o producirse pérdida de datos.
Paso 4: Ejecutar la verificación previa
Haga clic en Next: Save Task Settings and Precheck. Para obtener una vista previa de los parámetros de API para esta configuración de tarea, pase el cursor sobre el botón y haga clic en Preview OpenAPI parameters.
-
Espere a que finalice la verificación previa.
Si la verificación previa falla, haga clic en View Details junto a cada elemento fallido, resuelva el problema y luego haga clic en Precheck Again.
-
Si se activa una alerta:
Para alertas que no se pueden ignorar, haga clic en View Details, resuelva el problema y ejecute la verificación previa nuevamente.
Para alertas que se pueden ignorar, haga clic en Confirm Alert Details, haga clic en Ignore en el cuadro de diálogo, haga clic en OK y luego haga clic en Precheck Again. Ignorar una alerta puede resultar en inconsistencia de datos.
La tarea no puede iniciarse hasta que apruebe la verificación previa.
Paso 5: Adquirir e iniciar la instancia
Espere hasta que Success Rate alcance 100% y luego haga clic en Next: Purchase Instance.
-
En la página buy, configure los siguientes parámetros.
Parámetro
Descripción
Billing Method
Subscription: pago anticipado por un período fijo. 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 sea necesaria para detener los cargos.
Resource Group Settings
El resource group para la instancia. Valor predeterminado: default resource group. Consulte What is Resource Management?
Instance Class
Seleccione una clase según sus requisitos de velocidad de sincronización. Consulte Clases de instancia de sincronización de datos.
Subscription Duration
Disponible solo para el método de facturación Subscription. Opciones: 1–9 meses, 1 año, 2 años, 3 años o 5 años.
Lea y seleccione Data Transmission Service (Pay-as-you-go) Service Terms.
Haga clic en Buy and Start y luego haga clic en OK en el cuadro de diálogo.
La tarea aparece en la lista de tareas. Desde allí puede monitorear su progreso.
Asignaciones de tipos de datos
| Categoría | Tipo de PolarDB for MySQL | Tipo de SelectDB | Notas |
|---|---|---|---|
| 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 el atributo 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 | Para evitar la pérdida de datos, los valores CHAR y VARCHAR(n) se convierten a VARCHAR(4*n) en SelectDB. Si no se especifica longitud, se usa el valor predeterminado VARCHAR(65533). Si la longitud excede 65,533, el valor se convierte a STRING. |
| BINARY, VARBINARY | STRING | ||
| TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT | STRING | ||
| TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB | STRING | ||
| ENUM | STRING | ||
| SET | STRING | ||
| JSON | STRING |
Información adicional sobre columnas
Al sincronizar hacia una tabla de modelo Duplicate Key, DTS agrega automáticamente las siguientes columnas o requiere que las agregue manualmente.
|
Nombre |
Tipo de dato |
Valor predeterminado |
Descripción |
|
|
Int |
0 |
Indica si la fila está eliminada. Las operaciones INSERT y UPDATE establecen este valor en 0. Las operaciones DELETE lo establecen en 1. |
|
|
Bigint |
0 |
Para datos de sincronización completa: 0. Para datos de sincronización incremental: la marca de tiempo UNIX (en segundos) del registro binario de origen. |
|
|
Bigint |
0 |
Para datos de sincronización completa: 0. Para datos de sincronización incremental: el ID de registro único del registro incremental. El valor es único y aumenta monótonamente. |