Data Transmission Service (DTS) permite sincronizar datos en tiempo real desde una instancia de ApsaraDB RDS for PostgreSQL hacia otra. Utilice este flujo de trabajo cuando necesite instancias en espera para recuperación ante desastres, réplicas de lectura para separar cargas de lectura y escritura, migración de bases de datos entre cuentas o una instancia de análisis independiente que se mantenga sincronizada con el entorno de producción.
DTS admite tres fases de sincronización: sincronización de esquemas, sincronización completa de datos y sincronización incremental de datos. También soporta cuatro topologías unidireccionales: uno a uno, uno a varios, en cascada y varios a uno.
Requisitos previos
Antes de empezar, asegúrese de cumplir con lo siguiente:
Tener creadas tanto la instancia de origen como la de destino de ApsaraDB RDS for PostgreSQL. Consulte Crear una instancia de ApsaraDB RDS for PostgreSQL.
La versión de la instancia de destino debe ser igual o superior a la de origen. Una versión más antigua en el destino puede provocar errores de compatibilidad.
Espacio de almacenamiento libre suficiente en la instancia de destino; este debe superar el tamaño total de los datos en la instancia de origen.
El parámetro
wal_levelde la instancia de origen debe estar establecido enlogical.-
La retención de registros WAL debe configurarse de la siguiente manera:
Solo sincronización incremental de datos: conserve los registros WAL durante más de 24 horas.
Sincronización completa más sincronización incremental de datos: conserve los registros WAL durante al menos siete días. Una vez finalizada la sincronización completa, puede reducir el periodo de retención a más de 24 horas.
Si los registros WAL no se conservan el tiempo suficiente, DTS podría no leerlos correctamente. Esto provocaría el fallo de la tarea y podría causar inconsistencia o pérdida de datos. Asegúrese de establecer el periodo de retención de los registros WAL según los requisitos anteriores. De lo contrario, no se garantizará la fiabilidad ni el rendimiento del servicio especificados en el Acuerdo de Nivel de Servicio (SLA) de DTS.
Para consultar las combinaciones compatibles de versiones de origen y destino, revise la Descripción general de escenarios de sincronización de datos.
Facturación
|
Tipo de sincronización |
Costo |
|
Sincronización de esquemas y sincronización completa de datos |
Gratis |
|
Sincronización incremental de datos |
Con cargo. Consulte la Descripción general de facturación. |
Limitaciones
Revise estas limitaciones antes de comenzar.
Requisitos de la base de datos de origen
-
Las tablas deben tener una restricción PRIMARY KEY o UNIQUE, y todos sus campos deben ser únicos. Sin estas restricciones, la base de datos de destino podría contener registros duplicados.
Si crea la tarea de sincronización sin seleccionar Schema Synchronization , la tabla de destino debe tener las mismas restricciones PRIMARY KEY o NOT NULL UNIQUE que la tabla de origen. De lo contrario, podrían aparecer registros duplicados.
Si selecciona tablas como objetos de sincronización y desea cambiar el nombre de tablas o columnas en el destino, una sola tarea admite un máximo de 5,000 tablas. Para más de 5,000 tablas, divida la carga de trabajo en varias tareas o sincronice a nivel de base de datos en lugar de a nivel de tabla.
DTS no puede sincronizar tablas temporales, desencadenadores internos ni ciertos procedimientos y funciones internas escritos en C. DTS sí puede sincronizar parámetros personalizados de los tipos COMPOSITE, ENUM y RANGE. Las tablas deben tener restricciones PRIMARY KEY, FOREIGN KEY, UNIQUE o CHECK.
-
DTS crea un slot de replicación con el prefijo
dts_sync_en la base de datos de origen, lo que le permite acceder a los registros incrementales de los últimos 15 minutos. La acumulación de slots de replicación puede agotar el espacio en disco. Configure una alarma de uso de disco en la instancia de origen cuando la replicación lógica esté activa. Comportamiento de limpieza de slots de replicación:
Después de liberar la instancia de DTS, el slot se elimina automáticamente, a menos que haya cambiado la contraseña de la base de datos de origen o eliminado las direcciones IP de DTS de la lista blanca de IP. En esos casos, deberá eliminar el slot manualmente.
Si ocurre un cambio de rol primario/secundario en el origen, inicie sesión en la base de datos secundaria y elimine el slot manualmente.
DTS crea las siguientes tablas temporales en la base de datos de origen para capturar sentencias DDL, esquemas incrementales de tablas e información de latido. No las elimine mientras la sincronización esté en ejecución, ya que se borran automáticamente al liberar la instancia de DTS:
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_sessionDTS agrega una tabla de latido llamada
dts_postgres_heartbeata la base de datos de origen para rastrear con precisión la latencia de sincronización.Para realizar un cambio de rol primario/secundario en la instancia de origen de ApsaraDB RDS for PostgreSQL sin interrumpir la sincronización, habilite primero la función Logical Replication Slot Failover. Consulte Logical Replication Slot Failover.
Si un solo cambio incremental de datos supera los 256 MB, la instancia de sincronización en ejecución fallará y no podrá recuperarse; deberá reconfigurar la tarea.
Durante la sincronización de esquemas y la sincronización completa de datos, no ejecute sentencias DDL que modifiquen los esquemas de la base de datos o de las tablas. Si lo hace, la tarea fallará.
Si la base de datos de origen tiene transacciones de larga duración durante la sincronización incremental de datos, los registros WAL generados antes de que se confirmen dichas transacciones pueden acumularse y agotar el espacio en disco.
Si se realiza una actualización de versión principal en la base de datos de origen mientras una instancia de sincronización está en ejecución, la instancia fallará y no podrá recuperarse; deberá reconfigurar la tarea.
Otros requisitos
Una sola tarea sincroniza datos de una única base de datos. Para sincronizar varias bases de datos, cree una tarea independiente para cada una.
DTS no puede sincronizar tablas que tengan relaciones de herencia entre distintos esquemas.
-
Si selecciona un esquema como objeto de sincronización, ejecute la siguiente sentencia antes de escribir datos en cualquier tabla nueva o renombrada dentro de ese esquema:
ALTER TABLE schema.table REPLICA IDENTITY FULL;Reemplace
schemaytablepor los nombres reales. Ejecute esta sentencia fuera de horas pico y evite bloquear la tabla, ya que hacerlo durante la ejecución puede causar un interbloqueo. DTS no valida metadatos como las secuencias. Compruebe manualmente la validez de las secuencias.
Antes de trasladar las cargas de trabajo a la base de datos de destino, actualice el valor inicial de las secuencias en el destino. Después del cambio, las nuevas escrituras en secuencias no continuarán desde el valor máximo registrado en el origen.
Cuando la cuenta de destino es privilegiada o de superusuario y las tablas sincronizadas contienen claves externas, desencadenadores o desencadenadores de eventos, DTS establece temporalmente
session_replication_roleenreplicaa nivel de sesión. Si la cuenta de destino carece de los permisos necesarios, establezca este parámetro enreplicamanualmente. Las operaciones UPDATE o DELETE en cascada en el origen durante este periodo pueden causar inconsistencia de datos. Una vez liberada la tarea, restablezca el parámetro aorigin.Escribir datos desde otros orígenes en la base de datos de destino durante la sincronización provoca inconsistencia de datos. Por ejemplo, ejecutar sentencias DDL en línea desde DMS mientras otros orígenes escriben en la base de datos de destino puede causar pérdida de datos.
Si una tarea falla, el soporte técnico de DTS intentará restaurarla en un plazo de 8 horas. Durante la restauración, la tarea podría reiniciarse y sus parámetros (no los de la base de datos) podrían modificarse.
Requisitos para tipos específicos de bases de datos de origen
Origen ApsaraDB RDS for PostgreSQL
No modifique el endpoint ni la zona de la instancia de origen mientras la sincronización esté en ejecución. Esto provocará el fallo de la tarea.
Origen PostgreSQL autogestionado
Los valores de max_wal_senders y max_replication_slots deben ser mayores, cada uno, que la suma de los slots de replicación actualmente en uso y el número de instancias de DTS que planea crear para esta base de datos.
Origen Cloud SQL for PostgreSQL (Google Cloud)
Establezca Database Account en una cuenta con el permiso cloudsqlsuperuser. Al seleccionar los objetos a sincronizar, elija solo aquellos que la cuenta tenga autorización para gestionar, o concédale el permiso OWNER sobre dichos objetos.
Una cuenta con el permiso cloudsqlsuperuser no puede gestionar datos propiedad de otras cuentas con el mismo permiso.
Objetos compatibles
|
Tipo de objeto |
Detalles |
|
SCHEMA y TABLE |
Incluye PRIMARY KEY, UNIQUE KEY, FOREIGN KEY, tipos de datos integrados y restricciones DEFAULT |
|
VIEW, PROCEDURE, FUNCTION, RULE, SEQUENCE, EXTENSION, TRIGGER, AGGREGATE, INDEX, OPERATOR, DOMAIN |
PROCEDURE requiere PostgreSQL V11 o posterior |
Operaciones SQL que se pueden sincronizar
|
Tipo |
Sentencias |
|
DML |
INSERT, UPDATE, DELETE |
|
DDL |
Consulte a continuación |
La sincronización de DDL solo está disponible para tareas creadas después del 1 de octubre de 2020.
Para las tareas creadas antes del 12 de mayo de 2023, debe crear desencadenadores y funciones en la base de datos de origen para capturar la información DDL antes de configurar la tarea. Consulte Uso de desencadenadores y funciones para implementar la migración incremental de DDL en bases de datos PostgreSQL.
La sincronización de DDL requiere una cuenta de base de datos privilegiada en la instancia de origen con una versión menor del motor 20210228 o posterior. Para actualizar la versión menor, consulte Actualizar la versión menor del motor.
Sentencias DDL compatibles:
CREATE TABLE y DROP TABLE
ALTER TABLE: RENAME TABLE, ADD COLUMN, ADD COLUMN DEFAULT, ALTER COLUMN TYPE, DROP COLUMN, ADD CONSTRAINT, ADD CONSTRAINT CHECK, ALTER COLUMN DROP DEFAULT
TRUNCATE TABLE (solo para origen PostgreSQL autogestionado versión 11 o posterior)
CREATE INDEX ON TABLE
Limitaciones de DDL:
Para utilizar una tarea de sincronización de datos creada antes del 12 de mayo de 2023 con el fin de sincronizar operaciones DDL, debe crear desencadenadores y funciones en la base de datos de origen para capturar la información DDL antes de configurar la tarea. Para obtener más información, consulte Uso de desencadenadores y funciones para implementar la migración incremental de DDL en bases de datos PostgreSQL.
Los datos de tipo BIT no se pueden sincronizar durante la sincronización incremental de datos.
Las cláusulas DDL adicionales, como CASCADE o RESTRICT, no se sincronizan.
Las sentencias DDL provenientes de sesiones que ejecutan
SET session_replication_role = replicano se sincronizan.Las sentencias DDL ejecutadas mediante la invocación de funciones no se sincronizan.
Si una transacción contiene tanto sentencias DML como DDL, las sentencias DDL no se sincronizan.
Las sentencias DDL para objetos fuera del alcance de la sincronización no se sincronizan.
Crear una tarea de sincronización
Paso 1: Abrir la página de sincronización de datos
Utilice la consola de DTS o la consola de DMS.
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, seleccione la región donde reside la instancia de sincronización.
Consola de DMS
Nota
Los pasos pueden variar según el modo y el diseño de la consola de DMS. 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 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 de sincronización.
Paso 2: Crear la tarea
Haga clic en Create Task.
-
Si la página muestra un botón New Configuration Page en la esquina superior derecha, haga clic en él.
Omita este paso si se muestra Back to Previous Version en su lugar. Las páginas de configuración nueva y anterior pueden diferir ligeramente; utilice la versión nueva.
Paso 3: Configurar las bases de datos de origen y destino
Después de configurar ambas bases de datos, lea los Limits que se muestran en la página. Omitir esta lectura puede provocar errores en la tarea o inconsistencia en los datos.
|
Sección |
Parámetro |
Descripción |
|
N/A |
Task Name |
DTS genera automáticamente un nombre para la tarea. Se recomienda especificar un nombre descriptivo para facilitar su identificación. El nombre no tiene que ser único. |
|
Source Database |
Database Type |
El tipo de la base de datos de origen. Seleccione PostgreSQL. |
|
Connection Type |
El método de acceso a la base de datos de origen. Seleccione Alibaba Cloud Instance. |
|
|
Instance Region |
La región donde reside la instancia de origen de ApsaraDB RDS for PostgreSQL. |
|
|
Replicate Data Across Alibaba Cloud Accounts |
Este ejemplo utiliza una instancia de base de datos que pertenece a la cuenta actual de Alibaba Cloud. Seleccione No. |
|
|
Instance ID |
El ID de la instancia de origen de ApsaraDB RDS for PostgreSQL. |
|
|
Database Name |
El nombre de la base de datos desde la cual se sincronizan los objetos en la instancia de origen de ApsaraDB RDS for PostgreSQL. |
|
|
Database Account |
La cuenta de la base de datos de la instancia de origen de ApsaraDB RDS for PostgreSQL. Especifique una cuenta con privilegios que sea propietaria de la base de datos. Para obtener más información sobre cómo crear una cuenta para una instancia de ApsaraDB RDS for PostgreSQL y otorgarle permisos, consulte Create an account y Create a database. Nota
Si la instancia de origen es una instancia de ApsaraDB RDS for PostgreSQL V9.4 y solo desea sincronizar operaciones DML, la cuenta de la base de datos solo requiere el permiso REPLICATION. |
|
|
Database Password |
Introduzca la contraseña correspondiente a la cuenta de la base de datos. |
|
|
Encryption |
Especifica si se debe cifrar la conexión a la base de datos de origen. Este parámetro se configura según sus necesidades empresariales. En este ejemplo, se selecciona Non-encrypted. Si desea establecer una conexión cifrada con SSL a la base de datos de origen, realice los siguientes pasos: seleccione SSL-encrypted, cargue el CA Certificate, el Client Certificate y la Private Key of Client Certificate según sea necesario, y luego especifique la Private Key Password of Client Certificate. Nota
|
|
|
Destination Database |
Database Type |
El tipo de la base de datos de destino. Seleccione PostgreSQL. |
|
Connection Type |
El método de acceso a la base de datos de destino. Seleccione Alibaba Cloud Instance. |
|
|
Instance Region |
La región donde reside la instancia de destino de ApsaraDB RDS for PostgreSQL. |
|
|
Instance ID |
El ID de la instancia de destino de ApsaraDB RDS for PostgreSQL. |
|
|
Database Name |
El nombre de la base de datos hacia la cual se sincronizan los objetos en la instancia de destino de ApsaraDB RDS for PostgreSQL. |
|
|
Database Account |
La cuenta de la base de datos de la instancia de destino de ApsaraDB RDS for PostgreSQL. La cuenta debe tener permisos de propietario sobre los esquemas. Para obtener información sobre cómo crear una cuenta para una instancia de ApsaraDB RDS for PostgreSQL y otorgarle permisos, consulte Create an account. |
|
|
Database Password |
Introduzca la contraseña correspondiente a la cuenta de la base de datos. |
|
|
Encryption |
Especifica si se debe cifrar la conexión a la base de datos de origen. Este parámetro se configura según sus necesidades empresariales. En este ejemplo, se selecciona Non-encrypted. Si desea establecer una conexión cifrada con SSL a la base de datos de origen, realice los siguientes pasos: seleccione SSL-encrypted, cargue el CA Certificate, el Client Certificate y la Private Key of Client Certificate según sea necesario, y luego especifique la Private Key Password of Client Certificate. Nota
|
Paso 4: Probar la conectividad
Haga clic en Test Connectivity and Proceed en la parte inferior de la página.
Los bloques CIDR de los servidores de DTS deben agregarse a la configuración de seguridad de ambas bases de datos. Consulte Add the CIDR blocks of DTS servers . Si alguna de las bases de datos es autogestionada y no está configurada con acceso de tipo Alibaba Cloud Instance , haga clic en Test Connectivity en el cuadro de diálogo CIDR Blocks of DTS Servers .
Paso 5: Configurar los objetos a sincronizar
En el paso Configure Objects, configure los siguientes parámetros:
|
Parámetro |
Descripción |
|
Synchronization Types |
Incremental Data Synchronization está seleccionado de forma predeterminada. Seleccione también Schema Synchronization y Full Data Synchronization para sincronizar los datos históricos como línea base de la sincronización incremental. Al seleccionar Schema Synchronization, DTS sincroniza los esquemas de las tablas, incluidas las claves externas. |
|
Synchronization Topology |
Seleccione One-way Synchronization. |
|
Processing Mode of Conflicting Tables |
Precheck and Report Errors (predeterminado): la comprobación previa falla si el origen y el destino tienen tablas con el mismo nombre. Utilice el mapeo de nombres de objetos para renombrar las tablas en conflicto en el destino si es necesario. Ignore Errors and Proceed: omite la comprobación de conflictos de nombres. Durante la sincronización completa, se conservan los registros existentes en el destino que coincidan con valores de clave principal o única. Durante la sincronización incremental, estos se sobrescriben. Si los esquemas difieren, la inicialización podría fallar parcialmente. Utilícelo con precaución. |
|
Capitalization of Object Names in Destination Instance |
Controla el uso de mayúsculas en los nombres de bases de datos, tablas y columnas en el destino. El valor predeterminado es DTS default policy. Consulte Specify the capitalization of object names. |
|
Source Objects |
Seleccione columnas, tablas o esquemas y haga clic en el icono de flecha para moverlos a Selected Objects. |
|
Selected Objects |
Haga clic con el botón derecho en un objeto para renombrarlo (consulte Map the name of a single object), filtrar por operación SQL o agregar condiciones WHERE (consulte Set filter conditions). Para renombrar varios objetos a la vez, haga clic en Batch Edit. Tenga en cuenta que renombrar un objeto puede interrumpir la sincronización de los objetos dependientes. |
Paso 6: Configurar opciones avanzadas
Haga clic en Next: Advanced Settings y configure lo siguiente:
|
Parámetro |
Descripción |
|
Dedicated Cluster for Task Scheduling |
De forma predeterminada, DTS utiliza un clúster compartido. Para mayor estabilidad en las tareas, adquiera un clúster dedicado. Consulte What is a DTS dedicated cluster. |
|
Retry Time for Failed Connections |
Tiempo durante el cual DTS reintenta la conexión tras un fallo. Rango válido: 10–1440 minutos. Valor predeterminado: 720 minutos. Establezca un mínimo de 30 minutos. Si DTS se reconecta dentro de este periodo, la tarea se reanuda; de lo contrario, falla. Si varias tareas comparten el mismo origen o destino, se aplica el tiempo de reintento más corto. Los cargos de la instancia de DTS continúan durante los reintentos. |
|
Retry Time for Other Issues |
Tiempo durante el cual DTS reintenta tras fallos en operaciones DDL o DML. Rango válido: 1–1440 minutos. Valor predeterminado: 10 minutos. Establezca un mínimo de 10 minutos. Este valor debe ser menor que Retry Time for Failed Connections. |
|
Enable Throttling for Full Data Migration |
Limite las consultas por segundo (QPS) a la base de datos de origen, los registros por segundo (RPS) de la migración completa de datos o la velocidad de migración (MB/s) para reducir la carga durante la sincronización completa. Visible solo cuando se selecciona Full Data Synchronization. |
|
Enable Throttling for Incremental Data Synchronization |
Limite los RPS o la velocidad de sincronización (MB/s) para la sincronización incremental a fin de reducir la carga en el destino. |
|
Environment Tag |
Una etiqueta opcional para identificar la instancia de DTS. |
|
Configure ETL |
Habilite la función de extracción, transformación y carga (ETL) para transformar los datos en tránsito. Seleccione Yesconfiguración de notificaciones de alertas para introducir instrucciones de procesamiento de datos. Consulte Configure ETL in a data migration or data synchronization task. |
|
Monitoring and Alerting |
Configure alertas para fallos en tareas o latencia que supere un umbral determinado. Seleccione Yes para configurar el umbral de alerta y los contactos de notificación. Consulte Configure monitoring and alerting when you create a DTS task. |
Paso 7: Configurar la verificación de datos (opcional)
Haga clic en Next Step: Data Verification para configurar la verificación. Consulte Configure a data verification task.
Paso 8: 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, pase el puntero sobre el botón y haga clic en Preview OpenAPI parameters antes de continuar.
DTS ejecuta una comprobación previa antes de que pueda iniciarse la tarea. Si la comprobación falla:
Haga clic en View Details junto a cada elemento fallido, resuelva el problema y luego haga clic en Precheck Again.
Si un elemento muestra una alerta que puede ignorarse, haga clic en Confirm Alert Details > Ignore > OK, y luego haga clic en Precheck Again. Ignorar alertas puede provocar inconsistencia en los datos.
Paso 9: Adquirir e iniciar la instancia
Espere hasta que Success Rate alcance 100%, y luego haga clic en Next: Purchase Instance.
-
En la página de compra, configure lo siguiente:
Sección
Parámetro
Descripción
New Instance Class
Método de facturación
-
Subscription: Paga por una suscripción al crear una instancia de sincronización de datos. El modelo de facturación por suscripción es más rentable que el modelo pay-as-you-go para uso a largo plazo.
-
Pay-as-you-go: Una instancia pay-as-you-go se factura por hora. El modelo de facturación pay-as-you-go es adecuado para uso a corto plazo. Si ya no necesita una instancia de sincronización de datos pay-as-you-go, puede liberarla para reducir costos.
Configuración del resource group
El resource group al que pertenece la instancia de sincronización de datos. Valor predeterminado: default resource group. Para obtener más información, consulte What is Resource Management?
Clase de instancia
DTS ofrece clases de instancia que varían en velocidad de sincronización. Puede seleccionar una clase de instancia según sus necesidades empresariales. Para obtener más información, consulte Instance classes of data synchronization instances.
Duración de la suscripción
Si selecciona el método de facturación por suscripción, especifique la duración de la misma y la cantidad de instancias de sincronización de datos que desea crear. La duración de la suscripción puede ser de uno a nueve meses, un año, dos años, tres años o cinco años.
NotaEste parámetro solo está disponible si selecciona el método de facturación Subscription.
-
Lea y acepte los 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.
Consulte el progreso de la tarea en la lista de tareas.
Acciones posteriores al inicio de la tarea
Una vez iniciada la tarea, monitoree la latencia de sincronización en la lista de tareas. Antes de cambiar las cargas de trabajo al destino:
Actualice el valor inicial de las secuencias en la base de datos de destino. Después del cambio, los nuevos valores de secuencia no continuarán desde el valor máximo del origen.
Si utiliza únicamente DTS para escribir datos de tablas en la base de datos de destino, puede usar DMS para realizar operaciones DDL en línea sobre las tablas de origen sin bloquearlas durante la sincronización. Consulte Change schemas without locking tables.
Para consultar las topologías de sincronización compatibles, vea Synchronization topologies.