Utilice Data Transmission Service (DTS) para replicar los datos de un clúster de PolarDB for MySQL hacia una instancia de AnalyticDB for PostgreSQL destinada a cargas de trabajo analíticas. DTS se encarga de crear el esquema, cargar todos los datos y mantener la replicación incremental continua dentro de una sola tarea.
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Una instancia de AnalyticDB for PostgreSQL de destino cuyo espacio de almacenamiento disponible sea mayor que el espacio utilizado por el clúster de PolarDB for MySQL de origen. Consulte Create an instance.
Una base de datos creada en la instancia de AnalyticDB for PostgreSQL de destino para almacenar los datos sincronizados. Consulte CREATE DATABASE.
El registro binario habilitado en el clúster de PolarDB for MySQL de origen, con
loose_polar_log_binestablecido enON. Consulte Enable binary logging y Set cluster and node parameters.La retención del registro binario configurada en como mínimo 3 días en el clúster de origen (se recomiendan 7 días). Consulte Modify the retention period.
Cuentas de base de datos con los permisos obligatorios. Consulte Permissions required for database accounts.
Habilitar el registro binario en un clúster de PolarDB for MySQL consume espacio de almacenamiento y genera cargos.
Facturación
|
Tipo de sincronización |
Precio |
|
Sincronización de esquemas y sincronización completa de datos |
Sin costo |
|
Sincronización incremental de datos |
Con cargo. Consulte Billing overview. |
Permisos obligatorios para las cuentas de base de datos
|
Base de datos |
Permisos obligatorios |
Cómo crear y autorizar |
|
Clúster de PolarDB for MySQL de origen |
Permisos de lectura y escritura sobre los objetos que se van a sincronizar |
Create and manage database accounts y manage database account passwords |
|
Instancia de AnalyticDB for PostgreSQL de destino |
Permisos de lectura y escritura sobre la base de datos de destino |
Create and manage users y manage user permissions. También puede usar la cuenta inicial o una cuenta con permisos RDS_SUPERUSER. |
Operaciones SQL compatibles con la sincronización incremental
|
Tipo de operación |
Instrucciones SQL |
|
DML |
INSERT, UPDATE, DELETE. DTS convierte las instrucciones UPDATE en REPLACE INTO al escribir en el destino. Para las operaciones UPDATE sobre claves primarias, DTS las convierte en instrucciones DELETE e INSERT. |
|
DDL |
CREATE TABLE, ALTER TABLE, TRUNCATE TABLE, DROP TABLE |
Limitaciones
Base de datos de origen
Las tablas que se van a sincronizar deben tener una clave primaria o una restricción UNIQUE con campos únicos. De lo contrario, podrían aparecer datos duplicados en la base de datos de destino.
En la sincronización a nivel de tabla donde necesite editar las tablas (por ejemplo, para mapear nombres de columnas), una sola tarea admite un máximo de 1,000 tablas. Si supera este límite, divida las tablas en varias tareas o configure una tarea para sincronizar toda la base de datos.
La retención del registro binario debe ser de como mínimo 3 días. Si DTS no logra obtener los registros binarios, la tarea podría terminar con errores; en casos extremos, esto provoca inconsistencia o pérdida de datos. Los problemas derivados de un periodo de retención inferior al necesario no están cubiertos por el acuerdo de nivel de servicio (SLA) de DTS.
No ejecute operaciones DDL que modifiquen claves primarias o agreguen comentarios de tabla (por ejemplo,
ALTER TABLE table_name COMMENT='Table comment';) durante la sincronización. Estas operaciones terminarán con errores.No ejecute operaciones DDL que cambien los esquemas de bases de datos o tablas durante la sincronización de esquemas ni durante la sincronización completa. La tarea terminará con errores. Durante la sincronización completa, DTS consulta la base de datos de origen y genera bloqueos de metadatos que pueden impedir las operaciones DDL en el origen.
Si la base de datos de origen contiene valores de fecha como
0000-00-00 00:00:00, la tarea podría terminar con errores. DTS convierte estos valores anullen el destino. Como alternativa, cambie los valores de origen a0001-01-01 00:00:00o configure el campo de destino para que admita valores nulos.
Otras limitaciones
Solo se admite la sincronización a nivel de tabla.
Los siguientes tipos de datos no son compatibles: BIT, VARBIT, GEOMETRY, ARRAY, UUID, TSQUERY, TSVECTOR, TXID_SNAPSHOT.
No se admiten índices de prefijo. Si el origen tiene índices de prefijo, la sincronización podría terminar con errores.
No se admite la sincronización desde un nodo de solo lectura del clúster de PolarDB for MySQL de origen.
No es posible sincronizar tablas externas de OSS desde el origen.
Los siguientes tipos de objetos no son compatibles: PARTITION, VIEW, PROCEDURE, FUNCTION, TRIGGER, FK, INDEX.
No se admiten tablas Append-Only (AO) como tablas de destino.
No se admite la conmutación por error entre nodos principal y secundario durante la sincronización completa inicial de datos. Si ocurre una conmutación, vuelva a configurar la tarea.
Herramientas DDL en línea: pt-online-schema-change no es compatible y provocará que la tarea termine con errores. Al usar DDL en línea en modo de tabla temporal o índices basados en funciones sobre columnas de clave única, podría haber pérdida de datos o fallos en la tarea.
Si utiliza mapeo de columnas para una sincronización que no incluya toda la tabla, o si los esquemas de origen y destino difieren, se perderán los datos de las columnas ausentes en la tabla de destino.
Si la tabla que se va a sincronizar tiene clave primaria, la columna de clave primaria en la tabla de destino debe coincidir con la de origen. Si la tabla carece de clave primaria, la columna de clave primaria en la tabla de destino debe coincidir con la clave de distribución.
La clave única de la tabla de destino, incluida la columna de clave primaria, debe contener todas las columnas de la clave de distribución.
La sincronización completa inicial ejecuta operaciones INSERT simultáneas, lo cual genera fragmentación. Por ello, el espacio de tablas de la instancia de destino podría ser mayor que el del origen una vez finalizada la sincronización completa.
Programe la sincronización fuera del horario de mayor demanda. La sincronización completa consume recursos de lectura y escritura en ambas bases de datos y puede aumentar la carga.
En la sincronización a nivel de tabla, no escriba en la base de datos de destino datos distintos a los generados por DTS. Esto podría causar inconsistencias entre el origen y el destino.
En la sincronización a nivel de tabla, no utilice pt-online-schema-change para ejecutar operaciones DDL en línea sobre los objetos de sincronización en la base de datos de origen.
En la sincronización a nivel de tabla, si no se escriben datos distintos a los de DTS en la base de datos de destino, puede utilizar Data Management (DMS) para las operaciones DDL en línea. Consulte Change schemas without locking tables.
Si una tarea termina con errores, el equipo de soporte de DTS intentará restaurarla en un plazo de 8 horas. Es posible que reinicien la tarea o ajusten parámetros de la tarea de DTS (no parámetros de la base de datos). Los parámetros que se pueden ajustar se enumeran en Modify instance parameters.
Comportamiento de resolución de conflictos
|
Fase |
Cuando hay conflictos de clave primaria o única |
Resultado |
|
Sincronización completa de datos |
Esquemas consistentes: existe un registro en el destino con la misma clave primaria o única |
DTS conserva el registro de destino y omite el registro de origen |
|
Sincronización incremental |
Esquemas consistentes: existe un registro en el destino con la misma clave primaria o única |
DTS sobrescribe el registro de destino con el registro de origen |
|
Cualquier fase |
Esquemas inconsistentes |
La inicialización de datos podría fallar, lo que provoca un error parcial o total de la sincronización |
Notas de uso
DTS ejecuta periódicamente
CREATE DATABASE IF NOT EXISTS \test\`` en la base de datos de origen para avanzar el desplazamiento del registro binario.Cuando utilice DMS o gh-ost para cambios DDL en línea, configure la opción avanzada Copy the temporary table of the Online DDL tool según corresponda.
Crear una tarea de sincronización
La configuración de la tarea consta de ocho pasos: abrir la página de la tarea, conectar las bases de datos de origen y destino, seleccionar los objetos de sincronización, configurar los ajustes avanzados, establecer opcionalmente la verificación de datos, configurar opcionalmente los campos de la tabla de destino, ejecutar la comprobación previa y comprar la instancia.
Paso 1: Abrir la página de configuración de la tarea
Inicie sesión en la consola de Data Management (DMS).
En la barra de navegación superior, haga clic en Data + AI.
-
En el panel de navegación izquierdo, elija DTS (DTS) > Data Synchronization.
La ruta de navegación puede variar según el modo y el diseño de la consola de DMS. Consulte Simple mode console y Customize the layout and style of the DMS console . También puede ir directamente a la página Data Synchronization Tasks de la consola de DTS .
Haga clic en Create Task.
Paso 2: Configurar las bases de datos de origen y destino
En la página de configuración de la tarea, complete los siguientes campos:
| Categoría | Campo | Descripción |
|---|---|---|
| N/A | Task Name | DTS genera un nombre automáticamente. Especifique un nombre descriptivo para identificarlo fácilmente. No es obligatorio que el nombre sea único. |
| Source Database | Select Existing Connection | Seleccione una registered database instance de la lista desplegable para completar automáticamente los campos siguientes, o bien configúrelos de forma manual. En la consola de DMS, este campo aparece como Select a DMS database instance. |
| Database Type | Seleccione PolarDB for MySQL. | |
| Access Method | Seleccione Alibaba Cloud Instance. | |
| Instance Region | Seleccione la región donde reside el clúster de PolarDB for MySQL de origen. | |
| Replicate Data Across Alibaba Cloud Accounts | Seleccione No si la instancia de origen pertenece a la cuenta actual de Alibaba Cloud. | |
| PolarDB Cluster ID | Seleccione el ID del clúster de PolarDB for MySQL de origen. | |
| Database Account | Introduzca la cuenta de la base de datos 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. | |
| Destination Database | Select Existing Connection | Seleccione una registered database instance de la lista desplegable para completar automáticamente los campos siguientes, o bien configúrelos de forma manual. En la consola de DMS, este campo aparece como Select a DMS database instance. |
| Database Type | Seleccione AnalyticDB for PostgreSQL. | |
| Access Method | Seleccione Alibaba Cloud Instance. | |
| Instance Region | Seleccione la región donde reside la instancia de AnalyticDB for PostgreSQL de destino. | |
| Instance ID | Seleccione el ID de la instancia de AnalyticDB for PostgreSQL de destino. | |
| Database Name | Introduzca el nombre de la base de datos de destino que recibirá los datos sincronizados. | |
| Database Account | Introduzca la cuenta de la base de datos 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. |
Después de completar todos los campos, haga clic en Test Connectivity and Proceed.
Asegúrese de que los bloques de direcciones IP de DTS se hayan agregado a la configuración de seguridad de las bases de datos de origen y destino, ya sea de forma automática mediante DTS o de forma manual. Consulte Add the IP address whitelist of DTS servers .
Paso 3: Configurar los objetos de sincronización
En la página Configure Objects, configure los siguientes ajustes:
Synchronization types
DTS siempre selecciona Incremental Data Synchronization. Seleccione también Schema Synchronization y Full Data Synchronization (esta última está seleccionada de forma predeterminada). Después de la comprobación previa, DTS inicializa la instancia de destino con todos los datos de los objetos de origen seleccionados, lo cual sirve como línea base para la sincronización incremental posterior. Con los tres tipos habilitados, DTS realiza lo siguiente:
Copia el esquema en el destino.
Carga una instantánea completa de los objetos de origen seleccionados como línea base.
Aplica los cambios incrementales continuos del registro binario.
Objetos y operaciones
|
Campo |
Descripción |
|
DDL and DML Operations to Be Synchronized |
Seleccione las operaciones DDL o DML que desea sincronizar a nivel de instancia. Para elegir operaciones de una base de datos o tabla específica, haga clic con el botón derecho en el objeto dentro del cuadro Selected Objects. Consulte Supported SQL operations for incremental synchronization. |
|
Processing Mode of Conflicting Tables |
Precheck and Report Errors: comprueba si existen tablas con el mismo nombre en el destino. Si encuentra alguna, la comprobación previa reporta un error y la tarea no inicia. Si no puede eliminar ni renombrar la tabla en conflicto, utilice el mapeo de nombres de objetos para cambiarle el nombre en el destino. Ignore Errors and Proceed: omite la comprobación de tablas duplicadas. Úselo con precaución, ya que puede generar inconsistencias en los datos. Para más detalles, consulte Comportamiento de resolución de conflictos. |
|
Storage Engine Type |
Seleccione el motor de almacenamiento para las tablas de destino. El valor predeterminado es Beam. Este campo solo está disponible si la versión del kernel de AnalyticDB for PostgreSQL de destino es v7.0.6.6 o posterior y se ha seleccionado Schema Synchronization. |
|
Capitalization of Object Names in Destination Instance |
Configure la política de mayúsculas y minúsculas para los nombres de bases de datos, tablas y columnas en el destino. El valor predeterminado es DTS default policy. Consulte Case policy for destination object names. |
|
Source Objects |
Haga clic en los objetos del cuadro Source Objects y luego en la flecha derecha para moverlos al cuadro Selected Objects. Seleccione bases de datos o tablas como objetos de sincronización. |
|
Selected Objects |
Para renombrar un solo objeto, haga clic con el botón derecho sobre él en el cuadro Selected Objects. Consulte Map a single object name. Para renombrar varios objetos de forma masiva, haga clic en Batch Edit en la esquina superior derecha. Consulte Map multiple object names in bulk. Para filtrar filas de una tabla, haga clic con el botón derecho en la tabla y configure las condiciones de filtro. Consulte Set filter conditions. Si utiliza el mapeo de nombres de objetos, la sincronización de objetos dependientes podría fallar. |
Paso 4: Configurar los ajustes avanzados
Haga clic en Next: Advanced Settings y configure las siguientes opciones:
|
Campo |
Descripción |
|
Dedicated Cluster for Task Scheduling |
De forma predeterminada, DTS utiliza un clúster compartido. Para mejorar la estabilidad de la tarea, adquiera un clúster dedicado. Consulte What is a DTS dedicated cluster?. |
|
Copy the temporary table of the Online DDL tool that is generated in the source table to the destination database. |
Si el origen usa DMS o gh-ost para cambios DDL en línea, seleccione cómo debe manejar DTS las tablas temporales generadas. Yesnotificaciones de alerta: sincroniza las tablas temporales. Las tablas temporales grandes pueden provocar latencia en la sincronización. No, Adapt to DMS Online DDL: no sincroniza las tablas temporales. Solo sincroniza las instrucciones DDL originales de DMS. Esto genera bloqueos de tabla en el destino. No, Adapt to gh-ost: no sincroniza las tablas temporales. Solo sincroniza las instrucciones DDL originales de gh-ost. Esto genera bloqueos de tabla en el destino. Nota: DTS no es compatible con pt-online-schema-change para cambios DDL en línea; su uso provocará que la tarea termine con errores. |
|
Retry Time for Failed Connections |
Si falla la conexión con el origen o el destino, DTS reintenta de inmediato. Valor predeterminado: 720 minutos. Rango: de 10 a 1,440 minutos. Establezca 30 minutos o más. Si varias instancias de DTS comparten un origen o un destino, DTS aplica la duración de reintento más corta configurada entre todas las instancias. DTS cobra por el tiempo de ejecución de la tarea durante los reintentos. |
|
Retry Time for Other Issues |
Si ocurre un problema distinto a una falla de conexión (por ejemplo, un error al ejecutar DDL o DML), DTS reintenta de inmediato. Valor predeterminado: 10 minutos. Rango: de 1 a 1,440 minutos. Establezca 10 minutos o más. Este valor debe ser menor que Retry Time for Failed Connections. |
|
Enable Throttling for Full Data Synchronization |
Limite la velocidad de sincronización completa para reducir la carga en las bases de datos. Configure Queries per second (QPS) to the source database, RPS of Full Data Migration y Data migration speed for full migration (MB/s). Disponible únicamente cuando se selecciona Full Data Synchronization. También puede ajustar la velocidad mientras la tarea se está ejecutando. |
|
Enable Throttling for Incremental Data Synchronization |
Limite la velocidad de sincronización incremental mediante la configuración de RPS of Incremental Data Synchronization y Data synchronization speed for incremental synchronization (MB/s). |
|
Environment Tag |
Seleccione una etiqueta para identificar la instancia según sus necesidades empresariales. |
|
Whether to delete SQL operations on heartbeat tables of forward and reverse tasks |
Yes: DTS no escribe SQL de latido en la base de datos de origen. La instancia de DTS podría mostrar latencia. No: DTS escribe SQL de latido en la base de datos de origen. Esto puede interferir con operaciones como copias de seguridad físicas y clonaciones. |
|
Configure ETL |
Habilite la función de extracción, transformación y carga (ETL) para transformar los datos en tránsito. 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: deshabilite ETL. Consulte What is ETL?. |
|
Monitoring and Alerting |
Yes: configure alertas para fallos de tarea o latencia que supere un umbral. Establezca el umbral de alerta y los contactos de notificación. Consulte Configure monitoring and alerting during task configuration. No: sin alertas. |
Paso 5: Configurar la verificación de datos (opcional)
Haga clic en Data Verification para configurar una tarea de verificación de datos. Consulte Configure data verification.
Paso 6: Configurar los campos de la tabla de destino (opcional)
Haga clic en Next: Configure Database and Table Fields para establecer Type, Primary Key Column y Distribution Key de cada tabla de destino en AnalyticDB for PostgreSQL.
Este paso solo está disponible cuando se selecciona Schema Synchronization . Establezca Definition Status en All para modificar los campos. Para formar una clave primaria compuesta, especifique varias columnas en Primary Key Column y luego seleccione una o más de esas columnas como Distribution Key . Consulte Manage tables y Define table distribution .
Paso 7: Ejecutar la comprobación previa
Haga clic en Next: Save Task Settings and Precheck.
Para previsualizar los parámetros de la API correspondientes a esta configuración de tarea, coloque el cursor sobre el botón Next: Save Task Settings and Precheck y haga clic en Preview OpenAPI parameters .
Antes de iniciar una tarea de sincronización, DTS ejecuta una comprobación previa. La tarea solo comienza si dicha comprobación es exitosa.
Si la comprobación previa termina con errores, haga clic en View Details junto al elemento fallido, corrija el problema y vuelva a ejecutar la comprobación.
-
Si la comprobación previa devuelve advertencias:
Para advertencias que no se pueden ignorar, haga clic en View Details, corrija el problema y vuelva a ejecutar la comprobación previa.
Para advertencias que se pueden ignorar, haga clic en Confirm Alert Details, luego en Ignore, después en OK y finalmente en Precheck Again para continuar. Ignorar advertencias puede provocar inconsistencias en los datos. Proceda con precaución.
Paso 8: Comprar e iniciar la instancia
Cuando Success Rate alcance el 100 %, haga clic en Next: Purchase Instance.
En la página Purchase, seleccione el método de facturación y la clase de instancia:
| Categoría | Parámetro | Descripción |
|---|---|---|
| New Instance Class | Billing Method | Subscription: pague por adelantado por una duración definida. Resulta rentable para tareas continuas a largo plazo. Opciones mensuales: de 1 a 9 meses. Opciones anuales: 1, 2, 3 o 5 años. Pay-as-you-go: se factura por hora según el uso real. Recomendado para tareas de prueba o de corta duración. |
| Resource Group Settings | El resource group de la instancia. Valor predeterminado: default resource group. Consulte What is Resource Management?. | |
| Instance Class | Seleccione una especificación según la velocidad de sincronización que requiera. Consulte Data synchronization link specifications. | |
| Subscription Duration | En el modelo de suscripción, seleccione la duración y la cantidad de la instancia. Las opciones mensuales van de 1 a 9 meses. Las opciones anuales incluyen 1, 2, 3 o 5 años. |
Lea y seleccione Data Transmission Service (Pay-as-you-go) Service Terms, luego haga clic en Buy and Start y confirme en el cuadro de diálogo.
Supervise el progreso de la tarea en la página Data Synchronization Tasks.Data Synchronization Tasks page of the new DTS console
Pasos siguientes
Para comprobar que los datos se sincronizan correctamente, configure una tarea de verificación de datos. Consulte Configure data verification.
Para modificar los objetos de sincronización o los parámetros de la tarea después de que esta haya iniciado, consulte Modify instance parameters.