Este tema explica cómo sincronizar datos de un clúster PolarDB for PostgreSQL (Compatible with Oracle) a Message Queue for Apache Kafka mediante Data Transmission Service (DTS).
Requisitos previos
Establezca el parámetro wal_level en logical para la instancia de origen de PolarDB for PostgreSQL (Compatible with Oracle). Esto agrega la información obligatoria para la decodificación lógica al registro de escritura anticipada (WAL). Para obtener más información, consulte Configure cluster parameters.
-
Cree una instancia de destino de Alibaba Cloud Message Queue for Kafka con más espacio de almacenamiento que el utilizado por la instancia de origen de PolarDB for PostgreSQL (Compatible with Oracle).
NotaPara conocer las versiones compatibles de las bases de datos de origen y destino, consulte Sync solutions.
Cree un tema en la instancia de destino de Alibaba Cloud Message Queue for Kafka para recibir los datos sincronizados. Para obtener más información, consulte Step 1: Create a topic.
Notas de uso
|
Tipo |
Descripción |
|
Límites de la base de datos de origen |
|
|
Otros límites |
|
Facturación
|
Tipo de sincronización |
Precio |
|
Sincronización de esquemas y sincronización completa de datos |
Gratuito. |
|
Sincronización incremental de datos |
Con cargo. Para obtener más información, consulte Billing overview. |
Operaciones SQL para la sincronización incremental
|
Tipo de operación |
Sentencia SQL |
|
DML |
INSERT, UPDATE y DELETE |
|
DDL |
Nota
La sincronización de DDL no se admite en los escenarios a continuación:
|
Permisos de la cuenta de base de datos
|
Base de datos |
Permisos |
Referencias |
|
clúster PolarDB for PostgreSQL (Compatible with Oracle) |
cuenta privilegiada |
Procedimiento
-
Vaya a la página de lista de tareas de sincronización de la región de destino. Para ello, use uno de los dos métodos que se indican a continuación:
Desde la consola de DTS
Inicie sesión en la consola de Data Transmission Service (DTS).
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.
Desde la consola de DMS
NotaLas operaciones reales pueden variar según el modo y el diseño de la consola de DMS. Para obtener más información, consulte Simple mode y Customize the layout and style of the DMS interface.
Inicie sesión en Data Management (DMS).
En la barra de menú superior, elija .
A la derecha de Data Synchronization Tasks, seleccione la región donde se encuentra la instancia de sincronización.
Haga clic en Create Task para abrir la página de configuración de la tarea.
-
Configure las bases de datos de origen y destino.
NotaPara consultar los parámetros de la instancia de destino de Message Queue for Apache Kafka, consulte Configure the parameters of a Message Queue for Apache Kafka instance.
Categoría
Parámetro
Descripción
No aplica
Task Name
DTS genera automáticamente un nombre de tarea. Se recomienda especificar un nombre descriptivo para facilitar su identificación. El nombre no tiene que ser único.
Source Database
Select Existing Connection
-
Para usar una instancia de base de datos que esté added to the system (creada o guardada recientemente), seleccione la instancia de base de datos en la lista desplegable. La información de la base de datos se configura automáticamente.
NotaEn la consola de DMS, este elemento de configuración se denomina Select a DMS database instance..
-
Si no ha agregado la instancia de base de datos al sistema o no necesita usar una instancia ya agregada, configure manualmente la información de la base de datos que se indica a continuación.
Database Type
Seleccione PolarDB (Compatible with Oracle).
Access Method
Seleccione Alibaba Cloud Instance.
Instance Region
Seleccione la región donde se encuentra el clúster de origen de PolarDB for PostgreSQL (Compatible with Oracle).
Replicate Data Across Alibaba Cloud Accounts
En este ejemplo se usa una instancia de base de datos que pertenece a la cuenta de Alibaba Cloud actual. Seleccione No.
Instance ID
Seleccione el ID del clúster de origen de PolarDB for PostgreSQL (Compatible with Oracle).
Database Name
Introduzca el nombre de la base de datos de origen en el clúster de PolarDB for PostgreSQL (Compatible with Oracle).
Database Account
Introduzca la cuenta de base de datos del clúster de origen de PolarDB for PostgreSQL (Compatible with Oracle). Para obtener información sobre los permisos obligatorios, consulte Permissions required for database accounts.
Database Password
Introduzca la contraseña correspondiente a la cuenta de base de datos.
Destination Database
Select Existing Connection
-
Para usar una instancia de base de datos que esté added to the system (creada o guardada recientemente), seleccione la instancia de base de datos en la lista desplegable. La información de la base de datos se configura automáticamente.
NotaEn la consola de DMS, este elemento de configuración se denomina Select a DMS database instance..
-
Si no ha agregado la instancia de base de datos al sistema o no necesita usar una instancia ya agregada, configure manualmente la información de la base de datos que se indica a continuación.
Database Type
Seleccione Kafka.
Access Method
Seleccione Express Connect, VPN Gateway, or Smart Access Gateway.
NotaEn este ejemplo, la instancia de Message Queue for Apache Kafka está configurada como un clúster de Kafka autogestionado para la sincronización de datos.
Instance Region
Seleccione la región donde se encuentra la instancia de destino de Message Queue for Apache Kafka.
Connected VPC
Seleccione el ID de VPC de la instancia de destino de Message Queue for Apache Kafka.
Domain Name or IP
Introduzca una dirección IP de la sección Default Endpoint de la instancia de destino de Message Queue for Apache Kafka.
Port Number
Introduzca el puerto de servicio de la instancia de destino de Message Queue for Apache Kafka. El valor predeterminado es 9092.
Database Account
No es necesario configurar este parámetro para este ejemplo.
Database Password
Kafka Version
Seleccione la versión de su instancia de Kafka.
Encryption
Según sus requisitos empresariales y de seguridad, seleccione Non-encrypted o SCRAM-SHA-256.
Topic
Seleccione el topic que recibirá los datos sincronizados.
Use Kafka Schema Registry
Kafka Schema Registry es una capa de servicio para sus metadatos. Proporciona una interfaz RESTful para almacenar y recuperar esquemas Avro.
-
No: no usar Kafka Schema Registry.
-
Yes: usar Kafka Schema Registry. Debe introducir la URL o dirección IP registrada para el esquema Avro en Kafka Schema Registry en el campo URL or IP Address of Schema Registry.
-
-
Después de completar la configuración, haga clic en Test Connectivity and Proceed en la parte inferior de la página.
NotaAsegúrese de que los bloques CIDR de direcciones IP de los servidores DTS estén agregados en la configuración de seguridad de las bases de datos de origen y destino para permitir el acceso de los servidores DTS. Esto puede hacerse automática o manualmente. Para obtener más información, consulte Add the IP address CIDR blocks of DTS servers to a whitelist.
Si la base de datos de origen o destino es una base de datos autogestionada (cuyo Access Method no es Alibaba Cloud Instance), también debe hacer clic en Test Connectivity en el cuadro de diálogo CIDR Blocks of DTS Servers.
-
Configure los objetos de la tarea.
-
En la página Configure Objects, configure los objetos que se sincronizarán.
Parámetro
Descripción
Synchronization Types
Se selecciona Incremental Data Synchronization. De forma predeterminada, también debe seleccionar Schema Synchronization y Full Data Synchronization. Una vez completada la precomprobación, DTS sincroniza por completo los datos de los objetos seleccionados desde la instancia de origen al clúster de destino. Estos datos sirven como base para la sincronización de datos incremental posterior.
NotaSi el Access Method de la instancia de Kafka de destino está establecido en Alibaba Cloud Instance, Schema Synchronization no es compatible.
Processing Mode of Conflicting Tables
-
Precheck and Report Errors: comprueba si existe una tabla con el mismo nombre en la base de datos de destino. Si no existe ninguna tabla con el mismo nombre, la precomprobación pasa. Si existe una tabla con el mismo nombre, la precomprobación falla y la tarea de sincronización de datos no se inicia.
NotaSi no puede eliminar o cambiar el nombre de la tabla con el mismo nombre en la base de datos de destino, puede asignarle un nombre de tabla diferente. Para obtener más información, consulte Map table and column names.
-
Ignore Errors and Proceed: omite la comprobación de nombres de tabla duplicados en la base de datos de destino.
AvisoSi selecciona Ignore Errors and Proceed, pueden producirse incoherencias de datos y poner en riesgo su negocio. Por ejemplo:
-
Si los esquemas de tabla son iguales y un registro de la base de datos de destino tiene el mismo valor de clave principal o clave única que un registro de la base de datos de origen:
-
Durante la sincronización completa, DTS conserva el registro en el clúster de destino. El registro correspondiente de la base de datos de origen no se sincroniza.
-
Durante la sincronización incremental, el registro de la base de datos de origen sobrescribe el registro de la base de datos de destino.
-
-
Si los esquemas de tabla son diferentes, la sincronización inicial de datos puede fallar. Esto puede provocar que solo se sincronicen parcialmente algunos datos de columnas o que la sincronización falle por completo. Proceda con precaución.
-
Data Format in Kafka
Seleccione el formato de almacenamiento de los datos que se sincronizarán con la instancia de Kafka según sus requisitos empresariales.
-
Si selecciona Canal JSON, consulte Canal JSON para ver descripciones de parámetros y ejemplos.
NotaActualmente, solo puede seleccionar Canal JSON en las regiones China (Qingdao) y China (Beijing).
Si selecciona DTS Avro, debe analizar sintácticamente los datos según la definición de esquema DTS Avro. Para obtener más información, consulte definición de esquema DTS Avro y ejemplo de deserialización de DTS Avro.
-
Si selecciona Shareplex JSON, consulte Shareplex Json para ver descripciones de parámetros y ejemplos.
Kafka Data Compression Format
Seleccione el formato de compresión para la compresión de mensajes de Kafka según sus requisitos empresariales.
LZ4 (predeterminado): la tasa de compresión es baja, pero la velocidad de compresión es alta.
GZIP: la tasa de compresión es alta, pero la velocidad de compresión es baja.
NotaEl consumo de CPU es alto.
Snappy: la tasa y la velocidad de compresión son intermedias.
Policy for Shipping Data to Kafka Partitions
Seleccione strategy.
Message acknowledgement mechanism
Seleccione message acknowledgment mechanism.
Topic That Stores DDL Information
Seleccione en la lista desplegable el topic que se usa para almacenar la información de DDL.
NotaSi no se especifica, la información de DDL se almacena en el topic que recibe los datos de forma predeterminada.
Capitalization of Object Names in Destination Instance
Puede configurar la política de distinción entre mayúsculas y minúsculas para los nombres de objetos de base de datos, tabla y columna que se sincronizan con la instancia de destino. De forma predeterminada, se selecciona DTS default policy. También puede elegir usar las políticas predeterminadas de las bases de datos de origen y destino. Para obtener más información, consulte Case sensitivity policy for destination object names.
Source Objects
En el cuadro Source Objects, haga clic en un objeto que desee sincronizar y luego haga clic en
para moverlo al cuadro Selected Objects.NotaPuede seleccionar objetos para sincronizar en el nivel de tabla.
Selected Objects
Para este ejemplo, no es obligatoria una configuración adicional. Puede usar la función de asignación para establecer el nombre del topic, la cantidad de particiones del topic y la clave de partición de la tabla de origen en la instancia de Kafka de destino. Para obtener más información, consulte Mapping information.
Nota-
Si asigna nombres de objetos, otros objetos que dependen de ellos podrían no sincronizarse.
-
Para seleccionar operaciones SQL para la sincronización de datos incremental, haga clic con el botón derecho en un objeto del cuadro Selected Objects y seleccione las operaciones SQL deseadas en el cuadro de diálogo que aparece.
-
-
Haga clic en Next: Advanced Settings para configurar los parámetros avanzados.
Parámetro
Descripción
Dedicated Cluster for Task Scheduling
De forma predeterminada, DTS programa tareas en un clúster compartido y no necesita seleccionar un clúster. Para un rendimiento más estable, puede adquirir un clúster dedicado para ejecutar tareas de sincronización de DTS. Para obtener más información, consulte What is a DTS dedicated cluster?.
Retry Time for Failed Connections
Después de que se inicia una tarea de sincronización, si falla la conexión con la base de datos de origen o destino, DTS notifica un error y comienza a reintentar la conexión de inmediato. La duración predeterminada del reintento es de 720 minutos. También puede especificar una duración de reintento personalizada de 10 a 1,440 minutos. Se recomienda establecer la duración en 30 minutos o más. Si DTS se reconecta correctamente a la base de datos dentro de la duración especificada, la tarea de sincronización se reanuda automáticamente. De lo contrario, la tarea falla.
Nota-
Si tiene varias instancias de DTS (por ejemplo, Instancia A e Instancia B) que comparten el mismo origen o destino, y establece el tiempo de reintento de red en 30 minutos para la Instancia A y en 60 minutos para la Instancia B, se usa la duración más corta de 30 minutos para ambas.
-
Dado que DTS cobra el tiempo de ejecución de la tarea durante el periodo de reintento de conexión, se recomienda personalizar la duración del reintento según sus necesidades empresariales o liberar la instancia de DTS tan pronto como sea posible después de que se liberen las instancias de base de datos de origen y destino.
Retry Time for Other Issues
Después de que se inicia la tarea de sincronización, si se producen otros problemas no relacionados con la conectividad en la base de datos de origen o destino (como excepciones de ejecución de DDL o DML), DTS notifica un error y comienza de inmediato operaciones de reintento continuas. La duración predeterminada del reintento es de 10 minutos. También puede personalizar la duración del reintento dentro del rango de 1 a 1,440 minutos. Se recomienda establecerla en 10 minutos o más. Si las operaciones correspondientes se realizan correctamente dentro de la duración de reintento establecida, la tarea de sincronización se reanuda automáticamente. De lo contrario, la tarea falla.
ImportanteEl valor de Retry Time for Other Issues debe ser menor que el de Retry Time for Failed Connections.
Enable Throttling for Full Data Synchronization
Durante la etapa de sincronización completa, DTS consume recursos de lectura y escritura de las bases de datos de origen y destino, lo que puede aumentar la carga de las bases de datos. Para reducir la carga en las bases de datos de origen y destino, puede establecer un límite de velocidad para la tarea de sincronización completa mediante la configuración de los parámetros Queries per second (QPS) to the source database, RPS of Full Data Migration y Data migration speed for full migration (MB/s).
Nota-
Este elemento de configuración solo está disponible cuando Synchronization Types está establecido en Full Data Synchronization.
-
También puede adjust the full synchronization rate después de que la instancia de sincronización esté en ejecución.
Enable Throttling for Incremental Data Synchronization
También puede establecer un límite de velocidad para la tarea de sincronización incremental. Para aliviar la presión en la base de datos de destino, establezca RPS of Incremental Data Synchronization y Data synchronization speed for incremental synchronization (MB/s).
Environment Tag
Puede seleccionar una etiqueta de entorno para identificar la instancia. Para este ejemplo no es necesario seleccionar una.
Configure ETL
Elija si desea habilitar la función de extracción, transformación y carga (ETL). Para obtener más información, consulte What is ETL?. Valores válidos:
-
Yes: habilita la función ETL. Introduzca las instrucciones de procesamiento de datos en el editor de código. Para obtener más información, consulte Configure ETL in a data migration or data synchronization task.
-
No: deshabilita la función ETL.
Monitoring and Alerting
Especifique si desea configurar alertas. Si la sincronización falla o la latencia supera el umbral especificado, se envía una notificación a un contacto de alertas.
-
No: no se configuran alertas.
-
Yes: configure alertas. Para ello, establezca un umbral de alerta y especifique el elemento alert notification. Para obtener más información, consulte Configure monitoring and alerting during task configuration.
-
-
-
Guarde la tarea y ejecute una precomprobación.
Para consultar los parámetros de API para configurar esta instancia, pase el cursor sobre el botón Next: Save Task Settings and Precheck y haga clic en Preview OpenAPI parameters en el globo.
Si terminó de consultar los parámetros de API, haga clic en Next: Save Task Settings and Precheck en la parte inferior de la página.
NotaAntes de que comience el trabajo de sincronización, DTS ejecuta una precomprobación. El trabajo puede comenzar solo después de que todos los elementos de precomprobación se aprueben.
Si la precomprobación falla, haga clic en View Details para el elemento fallido. Corrija el problema según las indicaciones y vuelva a ejecutar la precomprobación.
-
Si la precomprobación devuelve una advertencia:
Si un elemento de comprobación falla y no puede ignorarse, haga clic en View Details junto al elemento. Siga las instrucciones para corregir el problema y vuelva a ejecutar la precomprobación.
Para los elementos de comprobación que se pueden ignorar, puede hacer clic en Confirm Alert Details, Ignore, OK y Precheck Again en secuencia para omitir la advertencia y volver a ejecutar la precomprobación. Si decide ocultar el elemento de advertencia, pueden producirse problemas como incoherencias de datos y riesgos para su negocio.
-
Adquiera una instancia.
Cuando Success Rate sea 100 %, haga clic en Next: Purchase Instance.
-
En la página Purchase, seleccione el método de facturación y la especificación de enlace para la instancia de sincronización de datos. La tabla que se muestra a continuación describe estos parámetros en detalle.
Categoría
Parámetro
Descripción
New Instance Class
Billing Method
-
Subscription: paga al crear la instancia. Esta opción es adecuada para necesidades a largo plazo y es más rentable que pay-as-you-go. Cuanto mayor sea la duración de la suscripción, mayor será el descuento.
-
Pay-as-you-go: el cargo se realiza por hora. Esta opción es adecuada para necesidades a corto plazo. Puede liberar la instancia inmediatamente después de usarla para ahorrar costos.
Resource Group Configuration
El resource group al que pertenece la instancia. El valor predeterminado es default resource group. Para obtener más información, consulte What is Resource Management?.
Link Specification
DTS proporciona especificaciones de sincronización con distintos niveles de rendimiento. La especificación de enlace de sincronización afecta la tasa de sincronización. Puede elegir una especificación según su escenario empresarial. Para obtener más información, consulte Data synchronization link specifications.
Subscription Duration
En el modo de suscripción, seleccione la duración y la cantidad de la instancia de suscripción. Puede elegir una suscripción mensual de 1 a 9 meses, o una suscripción anual de 1, 2, 3 o 5 años.
NotaEsta opción solo está disponible cuando el método de facturación es Subscription.
-
Después de completar la configuración, lea y seleccione Data Transmission Service (Pay-as-you-go) Service Terms.
-
Haga clic en Buy and Start. En el cuadro de diálogo OK, haga clic en OK.
Puede consultar el progreso de la tarea en la página Data Synchronization.
Información de asignación
En la sección Selected Objects, pase el cursor sobre el nombre del tema de destino en el nivel de tabla.
Haga clic en Edit junto al nombre del tema de destino.
-
En el cuadro de diálogo Edit Table, configure la información de asignación.
NotaEl cuadro de diálogo Edit Schema está destinado a operaciones a nivel de esquema y admite menos parámetros. En cambio, el cuadro de diálogo Edit Table está destinado a operaciones a nivel de tabla.
Si no sincroniza un esquema completo, no puede modificar los parámetros Name of target Topic y Number of Partitions en el cuadro de diálogo Edit Schema.
Parámetro
Descripción
Name of target Topic
El tema de destino en el que se sincroniza la tabla de origen. De forma predeterminada, se trata del Topic que selecciona en la sección Destination Database durante el paso Configurations for Source and Destination Databases.
Importante-
Si la base de datos de destino es una instancia de Alibaba Cloud Message Queue for Apache Kafka, el tema especificado ya debe existir en la instancia de Kafka de destino. De lo contrario, la tarea de sincronización de datos falla. Si el destino es un clúster de Kafka autogestionado y la tarea está configurada para sincronizar esquemas de bases de datos y tablas, DTS intenta crear el tema especificado en la base de datos de destino.
-
Si modifica el parámetro Name of target Topic, DTS escribe los datos en el tema especificado.
Filter Conditions
Para obtener más información, consulte Set filter conditions.
Number of Partitions
El número de particiones de los datos en el tema de destino.
Partition Key
Cuando establezca el parámetro Policy for Shipping Data to Kafka Partitions en Ship Data to Separate Partitions Based on Hash Values of Primary Keys, debe configurar este parámetro. Seleccione una o más columnas como clave de partición. Después, DTS usa el valor hash de esta clave para distribuir las filas entre las particiones del tema. Si no se configura una clave de partición, esta política no se aplica durante la fase de escritura incremental.
NotaSolo puede seleccionar una Partition Key en el cuadro de diálogo Edit Table.
Haga clic en OK.
Preguntas frecuentes
-
¿Puedo modificar Kafka Data Compression Format?
Sí. Puede utilizar la función Modify synchronization objects para modificarlo.
-
¿Puedo modificar Message acknowledgement mechanism?
Sí. Puede utilizar la función Modify synchronization objects para modificarlo.