Use Data Transmission Service (DTS) para configurar una canalización de datos continua y unidireccional desde un clúster de origen de PolarDB for PostgreSQL (Compatible with Oracle) hacia un clúster de destino. Esta canalización abarca la sincronización de esquemas, la carga completa de datos y la captura de cambios incrementales (CDC) mediante replicación lógica de PostgreSQL.
Requisitos previos
Antes de empezar, compruebe que cuenta con lo siguiente:
Un clúster de destino de PolarDB for PostgreSQL (Compatible with Oracle) cuya capacidad de almacenamiento sea mayor que el espacio utilizado en el clúster de origen. Para obtener más información, consulte Create a PolarDB for PostgreSQL (Compatible with Oracle) cluster
Una base de datos creada en el clúster de destino para recibir los datos. Para obtener más información, consulte Database management
El parámetro
wal_levelestablecido enlogicalen el clúster de origen. Para obtener más información, consulte Configure cluster parametersLa función Logical Replication Slot Failover habilitada en el clúster de origen
Si el motor de base de datos del clúster de origen es Database Engine con valor Oracle syntax compatible 2.0, no se admite Logical Replication Slot Failover. Un cambio por alta disponibilidad (HA) en este tipo de clúster provoca que la instancia de sincronización presente errores y no se pueda recuperar.
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. Para obtener más información, consulte Billing overview |
Objetos de sincronización compatibles
|
Objeto |
Detalles |
|
SCHEMA, TABLE |
Incluye PRIMARY KEY, UNIQUE KEY, FOREIGN KEY, tipos de datos integrados y DEFAULT CONSTRAINT |
|
VIEW, PROCEDURE |
Requiere PostgreSQL versión 11 o posterior. La compatibilidad varía según el tipo de base de datos de destino; consulte la consola para ver los detalles |
Operaciones SQL compatibles
|
Tipo de operación |
Instrucciones |
|
DML |
INSERT, UPDATE, DELETE |
|
DDL |
CREATE TABLE, DROP TABLE |
|
DDL |
ALTER TABLE: incluye RENAME TABLE, ADD COLUMN, ADD COLUMN DEFAULT, ALTER COLUMN TYPE, DROP COLUMN, ADD CONSTRAINT, ADD CONSTRAINT CHECK, ALTER COLUMN DROP DEFAULT |
|
DDL |
CREATE INDEX ON TABLE |
Las instrucciones DDL no se sincronizan en los siguientes escenarios:
La instrucción contiene CASCADE o RESTRICT
Una transacción contiene instrucciones DML y DDL al mismo tiempo
Solo algunas instrucciones DDL de una transacción están dentro del alcance de sincronización
La instrucción DDL se ejecuta desde una sesión creada con
SET session_replication_role = replicaLa instrucción DDL se ejecuta mediante una llamada a FUNCTION
No se define ningún esquema en la instrucción DDL (en este caso, se usa el esquema público según
SHOW search_path)La instrucción DDL contiene IF NOT EXISTS
Permisos de cuentas de base de datos
|
Base de datos |
Permiso obligatorio |
Cómo crearlo y otorgarlo |
|
Clúster de origen de PolarDB for PostgreSQL (Compatible with Oracle) |
Cuenta con privilegios |
|
|
Clúster de destino de PolarDB for PostgreSQL (Compatible with Oracle) |
Propietario de la base de datos |
Create a database account y Database management. El propietario de la base de datos se especifica al crear la base de datos |
Límites
Revise estos límites antes de comenzar. Algunas restricciones requieren acciones en la base de datos de origen antes de configurar DTS.
Límites de la base de datos de origen
Ancho de banda El servidor donde se aloja la base de datos de origen debe tener suficiente ancho de banda de salida. Un ancho de banda insuficiente reduce la velocidad de sincronización.
Tablas sin clave primaria ni restricción UNIQUE Habilite la función Exactly-Once write al configurar la tarea. De lo contrario, podrían aparecer datos duplicados en la base de datos de destino. Para obtener más información, consulte Synchronize tables without a primary key or UNIQUE constraint.
Más de 1,000 tablas con asignación de nombres Si los objetos de sincronización son tablas con asignación de nombres de tabla o columna, y una sola tarea supera las 1,000 tablas, divida las tablas en varias tareas o configure la tarea para sincronizar toda la base de datos. Superar este límite puede generar un error de solicitud al enviar la tarea.
Retención de WAL Habilite WAL y establezca el periodo de retención según los tipos de sincronización de su tarea:
Solo sincronización incremental: conserve los registros WAL durante más de 24 horas
Sincronización completa e incremental: conserve los registros WAL como mínimo 7 días. Una vez finalizada la sincronización completa, puede establecer el periodo de retención en más de 24 horas
Si DTS no puede obtener los registros WAL, la tarea presenta errores. En casos extremos, puede producirse inconsistencia o pérdida de datos. Los problemas causados por un periodo de retención de WAL inferior al requerido por DTS no están cubiertos por el acuerdo de nivel de servicio (SLA).
Transacciones de larga duración Las transacciones prolongadas provocan la acumulación de WAL hasta que se confirman. Esto puede agotar el espacio en disco de la base de datos de origen durante la sincronización incremental.
Operaciones DDL durante la sincronización No ejecute operaciones DDL que modifiquen la estructura de la base de datos o de las tablas durante la sincronización de esquemas o la sincronización completa de datos. Hacerlo provoca que la tarea presente errores.
Escrituras durante la sincronización solo completa No escriba datos nuevos en el clúster de origen si la tarea ejecuta únicamente la sincronización completa de datos, ya que se generará inconsistencia de datos. Para mantener la consistencia en tiempo real, incluya en la tarea la sincronización de esquemas, la sincronización completa de datos y la sincronización incremental de datos.
Datos incrementales individuales mayores a 256 MB Si un dato individual supera los 256 MB después de un cambio incremental, la instancia de sincronización puede presentar errores y no se podrá recuperar. Vuelva a configurar la instancia de sincronización.
Otros límites
Una base de datos por tarea Una sola tarea de sincronización solo puede sincronizar una base de datos. Configure una tarea independiente para cada base de datos adicional.
Objetos no compatibles DTS no admite tablas de la extensión TimescaleDB, tablas con herencia entre esquemas ni tablas con índices únicos basados en expresiones. Los esquemas creados al instalar complementos no se pueden sincronizar y no aparecen en la consola durante la configuración de la tarea.
Campos de tipo SERIAL Si una tabla contiene un campo de tipo de datos SERIAL, la base de datos de origen crea automáticamente una secuencia para ese campo. Al configurar Source Objects, si selecciona Schema Synchronization como tipo de sincronización, seleccione también Sequence o sincronice todo el esquema. De lo contrario, la instancia de sincronización podría presentar errores.
Requisito de REPLICA IDENTITY FULL Ejecute el siguiente comando en cada tabla que se sincronizará en la base de datos de origen antes de escribir datos en ella. Esto garantiza la consistencia de los datos. No bloquee las tablas mientras ejecuta este comando para evitar interbloqueos.
ALTER TABLE schema.table REPLICA IDENTITY FULL;
Reemplace schema y table con el nombre real del esquema y de la tabla. Ejecute este comando fuera del horario de mayor actividad.
Este comando es obligatorio en los siguientes escenarios:
La primera vez que se ejecuta la instancia
Seleccionó granularidad a nivel de esquema para la selección de objetos y se crea una tabla nueva en el esquema, o bien se reconstruye una tabla existente con el comando RENAME
Utiliza la función para modificar objetos de sincronización
Si omite los elementos de comprobación previa relacionados, DTS ejecuta este comando automáticamente durante la inicialización de la instancia.
Tablas temporales en la base de datos de origen DTS crea las siguientes tablas temporales en la base de datos de origen para obtener instrucciones DDL, estructuras de tablas incrementales e información de latidos. No elimine estas tablas durante la sincronización, ya que hacerlo provoca que la tarea funcione de manera anómala. DTS elimina estas tablas automáticamente después de liberar la instancia:
public.dts_pg_class, public.dts_pg_attribute, public.dts_pg_type, public.dts_pg_enum, public.dts_postgres_heartbeat, public.dts_ddl_command, public.dts_args_session, public.aliyun_dts_instance
Tabla de latidos DTS agrega una tabla de latidos llamada dts_postgres_heartbeat a la base de datos de origen para mantener métricas precisas de latencia en la sincronización incremental.
Espacio de replicación DTS crea un espacio de replicación con el prefijo dts_sync_ en la base de datos de origen. Este espacio conserva los registros incrementales de los últimos 15 minutos. Cuando la tarea de sincronización presenta errores o se libera la instancia, DTS intenta borrar el espacio automáticamente.
Si cambia la contraseña de la cuenta de la base de datos de origen o quita la dirección IP de DTS de la lista blanca de la base de datos de origen durante la sincronización, el espacio de replicación no se podrá borrar automáticamente. Borre manualmente el espacio de replicación en la base de datos de origen para evitar la acumulación de espacio en disco, lo cual puede dejar la base de datos de origen no disponible. Si ocurre un failover en la base de datos de origen, inicie sesión en la base de datos secundaria para borrar el espacio manualmente.

Secuencias después del cambio de negocio Después de migrar su negocio a la instancia de destino, las secuencias no continúan desde el valor máximo del origen. Actualice el valor de la secuencia en la base de datos de destino antes del cambio de negocio. Para obtener más información, consulte Update the sequence value in the destination database.
Impacto en el rendimiento de la sincronización completa La sincronización completa de datos ejecuta operaciones INSERT simultáneas, lo que consume recursos de lectura y escritura tanto en la base de datos de origen como en la de destino, y genera fragmentación de tablas en el destino. Tras la sincronización completa, el espacio de las tablas de destino será mayor que el del origen. Evalúe el rendimiento antes de sincronizar y ejecute la tarea fuera del horario de mayor actividad, cuando la carga de CPU de ambas bases de datos esté por debajo del 30%.
Precisión de FLOAT y DOUBLE DTS lee los valores FLOAT y DOUBLE mediante ROUND(COLUMN, PRECISION). Si no se define una precisión explícita, DTS utiliza una precisión predeterminada de 38 para FLOAT y 308 para DOUBLE. Compruebe que esta precisión cumple con sus requisitos de negocio.
Recuperación automática de DTS DTS intenta recuperar automáticamente las tareas con errores durante un máximo de siete días. Antes de migrar su negocio a la instancia de destino, finalice o libere la tarea, o bien use el comando REVOKE para revocar los permisos de escritura de la cuenta de DTS en la instancia de destino. Sin este paso, la recuperación automática podría provocar que los datos de origen sobrescriban los datos de destino después del cambio.
Claves externas, disparadores y disparadores de eventos En tareas de sincronización completa o incremental que involucren tablas con claves externas, disparadores o disparadores de eventos, DTS establece temporalmente session_replication_role en replica a nivel de sesión:
Si la cuenta de la base de datos de destino es una cuenta con privilegios o tiene permisos de superusuario, DTS lo configura automáticamente
Si la cuenta de destino no tiene estos permisos, establezca manualmente
session_replication_roleenreplicaen la base de datos de destino antes de ejecutar la tarea
Durante este periodo, las operaciones de actualización o eliminación en cascada en la base de datos de origen pueden causar inconsistencia de datos. Una vez liberada la tarea de DTS, restablezca session_replication_role a origin.
Sincronización de esquemas y claves externas Durante la sincronización de esquemas, DTS sincroniza las claves externas del origen al destino. Durante la sincronización completa e incremental, DTS deshabilita temporalmente las comprobaciones de restricciones y las operaciones en cascada de claves externas a nivel de sesión. Puede producirse inconsistencia de datos si se ejecutan operaciones de actualización o eliminación en cascada en el origen mientras la tarea está activa.
Recuperación de tareas con errores Si una tarea presenta errores, el personal de soporte de DTS intentará restaurarla en un plazo de ocho horas. Durante la restauración, podrían reiniciar la tarea o ajustar 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.
Tablas particionadas Incluya tanto la tabla principal como todas sus particiones secundarias como objetos de sincronización. Las tablas particionadas de PostgreSQL almacenan datos solo en las particiones secundarias, no en la tabla principal. Si excluye las particiones secundarias, sus datos no se sincronizarán, lo que generará inconsistencia de datos.
Configuración de una tarea de sincronización unidireccional
Paso 1: Ir a la lista de tareas de sincronización de datos
Vaya a la lista de tareas de sincronización de su región de destino mediante una de las siguientes consolas.
Consola de DTS
Inicie sesión en la consola de DTS.DTS console
En el panel de navegación izquierdo, haga clic en Data Synchronization.
En la esquina superior izquierda de la página, seleccione la región donde se encuentra la instancia de sincronización.
Consola de DMS
Los pasos reales pueden variar según el modo y el diseño de la consola de DMS. Para obtener más información, consulte
y
Customize the layout and style of the DMS console
.
Inicie sesión en la consola de DMS.DMS console
En la barra de menú superior, elija Data + AI > DTS (DTS) > Data Synchronization.
A la derecha de Data Synchronization Tasks, seleccione la región de la instancia de sincronización.
Paso 2: Crear una tarea y configurar las conexiones de base de datos
Haga clic en Create Task.
Configure las bases de datos de origen y de destino con los siguientes parámetros.
Configuración de la tarea
|
Parámetro |
Descripción |
|
Task Name |
DTS genera un nombre automáticamente. Especifique un nombre descriptivo para identificarla fácilmente. El nombre no necesita ser único |
Base de datos de origen
|
Parámetro |
Descripción |
|
Select Existing Connection |
Seleccione un registered database instance de la lista desplegable para completar automáticamente los detalles de conexión. Si no ha registrado la instancia, configure los campos siguientes manualmente. En la consola de DMS, este campo se etiqueta como Select a DMS database instance |
|
Database Type |
Seleccione PolarDB (Compatible with Oracle) |
|
Access Method |
Seleccione Alibaba Cloud Instance |
|
Instance Region |
Seleccione la región donde reside el clúster de origen |
|
Replicate Data Across Alibaba Cloud Accounts |
Seleccione No si el clúster de origen pertenece a la cuenta actual de Alibaba Cloud |
|
Instance ID |
Seleccione el ID del clúster de origen |
|
Database Name |
Introduzca el nombre de la base de datos de origen que contiene los objetos a sincronizar |
|
Database Account |
Introduzca la cuenta de la base de datos. Para conocer los requisitos de permisos, consulte Database account permissions |
|
Database Password |
Introduzca la contraseña de la cuenta de la base de datos |
Base de datos de destino
|
Parámetro |
Descripción |
|
Select Existing Connection |
Seleccione un registered database instance de la lista desplegable. Si no ha registrado la instancia, configure los campos siguientes manualmente. En la consola de DMS, este campo se etiqueta como Select a DMS database instance |
|
Database Type |
Seleccione PolarDB (Compatible with Oracle) |
|
Access Method |
Seleccione Alibaba Cloud Instance |
|
Instance Region |
Seleccione la región donde reside el clúster de destino |
|
Instance ID |
Seleccione el ID del clúster de destino |
|
Database Name |
Introduzca el nombre de la base de datos de destino que recibirá los datos |
|
Database Account |
Introduzca la cuenta de la base de datos. Para conocer los requisitos de permisos, consulte Database account permissions |
|
Database Password |
Introduzca la contraseña de la cuenta de la base de datos |
Haga clic en Test Connectivity and Proceed.
Agregue los bloques CIDR de los servidores de DTS a la configuración de seguridad de las bases de datos de origen y de destino, ya sea de forma automática o manual, para permitir el acceso. Para obtener más información, consulte Add the IP address whitelist of DTS servers .
Si el origen o el destino es una base de datos autogestionada (es decir, Access Method no es Alibaba Cloud Instance ), haga clic también en Test Connectivity en el cuadro de diálogo CIDR Blocks of DTS Servers .
Paso 3: Configurar los objetos de sincronización
En la página Configure Objects, configure los siguientes ajustes.
|
Parámetro |
Descripción |
|
Synchronization Types |
DTS siempre selecciona Incremental Data Synchronization. De forma predeterminada, seleccione también Schema Synchronization y Full Data Synchronization. Después de superar la comprobación previa, DTS inicializa el clúster de destino con los datos completos de los objetos de origen seleccionados como línea base para la sincronización incremental |
|
Synchronization Topology |
Seleccione One-way Synchronization |
|
Processing Mode of Conflicting Tables |
Precheck and Report Errors (predeterminado): comprueba si existen tablas con el mismo nombre en la base de datos de destino. Si las encuentra, reporta un error durante la comprobación previa y la tarea no inicia. Para resolver el conflicto sin eliminar ni renombrar la tabla, asígnele un nombre distinto en el destino. Para obtener más información, consulte Database Table Column Name Mapping. Ignore Errors and Proceed: omite la comprobación de nombres iguales. Úselo con precaución, ya que seleccionar esta opción puede causar inconsistencia de datos: durante la sincronización completa, DTS conserva el registro de destino y omite el de origen cuando los valores de clave primaria o única entran en conflicto; durante la sincronización incremental, DTS sobrescribe el registro de destino con el de origen. Si los esquemas de las tablas son inconsistentes, la inicialización de datos podría fallar. Esto puede provocar que solo se sincronicen datos parcialmente o que la sincronización falle por completo. Úselo con precaución |
|
Capitalization of Object Names in Destination Instance |
Configura 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. Para obtener más información, consulte Case policy for destination object names |
|
Source Objects |
En el cuadro Source Objects, haga clic en los objetos que desea seleccionar y luego haga clic en |
|
Selected Objects |
Para renombrar un objeto individual en el destino, haga clic derecho sobre él en el cuadro Selected Objects. Para obtener más información, consulte Map a single object name. Para renombrar varios objetos, haga clic en Batch Edit en la esquina superior derecha del cuadro. Para obtener más información, consulte Map multiple object names in bulk. Para seleccionar operaciones SQL específicas de una base de datos o tabla, haga clic derecho en el objeto y seleccione las operaciones en el cuadro de diálogo. Para conocer las operaciones compatibles, consulte Supported SQL operations. Para filtrar datos mediante una cláusula WHERE, haga clic derecho en una tabla y especifique las condiciones de filtro. Para obtener más información, consulte Set filter conditions. Si utiliza la asignación de nombres de objetos, los objetos dependientes podrían no sincronizarse |
Haga clic en Next: Advanced Settings y configure las siguientes opciones.
| Parámetro | Descripción |
|---|---|
| Dedicated Cluster for Task Scheduling | De forma predeterminada, DTS utiliza un clúster compartido. Para mayor estabilidad, adquiera un clúster dedicado. Para obtener más información, consulte What is a DTS dedicated cluster? |
| Retry Time for Failed Connections | Si la conexión con la base de datos de origen o de destino falla después de iniciar la tarea, DTS comienza a reintentar de inmediato. La duración predeterminada de reintento es de 720 minutos. Establezca un valor entre 10 y 1,440 minutos; se recomiendan 30 minutos o más. Si la conexión se restablece dentro de este periodo, la tarea se reanuda automáticamente. Nota
Si varias instancias de DTS comparten un origen o un destino, DTS utiliza la duración de reintento configurada más corta entre todas las instancias. DTS cobra por el tiempo de ejecución de la tarea durante los reintentos de conexión |
| Retry Time for Other Issues | Si ocurre un problema que no es de conexión (como un error de ejecución DDL o DML), DTS reintenta de inmediato. El valor predeterminado es 10 minutos. Establezca un valor entre 1 y 1,440 minutos; se recomiendan 10 minutos o más. Este valor debe ser menor que Retry Time for Failed Connections |
| Enable Throttling for Full Data Synchronization | Limita la tasa de sincronización completa para reducir la presión sobre la base de datos de destino. Establezca 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 se selecciona Full Data Synchronization. También puede ajustar esta tasa mientras la instancia está en ejecución |
| Enable Throttling for Incremental Data Synchronization | Limita la tasa de sincronización incremental. Establezca RPS of Incremental Data Synchronization y Data synchronization speed for incremental synchronization (MB/s) |
| Environment Tag | Seleccione una etiqueta de entorno para identificar la instancia. No es necesario seleccionar ninguna para esta tarea |
| Configure ETL | Elija si desea habilitar la función de extracción, transformación y carga (ETL). Seleccione Yesalert notifications e introduzca las instrucciones de procesamiento de datos en el editor de código, o seleccione No para deshabilitarla. Para obtener más información, consulte What is ETL? y Configure ETL in a data migration or data synchronization task |
| Monitoring and Alerting | Seleccione Yes para recibir notificaciones cuando la sincronización presente errores o la latencia supere el umbral. Establezca el umbral de alerta y los contactos. Para obtener más información, consulte Configure monitoring and alerting during task configuration. Seleccione No para omitir las alertas |
Haga clic en Next: Data Validation para configurar una tarea de validación de datos. Para obtener más información, consulte Configure data validation.
Paso 4: Guardar la configuración y ejecutar la comprobación previa
Para previsualizar los parámetros de API de esta tarea, pase el cursor sobre Next: Save Task Settings and Precheck y haga clic en Preview OpenAPI parameters en la información emergente.
Haga clic en Next: Save Task Settings and Precheck para guardar e iniciar la comprobación previa.
DTS realiza una comprobación previa antes de iniciar la tarea. La tarea solo inicia después de superar dicha comprobación.
Si la comprobación previa presenta errores, haga clic en View Details junto al elemento con errores, corrija el problema según las indicaciones y vuelva a ejecutar la comprobación previa.
Si la comprobación previa genera advertencias:
Para las advertencias que no se pueden ignorar, haga clic en View Details , corrija el problema y vuelva a ejecutar la comprobación previa.
Para las advertencias que se pueden ignorar, haga clic en Confirm Alert Details > Ignore > OK y luego haga clic en Precheck Again . Ignorar las advertencias de la comprobación previa puede generar inconsistencias de datos. Proceda con precaución.
Paso 5: Adquirir 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.
|
Parámetro |
Descripción |
|
Billing Method |
Subscription: pago anticipado por una duración fija. Rentable para tareas continuas a largo plazo. Pay-as-you-go: facturación por hora según el uso real. Adecuado para tareas de corto plazo o de prueba; libere la instancia en cualquier momento para detener la facturación |
|
Resource Group Settings |
El resource group de la instancia. El valor predeterminado es default resource group. Para obtener más información, consulte What is Resource Management? |
|
Instance Class |
Determina el nivel de rendimiento de sincronización. Seleccione una clase según sus requisitos de rendimiento. Para obtener más información, consulte Data synchronization link specifications |
|
Subscription Duration |
(Solo para facturación por suscripción) Opciones mensuales: de 1 a 9 meses. Opciones anuales: 1, 2, 3 o 5 años |
Seleccione la casilla 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 de confirmación.
Monitoree el progreso de la tarea en la página de sincronización de datos.