Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
RDS para PostgreSQL
Complete los siguientes pasos para configurar una canalización de OpenSearch ingestión con Amazon RDS para PostgreSQL.
Temas
Requisitos previos de PostgreSQL
Antes de crear su canalización de OpenSearch ingestión, lleve a cabo los siguientes pasos:
-
Cree un grupo de parámetros de base de datos personalizado en Amazon RDS para configurar la replicación lógica.
rds.logical_replication=1Para obtener más información, consulte Replicación lógica de Amazon RDS para PostgreSQL.
-
Seleccione o cree una instancia de base de datos de RDS para PostgreSQL y asocie el grupo de parámetros creado en el paso 1 a la instancia de base de datos.
-
Configure la autenticación de nombre de usuario y contraseña en su instancia de Amazon RDS mediante la administración de contraseñas con Amazon RDS y AWS Secrets Manager. También puedes crear una username/password combinación creando un secreto de Secrets Manager.
-
Si utiliza la función de instantánea inicial completa, cree una función de IAM AWS KMS key y una función de IAM para exportar datos de Amazon RDS a Amazon S3.
El rol de IAM debe tener la siguiente política de permisos:
El rol también debe tener las siguientes relaciones de confianza:
-
Seleccione o cree un dominio de OpenSearch servicio o una colección OpenSearch sin servidor. Para obtener más información, consulte Creación de dominios OpenSearch de servicio y Creación de colecciones.
-
Adjunte una política basada en recursos al dominio o una política de acceso a datos a la colección. Estas políticas de acceso permiten a OpenSearch Ingestion escribir datos de su instancia de base de datos de Amazon RDS en su dominio o colección.
Paso 1: configurar el rol de canalización
Una vez configurados los requisitos previos de la canalización de Amazon RDS, configure el rol de la canalización que se usará en la configuración de la canalización. Agregue también los siguientes permisos para el origen de Amazon RDS al rol:
Paso 2: crear la canalización
Configure una canalización de OpenSearch ingesta como la siguiente, que especifica una instancia de RDS para PostgreSQL como fuente.
version: "2" rds-postgres-pipeline: source: rds: db_identifier: "instance-id" engine: postgresql database: "database-name" tables: include: - "schema1.table1" - "schema2.table2" s3_bucket: "bucket-name" s3_region: "bucket-region" s3_prefix: "prefix-name" export: kms_key_id: "kms-key-id" iam_role_arn: "export-role-arn" stream: true aws: sts_role_arn: "arn:aws:iam::account-id:role/pipeline-role" region: "us-east-1" authentication: username: ${{aws_secrets:secret:username}} password: ${{aws_secrets:secret:password}} sink: - opensearch: hosts: ["https://search-mydomain.us-east-1.es.amazonaws.com"] index: "${getMetadata(\"table_name\")}" index_type: custom document_id: "${getMetadata(\"primary_key\")}" action: "${getMetadata(\"opensearch_action\")}" document_version: "${getMetadata(\"document_version\")}" document_version_type: "external" aws: sts_role_arn: "arn:aws:iam::account-id:role/pipeline-role" region: "us-east-1" extension: aws: secrets: secret: secret_id: "rds-secret-id" region: "us-east-1" sts_role_arn: "arn:aws:iam::account-id:role/pipeline-role" refresh_interval: PT1H
nota
Puede utilizar un esquema de Amazon RDS preconfigurado para crear esta canalización. Para obtener más información, consulte Uso de esquemas.
Para usar RDS para PostgreSQL como fuente, debes configurar el acceso a la VPC para la canalización. La VPC que elija debe ser la misma VPC que usa su fuente de Amazon RDS. A continuación, elija una o varias subredes y uno o varios grupos de seguridad de VPC. Tenga en cuenta que la canalización necesita acceso de red a una base de datos de RDS para PostgreSQL, por lo que también debe comprobar que su instancia de Amazon RDS esté configurada con un grupo de seguridad de VPC que permita el tráfico entrante desde el grupo de seguridad de VPC de la canalización al puerto de la base de datos. Para obtener más información, consulte Control de acceso con grupos de seguridad.
Si la usa Consola de administración de AWS para crear una canalización, también debe adjuntarla a su VPC para poder usar RDS para PostgreSQL como fuente. Para ello, busque la sección Configuración de la red, seleccione Adjuntar a la VPC y elija el CIDR de una de las opciones predeterminadas proporcionadas o seleccione una opción propia. El bloque CIDR debe usar una longitud de prefijo de /24. Puede usar cualquier CIDR de /24 desde un espacio de direcciones privado, tal como se define en las mejores prácticas actuales de la RFC 1918.
Para proporcionar un CIDR personalizado, seleccione Otros en el menú desplegable. Para evitar una colisión de direcciones IP entre la OpenSearch ingestión y Amazon RDS, asegúrese de que el CIDR de la VPC de Amazon RDS sea diferente del CIDR de la ingestión. OpenSearch
Para obtener más información, consulte Configuring VPC access for a pipeline.
Coherencia de datos
La canalización garantiza la coherencia de los datos mediante el sondeo o la recepción continua de los cambios de la instancia de Amazon RDS y la actualización de los documentos correspondientes del índice. OpenSearch
OpenSearch La ingestión admite el reconocimiento de principio a fin para garantizar la durabilidad de los datos. Cuando una canalización lee instantáneas o transmisiones, crea particiones de forma dinámica para el procesamiento paralelo. La canalización marca una partición como completa cuando recibe un acuse de recibo tras ingerir todos los registros del dominio o la OpenSearch colección. Si quieres incorporarlo a una colección de búsquedas OpenSearch sin servidor, puedes generar un identificador de documento en proceso. Si quieres incorporarlo a una colección de series temporales OpenSearch sin servidor, ten en cuenta que la canalización no genera un identificador de documento, por lo que debes omitirlo document_id: "${getMetadata(\"primary_key\")}" en la configuración del sumidero de la canalización.
Una canalización OpenSearch de ingesta también asigna las acciones de los eventos entrantes a las correspondientes acciones de indexación masiva para ayudar a la ingesta de documentos. Esto mantiene la coherencia de los datos, de modo que cada cambio de datos en Amazon RDS se concilie con los cambios en los documentos correspondientes. OpenSearch
Asignación de tipos de datos
OpenSearch La canalización de ingesta asigna los tipos de datos de PostgreSQL a las representaciones adecuadas para que los consuman los dominios o colecciones OpenSearch de servicios. Si no hay ninguna plantilla de asignación definida en OpenSearch, determine OpenSearch automáticamente los tipos de campo con una asignación dinámica
La siguiente tabla muestra los tipos de datos de RDS para PostgreSQL y los tipos de campos correspondientes OpenSearch . La columna Tipo de OpenSearch campo predeterminado muestra el tipo de campo correspondiente OpenSearch si no se ha definido ninguna asignación explícita. En este caso, determina OpenSearch automáticamente los tipos de campo con una asignación dinámica. La columna Tipo de OpenSearch campo recomendado es el tipo de campo recomendado correspondiente que se debe especificar de forma explícita en una plantilla de asignación. Estos tipos de campos están más alineados con los tipos de datos de RDS para PostgreSQL y, por lo general, permiten mejorar las funciones de búsqueda disponibles en. OpenSearch
| Tipo de datos de RDS para PostgreSQL | Tipo de campo predeterminado OpenSearch | Tipo OpenSearch de campo recomendado |
|---|---|---|
| smallint | long | short |
| entero | long | entero |
| bigint | long | long |
| decimal | text | doble o palabra |
| numeric[ (p, s) ] | text | doble o palabra |
| real | float | float |
| double precision | float | double |
| smallserial | long | short |
| serial | long | entero |
| bigserial | long | long |
| money | objeto | objeto |
| character varying(n) | text | text |
| varchar(n) | text | text |
| character(n) | text | text |
| char(n) | text | text |
| bpchar (n) | text | text |
| BPCHAR | text | text |
| text | text | text |
| enum | text | text |
| bytea | text | binario |
| timestamp [ (p) ] [ sin zona horaria ] | largo (en milisegundos de época) | date |
| timestamp [ (p) ] con zona horaria | largo (en milisegundos de época) | date |
| date | largo (en milisegundos de época) | date |
| time [ (p) ] [ sin zona horaria ] | largo (en milisegundos de época) | date |
| time [ (p) ] con zona horaria | largo (en milisegundos de época) | date |
| intervalo [campos] [(p)] | texto (formato ISO8601) | text |
| booleano | booleano | booleano |
| point | texto (en formato WKT) | geo_shape |
| línea | texto (en formato WKT) | geo_shape |
| LSEG | texto (en formato WKT) | geo_shape |
| BOX | texto (en formato WKT) | geo_shape |
| path | texto (en formato WKT) | geo_shape |
| polígono | texto (en formato WKT) | geo_shape |
| CIRCLE | objeto | objeto |
| cidr | text | text |
| inet | text | text |
| macaddr | text | text |
| macaddr8 | text | text |
| bit(n) | long | byte, corto, entero o largo (según el número de bits) |
| bit varying(n) | long | byte, corto, entero o largo (según el número de bits) |
| json | objeto | objeto |
| jsonb | objeto | objeto |
| jsonpath | text | text |
Le recomendamos que configure la cola de mensajes muertos (DLQ) en su canalización de ingestión. OpenSearch Si has configurado la cola, el OpenSearch servicio envía todos los documentos fallidos que no se pueden ingerir debido a errores de mapeo dinámico a la cola.
En caso de que las asignaciones automáticos fallen, puede usar template_type y template_content en su configuración de canalización para definir reglas de asignación explícitas. Como alternativa, puede crear plantillas de asignación directamente en su dominio o colección de búsqueda antes de iniciar la canalización.
Limitaciones
Tenga en cuenta las siguientes limitaciones al configurar una canalización de OpenSearch ingesta de RDS para PostgreSQL:
-
La integración solo admite una base de datos PostgreSQL por canalización.
-
Actualmente, la integración no admite la ingesta de datos entre regiones; la instancia y OpenSearch el dominio de Amazon RDS deben estar en el mismo lugar. Región de AWS
-
Por el momento, la integración no admite la ingesta de datos entre cuentas; la instancia de Amazon RDS y la canalización de OpenSearch ingesta deben estar en el mismo lugar. Cuenta de AWS
-
Asegúrese de que la instancia de Amazon RDS tenga habilitada la autenticación mediante AWS Secrets Manager, que es el único mecanismo de autenticación admitido.
-
La configuración de canalización existente no se puede actualizar para incorporar datos de una base de datos diferente o de and/or una tabla diferente. Para actualizar el nombre de la and/or tabla de la base de datos de una canalización, debes detener la canalización y reiniciarla con una configuración actualizada, o crear una canalización nueva.
-
Por lo general, las instrucciones en lenguaje de definición de datos (DDL) no son compatibles. La coherencia de datos no se mantendrá si:
-
Se cambian las claves principales (add/delete/rename).
-
Las tablas son. dropped/truncated
-
Se cambian los nombres de las columnas o los tipos de datos.
-
-
Si las tablas de PostgreSQL que se van a sincronizar no tienen definidas las claves principales, no se garantiza la coherencia de datos. Deberá definir correctamente la
document_idopción OpenSearch y la configuración del sumidero para poder updates/deletes sincronizarlas OpenSearch. -
No se admiten los clústeres de bases de datos Multi-AZ de RDS.
-
Versiones compatibles: PostgreSQL 16 y versiones posteriores.
CloudWatch Alarmas recomendadas
Se recomiendan las siguientes CloudWatch métricas para supervisar el rendimiento de su proceso de ingestión. Estas métricas pueden ayudarlo a identificar la cantidad de datos procesados a partir de exportaciones y flujos, los errores al procesar eventos de transmisión y exportación y el número de documentos escritos en el destino. Puedes configurar CloudWatch alarmas para que realicen una acción cuando una de estas métricas supere un valor específico durante un período de tiempo específico.
| Métrica | Description (Descripción) |
|---|---|
pipeline-name.rds.CredentialsChanged |
Esta métrica indica la frecuencia con la que se rotan los secretos. AWS |
pipeline-name.rds.executor RefreshErrors |
Esta métrica indica errores al actualizar los secretos. AWS |
pipeline-name.rds.export RecordsTotal |
Esta métrica indica el número de registros exportados desde Amazon RDS para PostgreSQL. |
pipeline-name.rds.export RecordsProcessed |
Esta métrica indica la cantidad de registros procesados por OpenSearch Ingestion Pipeline. |
pipeline-name.rds.export RecordProcessingErrors |
Esta métrica indica el número de errores de procesamiento en una canalización de OpenSearch ingestión al leer los datos de una instancia de Amazon RDS para PostgreSQL. |
pipeline-name.rds.export RecordsSuccessTotal |
Esta métrica indica el número total de registros de exportación procesados correctamente. |
pipeline-name.rds.export RecordsFailedTotal |
Esta métrica indica el número total de registros que no se han podido procesar. |
pipeline-name.rds.bytes recibidos |
Esta métrica indica el número total de bytes recibidos por una canalización de ingestión. OpenSearch |
pipeline-name.rds.BytesProcessed |
Esta métrica indica el número total de bytes procesados por una canalización de ingestión. OpenSearch |
pipeline-name.rds.stream RecordsSuccessTotal |
Esta métrica indica el número de registros del flujo procesados correctamente. |
pipeline-name.rds.stream RecordsFailedTotal |
Esta métrica indica el número total de registros del flujo que no se han podido procesar. |