View a markdown version of this page

RDS per MySQL - OpenSearch Servizio Amazon

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

RDS per MySQL

Completa i passaggi seguenti per configurare una pipeline di OpenSearch ingestione con Amazon RDS for RDS for MySQL.

Prerequisiti RDS per MySQL

Prima di creare la pipeline di OpenSearch Ingestion, effettuate le seguenti operazioni:

  1. Crea un gruppo di parametri DB personalizzato in Amazon RDS per configurare la registrazione binaria e impostare i seguenti parametri.

    binlog_format=ROW binlog_row_image=full binlog_row_metadata=FULL

    Inoltre, assicurati che il binlog_row_value_options parametro non sia impostato su. PARTIAL_JSON

    Per ulteriori informazioni, vedere Configurazione di RDS per la registrazione binaria di MySQL.

  2. Seleziona o crea un'istanza DB RDS per MySQL e associa il gruppo di parametri creato nel passaggio precedente all'istanza DB.

  3. Verifica che i backup automatici siano abilitati nel database. Per ulteriori informazioni, vedere Abilitazione dei backup automatici.

  4. Configura la conservazione dei log binari con un tempo sufficiente per la replica, ad esempio 24 ore. Per ulteriori informazioni, consulta Impostazione e visualizzazione della configurazione dei log binari nella Amazon RDS User Guide.

  5. Configura l'autenticazione con nome utente e password sulla tua istanza Amazon RDS utilizzando la gestione delle password con Amazon RDS e. AWS Secrets Manager Puoi anche creare una username/password combinazione creando un segreto di Secrets Manager.

  6. Se utilizzi la funzionalità di snapshot iniziale completa, crea un ruolo IAM AWS KMS key e uno per esportare i dati da Amazon RDS ad Amazon S3.

    Il ruolo IAM deve avere la seguente politica di autorizzazione:

    JSON
    { "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/*" ] } ] }

    Il ruolo dovrebbe inoltre avere le seguenti relazioni di fiducia:

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "export.rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  7. Seleziona o crea un dominio OpenSearch di servizio o una raccolta OpenSearch Serverless. Per ulteriori informazioni, vedere Creazione di domini OpenSearch di servizio e Creazione di raccolte.

  8. Allega una politica basata sulle risorse al tuo dominio o una politica di accesso ai dati alla tua raccolta. Queste politiche di accesso consentono a OpenSearch Ingestion di scrivere dati dalla tua istanza DB di Amazon RDS al tuo dominio o alla tua raccolta.

Fase 1: Configurazione del ruolo della pipeline

Dopo aver impostato i prerequisiti della pipeline Amazon RDS, configura il ruolo della pipeline da utilizzare nella configurazione della pipeline. Aggiungi anche le seguenti autorizzazioni per il codice sorgente Amazon RDS al ruolo:

JSON
{ "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": "allowNetworkInterfacesActions", "Effect": "Allow", "Action": [ "ec2:AttachNetworkInterface", "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DetachNetworkInterface", "ec2:DescribeNetworkInterfaces" ], "Resource": [ "arn:aws:ec2:*:111122223333:network-interface/*", "arn:aws:ec2:*:111122223333:subnet/*", "arn:aws:ec2:*:111122223333:security-group/*" ] }, { "Sid": "allowDescribeEC2", "Effect": "Allow", "Action": [ "ec2:Describe*" ], "Resource": "*" }, { "Sid": "allowTagCreation", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:111122223333:network-interface/*", "Condition": { "StringEquals": { "aws:RequestTag/OSISManaged": "true" } } }, { "Sid": "AllowDescribeInstances", "Effect": "Allow", "Action": [ "rds:DescribeDBInstances" ], "Resource": [ "arn:aws:rds:us-east-2:111122223333:db:*" ] }, { "Sid": "AllowSnapshots", "Effect": "Allow", "Action": [ "rds:DescribeDBSnapshots", "rds:CreateDBSnapshot", "rds:AddTagsToResource" ], "Resource": [ "arn:aws:rds:us-east-2:111122223333:db:DB-id", "arn:aws:rds:us-east-2:111122223333:snapshot:DB-id*" ] }, { "Sid": "AllowExport", "Effect": "Allow", "Action": [ "rds:StartExportTask" ], "Resource": [ "arn:aws:rds:us-east-2:111122223333:snapshot:DB-id*" ] }, { "Sid": "AllowDescribeExports", "Effect": "Allow", "Action": [ "rds:DescribeExportTasks" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": "us-east-2", "aws:ResourceAccount": "111122223333" } } }, { "Sid": "AllowAccessToKmsForExport", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:DescribeKey", "kms:RetireGrant", "kms:CreateGrant", "kms:ReEncrypt*", "kms:GenerateDataKey*" ], "Resource": [ "arn:aws:kms:us-east-2:111122223333:key/export-key-id" ] }, { "Sid": "AllowPassingExportRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::111122223333:role/export-role" ] }, { "Sid": "SecretsManagerReadAccess", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:*:111122223333:secret:*" ] } ] }

Passaggio 2: creare la pipeline

Configura una pipeline OpenSearch di ingestione simile alla seguente. La pipeline di esempio specifica un'istanza Amazon RDS come origine.

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

Puoi utilizzare un blueprint Amazon RDS preconfigurato per creare questa pipeline. Per ulteriori informazioni, consulta Lavorare con i progetti.

Per utilizzare Amazon Aurora come fonte, devi configurare l'accesso VPC per la pipeline. Il VPC scelto deve essere lo stesso VPC utilizzato dalla fonte Amazon Aurora. Quindi scegli una o più sottoreti e uno o più gruppi di sicurezza VPC. Nota che la pipeline richiede l'accesso di rete a un database Aurora MySQL, quindi dovresti anche verificare che il tuo cluster Aurora sia configurato con un gruppo di sicurezza VPC che consenta il traffico in entrata dal gruppo di sicurezza VPC della pipeline alla porta del database. Per ulteriori informazioni, consulta Controllare l'accesso con i gruppi di sicurezza. https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Overview.RDSSecurityGroups.html

Se stai usando il Console di gestione AWS per creare la tua pipeline, devi anche collegarla al tuo VPC per utilizzare Amazon Aurora come fonte. Per fare ciò, trova la sezione Configurazione di rete, scegli Allega a VPC e scegli il tuo CIDR da una delle opzioni predefinite fornite, oppure seleziona il tuo. Il blocco CIDR deve utilizzare una lunghezza del prefisso /24. È possibile utilizzare qualsiasi CIDR /24 da uno spazio di indirizzi privato come definito nella RFC 1918 Best Current Practice.

Per fornire un CIDR personalizzato, seleziona Altro dal menu a discesa. Per evitare una collisione negli indirizzi IP tra OpenSearch Ingestion e Amazon RDS, assicurati che il CIDR VPC di Amazon RDS sia diverso dal CIDR per l'ingestione. OpenSearch

Per ulteriori informazioni, consulta Configurazione dell'accesso VPC per una pipeline. https://docs.aws.amazon.com/opensearch-service/latest/developerguide/pipeline-security.html#pipeline-vpc-configure

Coerenza dei dati

La pipeline garantisce la coerenza dei dati inviando o ricevendo continuamente modifiche dall'istanza Amazon RDS e aggiornando i documenti corrispondenti nell'indice. OpenSearch

OpenSearch L'ingestion supporta il riconoscimento end-to-end per garantire la durabilità dei dati. Quando una pipeline legge istantanee o stream, crea dinamicamente partizioni per l'elaborazione parallela. La pipeline contrassegna una partizione come completa quando riceve un riconoscimento dopo aver inserito tutti i record del dominio o della raccolta. OpenSearch Se desideri inserire un documento in una raccolta di ricerca OpenSearch Serverless, puoi generare un ID del documento nella pipeline. Se desideri inserire una raccolta di serie temporali OpenSearch Serverless, tieni presente che la pipeline non genera un ID di documento, quindi devi omettere document_id: "${getMetadata(\"primary_key\")}" questo elemento nella configurazione del sink della pipeline.

Una pipeline OpenSearch di importazione associa inoltre le azioni degli eventi in entrata nelle corrispondenti azioni di indicizzazione in blocco per facilitare l'assimilazione dei documenti. Ciò mantiene i dati coerenti, in modo che ogni modifica dei dati in Amazon RDS venga riconciliata con le corrispondenti modifiche apportate ai documenti. OpenSearch

Mappatura dei tipi di dati

OpenSearch La pipeline di ingestione associa i tipi di dati MySQL a rappresentazioni adatte OpenSearch al consumo di domini o raccolte di servizi. Se non è definito alcun modello di mappatura in OpenSearch, determina OpenSearch automaticamente i tipi di campo con una mappatura dinamica basata sul primo documento inviato. Puoi anche definire in modo esplicito i tipi di campo che funzionano meglio per te OpenSearch tramite un modello di mappatura.

La tabella seguente elenca i tipi di dati MySQL e i tipi di campo corrispondenti. OpenSearch La colonna Tipo di OpenSearch campo predefinito mostra il tipo di campo corrispondente OpenSearch se non è definita alcuna mappatura esplicita. In questo caso, determina OpenSearch automaticamente i tipi di campo con mappatura dinamica. La colonna Tipo di OpenSearch campo consigliato è il tipo di campo corrispondente che si consiglia di specificare esplicitamente in un modello di mappatura. Questi tipi di campo sono più strettamente allineati con i tipi di dati in MySQL e di solito possono abilitare migliori funzionalità di ricerca disponibili in. OpenSearch

Tipi di dati MySQL Tipo di campo predefinito OpenSearch Tipo di OpenSearch campo consigliato
BIGINT Long Long
BIGINT UNSIGNED Long lungo senza segno
BIT Long byte, breve, intero o lungo a seconda del numero di bit
DECIMAL testo double o parola chiave
DOUBLE virgola mobile virgola mobile a doppia precisione
FLOAT virgola mobile virgola mobile
INT Long intero
INT UNSIGNED Long Long
MEDIUMINT Long intero
MEDIUMINT UNSIGNED Long intero
NUMERIC testo doppio o parola chiave
SMALLINT Long short
SMALLINT UNSIGNED Long intero
TINYINT Long byte
TINYINT UNSIGNED Long short
BINARY testo binary
BLOB testo binary
CHAR testo testo
ENUM testo Parola chiave
LONGBLOB testo binary
LONGTEXT testo testo
MEDIUMBLOB testo binary
MEDIUMTEXT testo testo
SET testo Parola chiave
TEXT testo testo
TINYBLOB testo binary
TINYTEXT testo testo
VARBINARY testo binary
VARCHAR testo testo
DATE lungo (in millisecondi di epoca) data
DATETIME lungo (in millisecondi di epoca) data
TIME lungo (in millisecondi di epoca) data
TIMESTAMP lungo (in millisecondi di epoca) data
ANNO lungo (in millisecondi di epoca) data
GEOMETRY testo (in formato WKT) geo_shape
GEOMETRYCOLLECTION testo (in formato WKT) geo_shape
LINESTRING testo (in formato WKT) geo_shape
MULTILINESTRING testo (in formato WKT) geo_shape
MULTIPOINT testo (in formato WKT) geo_shape
MULTIPOLYGON testo (in formato WKT) geo_shape
POINT testo (in formato WKT) geo_point o geo_shape
POLYGON testo (in formato WKT) geo_shape
JSON testo oggetto

Ti consigliamo di configurare la coda delle lettere morte (DLQ) nella pipeline di Ingestion. OpenSearch Se hai configurato la coda, OpenSearch Service invia tutti i documenti non riusciti che non possono essere inseriti a causa di errori di mappatura dinamica della coda.

Se le mappature automatiche falliscono, puoi utilizzare template_type and template_content nella configurazione della pipeline per definire regole di mappatura esplicite. In alternativa, puoi creare modelli di mappatura direttamente nel tuo dominio o raccolta di ricerca prima di avviare la pipeline.

Limitazioni

Considerate le seguenti limitazioni quando configurate una pipeline di OpenSearch Ingestion per RDS for MySQL:

  • L'integrazione supporta solo un database MySQL per pipeline.

  • L'integrazione attualmente non supporta l'inserimento di dati in più regioni; l'istanza e OpenSearch il dominio Amazon RDS devono trovarsi nella stessa area. Regione AWS

  • L'integrazione attualmente non supporta l'inserimento di dati tra più account; l'istanza Amazon RDS e OpenSearch la pipeline di ingestione devono trovarsi nella stessa posizione. Account AWS

  • Assicurati che l'istanza Amazon RDS abbia l'autenticazione abilitata utilizzando Secrets Manager, che è l'unico meccanismo di autenticazione supportato.

  • La configurazione della pipeline esistente non può essere aggiornata per importare dati da un database and/or diverso in una tabella diversa. Per aggiornare il nome della and/or tabella del database di una pipeline, devi creare una nuova pipeline.

  • Le istruzioni DDL (Data Definition Language) non sono generalmente supportate. La coerenza dei dati non verrà mantenuta se:

    • Le chiavi primarie vengono modificate (add/delete/rename).

    • Le tabelle sono. dropped/truncated

    • I nomi delle colonne o i tipi di dati vengono modificati.

  • Se le tabelle MySQL da sincronizzare non hanno chiavi primarie definite, la coerenza dei dati non è garantita. Dovrai definire correttamente document_id l'opzione personalizzata nella configurazione del OpenSearch sink per poterti updates/deletes sincronizzare. OpenSearch

  • I riferimenti a chiavi esterne con azioni di eliminazione a cascata non sono supportati e possono causare incoerenza tra i dati tra RDS for MySQL e. OpenSearch

  • I cluster DB a più zone di disponibilità di Amazon RDS non sono supportati.

  • Versioni supportate: MySQL versione 8.0 e successive.

CloudWatch Allarmi consigliati

Le seguenti CloudWatch metriche sono consigliate per monitorare le prestazioni della pipeline di ingestione. Queste metriche possono aiutarvi a identificare la quantità di dati elaborati dalle esportazioni, il numero di eventi elaborati dagli stream, gli errori nell'elaborazione delle esportazioni e degli eventi di streaming e il numero di documenti scritti nella destinazione. È possibile impostare CloudWatch allarmi per eseguire un'azione quando una di queste metriche supera un valore specificato per un determinato periodo di tempo.

Metrica Description
pipeline-name.rds.Credenziali modificate Questa metrica indica la frequenza con cui i segreti vengono ruotati. AWS
pipeline-name.rds.executor RefreshErrors Questa metrica indica il mancato aggiornamento dei segreti. AWS
pipeline-name.rds.export RecordsTotal Questa metrica indica il numero di record esportati da Amazon Aurora.
pipeline-name.rds.export RecordsProcessed Questa metrica indica il numero di record elaborati dalla pipeline di Ingestion. OpenSearch
pipeline-name.rds.export RecordProcessingErrors Questa metrica indica il numero di errori di elaborazione in una pipeline di OpenSearch ingestione durante la lettura dei dati da un cluster Amazon Aurora.
pipeline-name.rds.export RecordsSuccessTotal Questa metrica indica il numero totale di record di esportazione elaborati correttamente.
pipeline-name.rds.export RecordsFailedTotal Questa metrica indica il numero totale di record di esportazione che non sono stati elaborati.
pipeline-name.rds.Bytes ricevuti Questa metrica indica il numero totale di byte ricevuti da una pipeline di Ingestion. OpenSearch
pipeline-name.rds.Bytes processati Questa metrica indica il numero totale di byte elaborati da una pipeline di Ingestion. OpenSearch
pipeline-name.rds.stream RecordsSuccessTotal Questa metrica indica il numero di record elaborati correttamente dallo stream.
pipeline-name.rds.stream RecordsFailedTotal Questa metrica indica il numero totale di record non elaborati dallo stream.