Utilice Data Transmission Service (DTS) para replicar los datos de un origen de ApsaraDB RDS for PostgreSQL hacia una instancia de AnalyticDB for PostgreSQL, con el fin de analizarlos y generar reportes. DTS se encarga tanto de la carga inicial completa como de los cambios incrementales continuos (INSERT, UPDATE, DELETE), por lo que su base de datos analítica se mantiene sincronizada sin necesidad de exportaciones manuales.
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Tablas con claves primarias para sincronizar. DTS utiliza replicación lógica para capturar los cambios en los datos, por lo que no es posible rastrear las modificaciones a nivel de fila en tablas sin clave primaria.
Una instancia de AnalyticDB for PostgreSQL de destino. Para obtener más información, consulte Crear una instancia de AnalyticDB for PostgreSQL.
Limitaciones
Revise estas limitaciones antes de configurar la tarea de sincronización:
La sincronización de esquemas no es compatible. DTS no copia los esquemas del origen al destino. Cree manualmente la base de datos, los esquemas y las tablas de destino antes de iniciar la tarea.
Solo es posible seleccionar tablas como objetos para sincronizar. Las vistas, secuencias y otros tipos de objetos no son compatibles.
Tipos de datos no compatibles: BIT, VARBIT, GEOMETRY, UUID, TSQUERY, TSVECTOR y TXID_SNAPSHOT. Las columnas con estos tipos se omiten durante la sincronización.
Las operaciones DDL no se propagan automáticamente. Si ejecuta una instrucción DDL en una tabla de origen durante la sincronización, aplique la misma instrucción DDL en la tabla de destino y luego reinicie la tarea de sincronización.
Una tarea por base de datos. Cada tarea de sincronización abarca una sola base de datos de origen. Para sincronizar varias bases de datos, cree una tarea distinta para cada una.
El cambio entre nodo principal y secundario solo es compatible con ApsaraDB RDS for PostgreSQL 11. En otras versiones de RDS y en bases de datos PostgreSQL autogestionadas, este cambio provoca que la tarea termine con errores. Si necesita esta compatibilidad en una instancia de PostgreSQL 11, establezca el parámetro
rds_failover_slot_modeensyncantes de ejecutar el cambio. Para obtener más información, consulte Conmutación por error de ranuras de replicación lógica.
Facturación
|
Tipo de sincronización |
Costo |
|
Sincronización de esquemas y sincronización completa de datos |
Sin costo |
|
Sincronización incremental de datos |
Con costo. Para obtener más información, consulte Descripción general de facturación. |
Consideraciones importantes
Transacciones de larga duración y acumulación de WAL
DTS utiliza registros de escritura anticipada (WAL) para capturar los cambios incrementales. Si una transacción de larga duración permanece abierta en la base de datos de origen, PostgreSQL no puede eliminar los segmentos WAL generados antes de que dicha transacción comenzara. Estos segmentos se acumulan en el disco hasta que la transacción se confirma o se revierte. Si el disco de origen se llena, la tarea de sincronización termina con errores.
Para reducir este riesgo, supervise las transacciones abiertas en la instancia de origen durante la sincronización activa y mantenga las transacciones cortas.
Tablas nuevas creadas después de iniciar la sincronización
DTS detecta las tablas que se crean en la base de datos de origen después de iniciar la tarea. Sin embargo, estas tablas requieren que primero se configure su identidad a nivel de fila:
ALTER TABLE schema.table REPLICA IDENTITY FULL;
Ejecute esta instrucción en cada tabla nueva antes de que DTS la procese, para garantizar que los cambios de fila se capturen correctamente.
Preparar la instancia de origen
DTS utiliza la replicación lógica de PostgreSQL para capturar los cambios incrementales. Este tipo de replicación requiere que el parámetro wal_level esté establecido en logical.
Modificar wal_level requiere reiniciar la instancia. Planifique este cambio fuera del horario de mayor actividad para minimizar el impacto en su carga de trabajo.
Inicie sesión en la consola de ApsaraDB RDS.
En el panel de navegación izquierdo, haga clic en Instances.
En la barra de navegación superior, seleccione la región donde reside la instancia de ApsaraDB RDS for PostgreSQL.
Haga clic en el identificador de la instancia.
En el panel de navegación izquierdo, haga clic en Parameters.
En la página Parameters, busque
wal_levely establezca su valor enlogical. Para obtener más información, consulte Modificar los parámetros de una instancia de ApsaraDB RDS for PostgreSQL.Reinicie la instancia para aplicar el cambio.
Preparar la instancia de destino
Cree la base de datos, el esquema y las tablas de destino en la instancia de AnalyticDB for PostgreSQL, tomando como referencia el esquema de origen. DTS no crea estos objetos automáticamente. Para consultar la sintaxis SQL, vea Sintaxis SQL.
Crear una tarea de sincronización
-
Adquiera una instancia de sincronización de datos. Para obtener más información, consulte Adquirir una instancia de DTS.
En la página de compra, establezca Source Instance en PostgreSQL , configure Destination Instance como AnalyticDB for PostgreSQL y defina Synchronization Topology en One-Way Synchronization .
-
Inicie sesión en la consola de DTS.
Si el sistema lo redirige a la consola de Data Management (DMS), coloque el puntero sobre el ícono
en la esquina inferior derecha y haga clic en el ícono
para volver a la consola de DTS. Si ya se encuentra en la versión nueva de la consola de DTS, haga clic en el ícono
ubicado en la esquina inferior derecha. En el panel de navegación izquierdo, haga clic en Data Synchronization.
En la parte superior de la página Data Synchronization Tasks, seleccione la región donde reside la instancia de destino.
Busque la instancia de sincronización de datos y haga clic en Configure Task dentro de la columna Actions.
-
Configure las instancias de origen y de destino.

Detalles de la instancia de origen
Parámetro
Descripción
Synchronization task name
Nombre que DTS genera automáticamente. Especifique un nombre descriptivo para identificar la tarea con facilidad. No es necesario que sea único.
Instance type
Seleccione RDS Instance.
Instance region
Región de origen seleccionada en la página de compra. Este valor no se puede modificar.
Instance ID
Identificador de la instancia de ApsaraDB RDS for PostgreSQL.
Database name
Nombre de la base de datos de origen.
Database account
Cuenta con privilegios de la instancia de ApsaraDB RDS for PostgreSQL. Esta cuenta debe ser propietaria de la base de datos seleccionada. Si el origen ejecuta PostgreSQL 9.4 y solo sincroniza operaciones DML, basta con el permiso REPLICATION.
Database password
Contraseña de la cuenta de la base de datos.
Detalles de la instancia de destino
Parámetro
Descripción
Instance type
Fijo en AnalyticDB for PostgreSQL.
Instance region
Región de destino seleccionada en la página de compra. Este valor no se puede modificar.
Instance ID
Identificador de la instancia de AnalyticDB for PostgreSQL de destino.
Database name
Nombre de la base de datos de destino. La base de datos ya debe existir en la instancia. De lo contrario, primero cree una base de datos.
Database account
Cuenta inicial de la instancia de AnalyticDB for PostgreSQL. También puede usar una cuenta con el permiso RDS_SUPERUSER. Para obtener más información, consulte Crear una cuenta de base de datos y Gestionar usuarios y permisos.
Database password
Contraseña de la cuenta de la base de datos.
-
Haga clic en Set Whitelist and Next. DTS agrega automáticamente sus bloques CIDR de servidor a la lista blanca de direcciones IP de las instancias de base de datos de Alibaba Cloud. Para bases de datos autogestionadas alojadas en instancias de Elastic Compute Service (ECS), DTS añade los bloques CIDR a las reglas del security group de ECS; si la base de datos abarca varias instancias de ECS, agregue los bloques CIDR a cada instancia de forma manual. En el caso de bases de datos implementadas en centros de datos o proporcionadas por terceros, añada los bloques CIDR manualmente. Para obtener más información, consulte Agregar los bloques CIDR de los servidores de DTS.
AvisoAgregar los bloques CIDR de los servidores de DTS a su lista blanca o a las reglas del security group aumenta la exposición de la red. Antes de continuar, evalúe las implicaciones de seguridad y tome las medidas adecuadas. Por ejemplo, use credenciales seguras, restrinja los puertos expuestos, audite las llamadas a la API, revise periódicamente las reglas de la lista blanca y conéctese mediante Express Connect, VPN Gateway o Smart Access Gateway (SAG) en lugar de usar internet público.
-
Configure la política de sincronización y los objetos que desea sincronizar.

Parámetro
Descripción
Initialize synchronization
La opción Initial Full Data Synchronization está seleccionada de forma predeterminada. DTS sincroniza todos los datos existentes de la base de datos de origen antes de comenzar la sincronización incremental.
Processing mode of conflicting tables
Clear Data: omite la comprobación de tablas vacías durante la verificación previa y borra los datos de la tabla de destino antes de la carga completa. Útil cuando prueba una tarea y luego cambia a datos de producción. Ignore: omite la comprobación de tablas vacías y anexa los datos a los que ya existen en la tabla de destino. Recomendado cuando combina datos de varias tablas de origen en una sola tabla de destino.
Synchronization type
Seleccione los tipos de operación que desea sincronizar: Insert, Update y Delete. La opción AlterTable aparece en la lista, pero no es compatible.
Select the objects to be synchronized
En la sección Available, seleccione una o más tablas y haga clic en el ícono
para moverlas a la sección Selected. Solo es posible seleccionar tablas. Para cambiar el nombre de los objetos sincronizados en el destino, utilice la función de asignación de nombres de objetos. Para obtener más información, consulte Asignación de nombres de objetos.Retry time for failed connections
Valor predeterminado: 720 minutos (12 horas). Si DTS no logra conectarse al origen o al destino dentro de este periodo, la tarea termina con errores. Ajústelo según el tiempo de inactividad que admita su entorno. La facturación de DTS continúa durante los reintentos, por lo que debe liberar la instancia de DTS de inmediato si da de baja el origen o el destino.
-
Haga clic en Precheck.
DTS ejecuta una verificación previa antes de iniciar la tarea. Si esta falla, haga clic en el ícono
junto a cada elemento con errores para consultar los detalles. Corrija los problemas y vuelva a ejecutar la verificación previa. También puede ignorar elementos específicos con errores y repetir la verificación si dichos problemas no afectan su caso de uso. Cuando aparezca el mensaje Precheck Passed, cierre el cuadro de diálogo Precheck. La tarea de sincronización se inicia automáticamente.
-
En la página Synchronization Tasks, espere a que la tarea pase al estado Synchronizing. Esto indica que la sincronización inicial completa de datos finalizó y que la sincronización incremental está activa.

Pasos siguientes
Para cambiar el nombre de tablas o columnas en la base de datos de destino, consulte Cambiar el nombre de un objeto que se va a sincronizar.
Para supervisar la latencia de sincronización y el estado de la tarea, consulte los detalles de la tarea en la consola de DTS.