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 for MySQL
Completa i seguenti passaggi per configurare una pipeline di OpenSearch ingestione con Amazon RDS for RDS for MySQL.
Argomenti
Prerequisiti RDS per MySQL
Prima di creare la pipeline di OpenSearch Ingestion, effettuate le seguenti operazioni:
-
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 MySQL.
-
Verifica che i backup automatici siano abilitati sul database. Per ulteriori informazioni, vedere Abilitazione dei backup automatici.
-
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 del log binario nella Amazon RDS User Guide.
-
Configura l'autenticazione di 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.
-
Se utilizzi la funzionalità di snapshot iniziale completa, crea un ruolo AWS KMS key e un ruolo IAM per l'esportazione dei dati da Amazon RDS ad Amazon S3.
Il ruolo IAM deve avere la seguente politica di autorizzazione:
{ "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:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "export.rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
Seleziona o crea un dominio OpenSearch di servizio o una raccolta OpenSearch Serverless. Per ulteriori informazioni, consulta Creazione di domini OpenSearch di servizio e Creazione di raccolte.
-
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 Amazon RDS al tuo dominio o alla tua raccolta.
Fase 1: Configurare il ruolo della pipeline
Dopo aver configurato 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:
{ "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:*" ] } ] }
Fase 2: Creare la pipeline
Configurate 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 sorgente, devi configurare l'accesso VPC per la pipeline. Il VPC scelto deve essere lo stesso VPC utilizzato dalla sorgente Amazon Aurora. Quindi scegli una o più sottoreti e uno o più gruppi di sicurezza VPC. Tieni presente che la pipeline richiede l'accesso di rete a un database Aurora MySQL, quindi dovresti anche verificare che il 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 Controllo dell'accesso con gruppi di sicurezza.
Se utilizzi il AWS Management Console per creare la tua pipeline, devi anche collegare la pipeline al tuo VPC per utilizzare Amazon Aurora come sorgente. Per fare ciò, trova la sezione Configurazione di rete, scegli Collega a VPC e scegli il tuo CIDR da una delle opzioni predefinite fornite, oppure seleziona la tua. È possibile utilizzare qualsiasi CIDR da uno spazio di indirizzi privato come definito nella Best Current Practice della RFC 1918
Per fornire un CIDR personalizzato, seleziona Altro dal menu a discesa. Per evitare una collisione tra gli indirizzi IP tra OpenSearch Ingestion e Amazon RDS, assicurati che il CIDR VPC di Amazon RDS sia diverso dal CIDR per Ingestion. OpenSearch
Per ulteriori informazioni, consulta Configurazione dell'accesso VPC per una pipeline.
Coerenza dei dati
La pipeline garantisce la coerenza dei dati effettuando continuamente polling o ricevendo modifiche dall'istanza Amazon RDS e aggiornando i documenti corrispondenti nell'indice. OpenSearch
OpenSearch Ingestion supporta il end-to-end riconoscimento per garantire la durabilità dei dati. Quando una pipeline legge istantanee o flussi, crea dinamicamente partizioni per l'elaborazione parallela. La pipeline contrassegna una partizione come completa quando riceve un riconoscimento dopo aver acquisito tutti i record nel dominio o nella raccolta. OpenSearch Se desideri importare in una raccolta di ricerca OpenSearch Serverless, puoi generare un ID di documento nella pipeline. Se desideri importare in una raccolta di serie temporali OpenSearch Serverless, tieni presente che la pipeline non genera un ID di documento, quindi devi document_id: "${getMetadata(\"primary_key\")}"
ometterlo nella configurazione del pipeline sink.
Una pipeline OpenSearch di Ingestion mappa anche le azioni degli eventi in entrata nelle corrispondenti azioni di indicizzazione di massa per facilitare l'acquisizione dei documenti. Ciò mantiene i dati coerenti, in modo che ogni modifica dei dati in Amazon RDS venga riconciliata con le corrispondenti modifiche del documento. OpenSearch
Mappatura dei tipi di dati
OpenSearch La pipeline di ingestione mappa i tipi di dati MySQL su rappresentazioni adatte all'utilizzo da parte di domini o raccolte di servizi. OpenSearch Se non è definito alcun modello di mappatura OpenSearch, determina OpenSearch automaticamente i tipi di campo con mappatura dinamica
La tabella seguente elenca i tipi di dati MySQL e OpenSearch i tipi di campo corrispondenti. 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ù allineati ai 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, corto, intero o lungo a seconda del numero di bit |
DECIMAL | text | doppio o parola chiave |
DOUBLE | float | double |
FLOAT | float | float |
INT | Long | integer |
INT UNSIGNED | Long | Long |
MEDIUMINT | Long | integer |
MEDIUMINT UNSIGNED | Long | integer |
NUMERIC | text | doppio o parola chiave |
SMALLINT | Long | short |
SMALLINT UNSIGNED | Long | integer |
TINYINT | Long | byte |
TINYINT UNSIGNED | Long | short |
BINARY | text | binary |
BLOB | text | binary |
CHAR | text | text |
ENUM | text | Parola chiave |
LONGBLOB | text | binary |
LONGTEXT | text | text |
MEDIUMBLOB | text | binary |
MEDIUMTEXT | text | text |
SET | text | Parola chiave |
TEXT | text | text |
TINYBLOB | text | binary |
TINYTEXT | text | text |
VARBINARY | text | binary |
VARCHAR | text | text |
DATE | lungo (in millisecondi di epoca) | data |
DATETIME | long (in millisecondi epocali) | data |
TIME | long (in millisecondi epocali) | data |
TIMESTAMP | long (in millisecondi epocali) | data |
ANNO | long (in millisecondi epocali) | 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 | text | oggetto |
Ti consigliamo di configurare la coda di 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 importati a causa di errori di mappatura dinamica sulla coda.
Se le mappature automatiche falliscono, puoi utilizzare template_type
e template_content
nella configurazione della pipeline per definire regole di mappatura esplicite. In alternativa, puoi creare modelli di mappatura direttamente nel tuo dominio di ricerca o nella tua raccolta prima di avviare la pipeline.
Limitazioni
Considerate le seguenti limitazioni quando impostate una pipeline di OpenSearch ingestione per RDS for MySQL:
-
L'integrazione supporta solo un database MySQL per pipeline.
-
Al momento l'integrazione non supporta l'inserimento di dati tra regioni; l'istanza e il OpenSearch dominio Amazon RDS devono trovarsi nello stesso posto. Regione AWS
-
L'integrazione attualmente non supporta l'ingestione di dati tra account; l'istanza Amazon RDS e la pipeline di OpenSearch Ingestion 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 inserire dati da un database and/or diverso in una tabella diversa. Per aggiornare il nome del database e/o della tabella di una pipeline, è necessario creare una nuova pipeline.
-
Le istruzioni DDL (Data Definition Language) in genere non sono supportate. La coerenza dei dati non verrà mantenuta se:
-
Le chiavi primarie vengono modificate (add/delete/rename).
-
Le tabelle vengono eliminate/troncate.
-
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 poterla updates/deletes sincronizzare con. OpenSearch -
I riferimenti a chiavi esterne con azioni di eliminazione a cascata non sono supportati e possono causare incongruenze dei dati tra RDS for MySQL e. OpenSearch
-
I cluster DB con zone di disponibilità multipla 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 aiutarti 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 flusso 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.
Parametro | Descrizione |
---|---|
pipeline-name .rds.credenziali modificate |
Questa metrica indica la frequenza con cui i segreti vengono ruotati. AWS |
pipeline-name .rds. executorRefreshErrors |
Questa metrica indica gli errori nell'aggiornamento AWS dei segreti. |
pipeline-name .rds. exportRecordsTotal |
Questa metrica indica il numero di record esportati da Amazon Aurora. |
pipeline-name .rds. exportRecordsProcessed |
Questa metrica indica il numero di record elaborati dalla pipeline di OpenSearch ingestione. |
pipeline-name .rds. exportRecordProcessingErrori |
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. exportRecordsSuccessTotale |
Questa metrica indica il numero totale di record di esportazione elaborati correttamente. |
pipeline-name .rds. exportRecordsFailedTotale |
Questa metrica indica il numero totale di record di esportazione che non sono stati elaborati. |
pipeline-name .RDS.byte ricevuti |
Questa metrica indica il numero totale di byte ricevuti da una pipeline di ingestione. OpenSearch |
pipeline-name .rds.bytes processati |
Questa metrica indica il numero totale di byte elaborati da una pipeline di ingestione. OpenSearch |
pipeline-name .rds. streamRecordsSuccessTotale |
Questa metrica indica il numero di record elaborati con successo dallo stream. |
pipeline-name .rds. streamRecordsFailedTotale |
Questa metrica indica il numero totale di record non elaborati dallo stream. |