RDS para MySQL - OpenSearch Servicio Amazon

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 MySQL

Complete los siguientes pasos para configurar una canalización OpenSearch de ingestión con Amazon RDS para RDS for MySQL.

Requisitos previos de RDS para MySQL

Antes de crear la canalización OpenSearch de ingestión, lleve a cabo los siguientes pasos:

  1. Cree un grupo de parámetros de base de datos personalizado en Amazon RDS para configurar el registro binario y establecer los siguientes parámetros.

    binlog_format=ROW binlog_row_image=full binlog_row_metadata=FULL

    Además, asegúrese de que el binlog_row_value_options parámetro no esté establecido en. PARTIAL_JSON

    Para obtener más información, consulte Configuración de RDS para el registro binario de MySQL.

  2. Seleccione o cree una instancia de base de datos RDS para MySQL y asocie el grupo de parámetros creado en el paso anterior a la instancia de base de datos.

  3. Compruebe que las copias de seguridad automatizadas estén habilitadas en la base de datos. Para obtener más información, consulte Habilitar las copias de seguridad automatizadas.

  4. Configure la retención de registros binarios con tiempo suficiente para que se produzca la replicación, por ejemplo, 24 horas. Para obtener más información, consulte Configuración y visualización de la configuración de registros binarios en la Guía del usuario de Amazon RDS.

  5. 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.

  6. Si utiliza la función de instantáneas iniciales completa, cree un rol de IAM AWS KMS key y un rol de IAM para exportar datos de Amazon RDS a Amazon S3.

    El rol de IAM debe tener la siguiente política de permisos:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ExportPolicy", "Effect": "Allow", "Action": [ "s3:PutObject*", "s3:ListBucket", "s3:GetObject*", "s3:DeleteObject*", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::s3-bucket-used-in-pipeline", "arn:aws:s3:::s3-bucket-used-in-pipeline/*" ] } ] }

    El rol también debe tener las siguientes relaciones de confianza:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "export.rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  7. Seleccione o cree un dominio OpenSearch de 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.

  8. 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 establecidos los requisitos previos de la canalización de Amazon RDS, configure la función de canalización que se utilizará en la configuración de la canalización. Añada también los siguientes permisos para la fuente de Amazon RDS al rol:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "allowReadingFromS3Buckets", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:DeleteObject", "s3:GetBucketLocation", "s3:ListBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::s3_bucket", "arn:aws:s3:::s3_bucket/*" ] }, { "Sid": "allowNetworkInterfacesGroup1", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission" ], "Resource": [ "arn:aws:ec2:*:account-id:network-interface/*", "arn:aws:ec2:*:account-id:subnet/*", "arn:aws:ec2:*:account-id:security-group/*" ] }, { "Sid": "allowNetworkInterfacesGroup2", "Effect": "Allow", "Action": [ "ec2:AttachNetworkInterface", "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DetachNetworkInterface", "ec2:DescribeNetworkInterfaces" ], "Resource": [ "arn:aws:ec2:*:account-id:network-interface/*", "arn:aws:ec2:*:account-id:subnet/*", "arn:aws:ec2:*:account-id:security-group/*" ], "Condition": { "StringEquals": { "aws:RequestTag/OSISManaged": "true" } } }, { "Sid": "allowDescribeEC2", "Effect": "Allow", "Action": [ "ec2:Describe*" ], "Resource": "*" }, { "Sid": "allowTagCreation", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:account-id:network-interface/*", "Condition": { "StringEquals": { "aws:RequestTag/OSISManaged": "true" } } }, { "Sid": "AllowDescribeInstances", "Effect": "Allow", "Action": [ "rds:DescribeDBInstances" ], "Resource": [ "arn:aws:rds:region:account-id:db:*" ] }, { "Sid": "AllowDescribeClusters", "Effect": "Allow", "Action": [ "rds:DescribeDBClusters" ], "Resource": [ "arn:aws:rds:region:account-id:cluster:DB-id" ] }, { "Sid": "AllowSnapshots", "Effect": "Allow", "Action": [ "rds:DescribeDBClusterSnapshots", "rds:CreateDBClusterSnapshot", "rds:AddTagsToResource" ], "Resource": [ "arn:aws:rds:region:account-id:cluster:DB-id", "arn:aws:rds:region:account-id:cluster-snapshot:DB-id*" ] }, { "Sid": "AllowExport", "Effect": "Allow", "Action": [ "rds:StartExportTask" ], "Resource": [ "arn:aws:rds:region:account-id:cluster:DB-id", "arn:aws:rds:region:account-id:cluster-snapshot:DB-id*" ] }, { "Sid": "AllowDescribeExports", "Effect": "Allow", "Action": [ "rds:DescribeExportTasks" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": "region", "aws:ResourceAccount": "account-id" } } }, { "Sid": "AllowAccessToKmsForExport", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:DescribeKey", "kms:RetireGrant", "kms:CreateGrant", "kms:ReEncrypt*", "kms:GenerateDataKey*" ], "Resource": [ "arn:aws:kms:region:account-id:key/export-key-id" ], }, { "Sid": "AllowPassingExportRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::account-id:role/export-role" ] }, { "Sid": "SecretsManagerReadAccess", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:*:account-id:secret:*" ] } ] }

Paso 2: crear la canalización

Configure una canalización OpenSearch de ingestión similar a la siguiente. La canalización de ejemplo especifica una instancia de Amazon RDS como origen.

version: "2" rds-mysql-pipeline: source: rds: db_identifier: "instance-id" engine: mysql database: "database-name" tables: include: - "table1" - "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

Puede usar un blueprint de Amazon RDS preconfigurado para crear esta canalización. Para obtener más información, consulte ¿Trabajando con planos.

Para utilizar Amazon Aurora como fuente, debe configurar el acceso a la VPC para la canalización. La VPC que elija debe ser la misma que usa su fuente de Amazon Aurora. A continuación, elija una o más subredes y uno o más grupos de seguridad de VPC. Tenga en cuenta que la canalización necesita acceso de red a una base de datos Aurora MySQL, por lo que también debe comprobar que el clúster de Aurora esté configurado 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 Controlar el acceso con grupos de seguridad.

Si utiliza la AWS Management Console para crear su canalización, también debe adjuntarla a la VPC para poder utilizar Amazon Aurora como fuente. Para ello, busque la sección de configuración de red, elija Adjuntar a la VPC y elija su CIDR de una de las opciones predeterminadas proporcionadas, o seleccione la suya propia. Puede usar cualquier CIDR de un espacio de direcciones privado, tal como se define en RFC 1918 Best Current Practice.

Para proporcionar un CIDR personalizado, seleccione Otros en el menú desplegable. Para evitar una colisión de direcciones IP entre OpenSearch Ingestión y Amazon RDS, asegúrese de que el CIDR de la VPC de Amazon RDS sea diferente del CIDR de 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 continuo o la recepción de cambios de la instancia de Amazon RDS y la actualización de los documentos correspondientes del OpenSearch índice.

OpenSearch La ingestión apoya el end-to-end reconocimiento 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 después de ingerir todos los registros del dominio o la OpenSearch colección. Si quieres incorporarlos a una colección de búsquedas OpenSearch sin servidor, puedes generar un identificador de documento en la canalización. 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 colector de canalizaciones.

Una canalización OpenSearch de ingestión también asigna las acciones de los eventos entrantes a las correspondientes acciones de indexación masiva para facilitar la ingesta de documentos. Esto mantiene la coherencia de los datos, de modo que cada cambio de datos en Amazon RDS se concilia con los cambios en los documentos correspondientes. OpenSearch

Asignación de tipos de datos

OpenSearch La canalización de ingestión asigna los tipos de datos de MySQL a representaciones que son adecuadas para el consumo de los dominios o colecciones de OpenSearch servicios. Si no hay ninguna plantilla de mapeo definida OpenSearch, determina OpenSearch automáticamente los tipos de campo con un mapeo dinámico en función del primer documento enviado. También puede definir de forma explícita los tipos de campo que mejor se adapten a sus necesidades OpenSearch mediante una plantilla de mapeo.

La siguiente tabla muestra los tipos de datos de MySQL y los tipos de OpenSearch campo correspondientes. La columna Tipo de OpenSearch campo predeterminado muestra el tipo de campo correspondiente OpenSearch si no se ha definido un mapeo explícito. En este caso, determina OpenSearch automáticamente los tipos de campo con un mapeo dinámico. La columna Tipo de OpenSearch campo recomendado es el tipo de campo correspondiente que se recomienda especificar de forma explícita en una plantilla de mapeo. Estos tipos de campos están más alineados con los tipos de datos de MySQL y, por lo general, pueden habilitar mejores funciones de búsqueda disponibles en OpenSearch.

Tipo de datos de MySQL Tipo OpenSearch de campo predeterminado Tipo OpenSearch de campo recomendado
BIGINT long long
BIGINT UNSIGNED long largo sin firmar
BIT long byte, corto, entero o largo según el número de bits
DECIMAL texto doble o palabra clave
DOBLE float double
FLOAT float float
INT long entero
INT UNSIGNED long long
MEDIUMINT long entero
MEDIUMINT UNSIGNED long entero
NUMERIC texto doble o palabra clave
SMALLINT long short
SMALLINT UNSIGNED long entero
TINYINT long  byte
TINYINT UNSIGNED long short
BINARIO texto binario
BLOB texto binario
CHAR texto texto
ENUM texto palabra clave
LONGBLOB texto binario
LONGTEXT texto texto
MEDIUMBLOB texto binario
MEDIUMTEXT texto texto
SET texto palabra clave
TEXT texto texto
TINYBLOB texto binario
TINYTEXT texto texto
VARBINARY texto binario
VARCHAR texto texto
DATE largo (en milisegundos por época) date
DATETIME largo (en milisegundos de época) date
TIME largo (en milisegundos de época) date
TIMESTAMP largo (en milisegundos de época) date
YEAR largo (en milisegundos de época) date
GEOMETRY texto (en formato WKT) geo_shape
GEOMETRYCOLLECTION texto (en formato WKT) geo_shape
LINESTRING texto (en formato WKT) geo_shape
MULTILINESTRING texto (en formato WKT) geo_shape
MULTIPOINT texto (en formato WKT) geo_shape
MULTIPOLYGON texto (en formato WKT) geo_shape
POINT texto (en formato WKT) geo_point o geo_shape
POLYGON texto (en formato WKT) geo_shape
JSON texto objeto

Te recomendamos que configures la cola de mensajes sin procesar (DLQ) en tu canal de ingestión. OpenSearch Si has configurado la cola, el OpenSearch servicio envía a la cola todos los documentos fallidos que no se puedan ingerir debido a errores de mapeo dinámico.

Si los mapeos automáticos fallan, puedes usar template_type y template_content en tu configuración de canalización para definir reglas de mapeo 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 ingestión para RDS for MySQL:

  • La integración solo admite una base de datos MySQL por canalización.

  • Actualmente, la integración no admite la ingesta de datos entre regiones; la instancia y el OpenSearch dominio de Amazon RDS deben estar en el mismo lugar. Región de AWS

  • Actualmente, la integración no admite la ingesta de datos entre cuentas; la instancia de Amazon RDS y la canalización de OpenSearch ingestión deben estar en la misma ubicación. Cuenta de AWS

  • Asegúrese de que la instancia de Amazon RDS tenga habilitada la autenticación mediante Secrets Manager, que es el único mecanismo de autenticación compatible.

  • La configuración de canalización existente no se puede actualizar para ingerir datos de una base de datos diferente o de and/or una tabla diferente. Para actualizar la base de datos o el nombre de la tabla de una canalización, debes crear una canalización nueva.

  • Por lo general, no se admiten las sentencias del lenguaje de definición de datos (DDL). La coherencia de los datos no se mantendrá si:

    • Se cambian las claves principales (add/delete/rename).

    • Las tablas se eliminan o se truncan.

    • Se cambian los nombres de las columnas o los tipos de datos.

  • Si las tablas MySQL que se van a sincronizar no tienen definidas las claves principales, no se garantiza la coherencia de los datos. Deberás definir correctamente la document_id opción personalizada en OpenSearch la configuración del receptor para poder updates/deletes sincronizarla OpenSearch.

  • No se admiten las referencias a claves externas con acciones de eliminación en cascada y pueden provocar inconsistencias en los datos entre RDS for MySQL y. OpenSearch

  • No se admiten los clústeres de bases de datos de zonas de disponibilidad múltiple de Amazon RDS.

  • Versiones compatibles: MySQL versión 8.0 y superior.

CloudWatch Alarmas recomendadas

Se recomiendan las siguientes CloudWatch métricas para supervisar el rendimiento del proceso de ingestión. Estas métricas pueden ayudarte a identificar la cantidad de datos procesados a partir de las exportaciones, la cantidad de eventos procesados a partir de las transmisiones, los errores al procesar las exportaciones y los eventos de transmisión y la cantidad de documentos escritos en el destino. Puede configurar CloudWatch alarmas para realizar una acción cuando una de estas métricas supere un valor específico durante un período de tiempo específico.

Métrica Descripción
pipeline-name.RDS. Se han modificado las credenciales Esta métrica indica la frecuencia con la que se rotan los secretos. AWS
pipeline-name.rds. executorRefreshErrors Esta métrica indica errores al actualizar AWS los secretos.
pipeline-name.rds. exportRecordsTotal Esta métrica indica el número de registros exportados desde Amazon Aurora.
pipeline-name.rds. exportRecordsProcessed Esta métrica indica la cantidad de registros procesados por la canalización OpenSearch de ingestión.
pipeline-name.rds. exportRecordProcessingErrores Esta métrica indica el número de errores de procesamiento en una canalización de OpenSearch ingestión al leer los datos de un clúster de Amazon Aurora.
pipeline-name.rds. exportRecordsSuccessTotal Esta métrica indica el número total de registros de exportación procesados correctamente.
pipeline-name.rds. exportRecordsFailedTotal 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.bytes procesados Esta métrica indica el número total de bytes procesados por una canalización de ingestión. OpenSearch
pipeline-name.rds. streamRecordsSuccessTotal Esta métrica indica el número de registros del flujo procesados correctamente.
pipeline-name.rds. streamRecordsFailedTotal Esta métrica indica el número total de registros del flujo que no se han podido procesar.