Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Aurora MySQL
Gehen Sie wie folgt vor, um eine OpenSearch Ingestion-Pipeline mit Amazon Aurora für Aurora MySQL zu konfigurieren.
Themen
Voraussetzungen für Aurora MySQL
Bevor Sie Ihre OpenSearch Ingestion-Pipeline erstellen, führen Sie die folgenden Schritte aus:
-
aurora_enhanced_binlog=1 binlog_backup=0 binlog_format=ROW binlog_replication_globaldb=0 binlog_row_image=full binlog_row_metadata=full
Stellen Sie außerdem sicher, dass der
binlog_transaction_compression
Parameter nicht aufON
gesetzt ist und dass derbinlog_row_value_options
Parameter nicht auf gesetzt istPARTIAL_JSON
. -
Wählen oder erstellen Sie einen Aurora MySQL-DB-Cluster und ordnen Sie die im vorherigen Schritt erstellte Parametergruppe dem DB-Cluster zu.
-
Konfigurieren Sie die Aufbewahrung von Binärprotokollen auf 24 Stunden oder länger.
-
Richten Sie die Authentifizierung mit Benutzername und Passwort auf Ihrem Amazon Aurora Aurora-Cluster mithilfe der Passwortverwaltung mit Aurora ein und AWS Secrets Manager. Sie können auch eine username/password Kombination erstellen, indem Sie ein Secrets Manager Manager-Geheimnis erstellen.
-
Wenn Sie die vollständige Funktion für den ersten Snapshot verwenden, erstellen Sie eine AWS KMS key und eine IAM-Rolle für den Export von Daten aus Amazon Aurora nach Amazon S3.
Für die IAM-Rolle sollte die folgende Berechtigungsrichtlinie gelten:
Die Rolle sollte außerdem über die folgenden Vertrauensbeziehungen verfügen:
-
Wählen oder erstellen Sie eine OpenSearch Dienstdomäne oder eine OpenSearch serverlose Sammlung. Weitere Informationen finden Sie unter OpenSearch Dienstdomänen erstellen und Sammlungen erstellen.
-
Fügen Sie Ihrer Domain eine ressourcenbasierte Richtlinie oder Ihrer Sammlung eine Datenzugriffsrichtlinie hinzu. Diese Zugriffsrichtlinien ermöglichen es OpenSearch Ingestion, Daten aus Ihrem Amazon Aurora Aurora-DB-Cluster in Ihre Domain oder Sammlung zu schreiben.
Schritt 1: Konfigurieren Sie die Pipeline-Rolle
Nachdem Sie die Voraussetzungen für Ihre Amazon Aurora Aurora-Pipeline eingerichtet haben, konfigurieren Sie die Pipeline-Rolle, die in Ihrer Pipeline-Konfiguration verwendet werden soll. Fügen Sie der Rolle außerdem die folgenden Berechtigungen für die Amazon Aurora Aurora-Quelle hinzu:
{ "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:*:account-id
:network-interface/*", "arn:aws:ec2:*:account-id
:subnet/*", "arn:aws:ec2:*:account-id
:security-group/*" ] }, { "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:*" ] } ] }
Schritt 2: Erstellen Sie die Pipeline
Konfigurieren Sie eine OpenSearch Ingestion-Pipeline ähnlich der folgenden. Die Beispiel-Pipeline spezifiziert einen Amazon Aurora Aurora-Cluster als Quelle.
version: "2" aurora-mysql-pipeline: source: rds: db_identifier: "
cluster-id
" engine: aurora-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
Sie können einen vorkonfigurierten Amazon Aurora Aurora-Blueprint verwenden, um diese Pipeline zu erstellen. Weitere Informationen finden Sie unter Mit Blueprints arbeiten.
Um Amazon Aurora als Quelle zu verwenden, müssen Sie den VPC-Zugriff für die Pipeline konfigurieren. Die VPC, die Sie wählen, sollte dieselbe VPC sein, die Ihre Amazon Aurora Aurora-Quelle verwendet. Wählen Sie dann ein oder mehrere Subnetze und eine oder mehrere VPC-Sicherheitsgruppen aus. Beachten Sie, dass die Pipeline Netzwerkzugriff auf eine Aurora MySQL-Datenbank benötigt. Sie sollten daher auch überprüfen, ob Ihr Aurora-Cluster mit einer VPC-Sicherheitsgruppe konfiguriert ist, die eingehenden Datenverkehr von der VPC-Sicherheitsgruppe der Pipeline zum Datenbankport zulässt. Weitere Informationen finden Sie unter Steuern des Zugriffs mit Sicherheitsgruppen.
Wenn Sie die verwenden, AWS Management Console um Ihre Pipeline zu erstellen, müssen Sie Ihre Pipeline auch an Ihre VPC anhängen, um Amazon Aurora als Quelle verwenden zu können. Suchen Sie dazu den Abschnitt Netzwerkkonfiguration, aktivieren Sie das Kontrollkästchen An VPC anhängen und wählen Sie Ihr CIDR aus einer der bereitgestellten Standardoptionen oder wählen Sie Ihre eigene aus. Sie können jedes CIDR aus einem privaten Adressraum verwenden, wie in der RFC 1918
Um ein benutzerdefiniertes CIDR bereitzustellen, wählen Sie im Dropdownmenü die Option Andere aus. Um eine Kollision der IP-Adressen zwischen OpenSearch Ingestion und Amazon Aurora zu vermeiden, stellen Sie sicher, dass sich die Amazon Aurora VPC CIDR von der CIDR für Ingestion unterscheidet. OpenSearch
Weitere Informationen finden Sie unter VPC-Zugriff für eine Pipeline konfigurieren.
Datenkonsistenz
Die Pipeline gewährleistet die Datenkonsistenz, indem sie kontinuierlich Änderungen vom Amazon Aurora Aurora-Cluster abfragt oder empfängt und die entsprechenden Dokumente im OpenSearch Index aktualisiert.
OpenSearch Die Datenaufnahme unterstützt die end-to-end Bestätigung, um die Beständigkeit der Daten sicherzustellen. Wenn eine Pipeline Snapshots oder Streams liest, erstellt sie dynamisch Partitionen für die Parallelverarbeitung. Die Pipeline markiert eine Partition als abgeschlossen, wenn sie nach der Aufnahme aller Datensätze in der OpenSearch Domäne oder Sammlung eine Bestätigung erhält. Wenn Sie Daten in eine OpenSearch serverlose Suchsammlung aufnehmen möchten, können Sie in der Pipeline eine Dokument-ID generieren. Wenn Sie Daten in eine OpenSearch serverlose Zeitreihensammlung aufnehmen möchten, beachten Sie, dass die Pipeline keine Dokument-ID generiert. Daher müssen Sie diese document_id: "${getMetadata(\"primary_key\")}"
in Ihrer Pipeline-Senkenkonfiguration weglassen.
Eine OpenSearch Ingestion-Pipeline ordnet auch eingehende Ereignisaktionen entsprechenden Massenindizierungsaktionen zu, um das Ingestieren von Dokumenten zu erleichtern. Dadurch bleiben die Daten konsistent, sodass jede Datenänderung in Amazon Aurora mit den entsprechenden Dokumentänderungen in OpenSearch abgeglichen wird.
Datentypen zuordnen
OpenSearch Die Ingestion-Pipeline ordnet MySQL-Datentypen Repräsentationen zu, die für die Nutzung von OpenSearch Dienstdomänen oder Sammlungen geeignet sind. Wenn in keine Zuordnungsvorlage definiert ist OpenSearch, OpenSearch werden Feldtypen mit dynamischer Zuordnung
In der folgenden Tabelle sind die MySQL-Datentypen und die entsprechenden OpenSearch Feldtypen aufgeführt. In der Spalte OpenSearch Standardfeldtyp wird der entsprechende Feldtyp angezeigt, OpenSearch sofern keine explizite Zuordnung definiert ist. In diesem Fall bestimmt OpenSearch automatisch Feldtypen mit dynamischer Zuordnung. Die Spalte OpenSearch „Empfohlener Feldtyp“ ist der entsprechende Feldtyp, dessen explizite Angabe in einer Zuordnungsvorlage empfohlen wird. Diese Feldtypen sind enger an die Datentypen in MySQL angepasst und können in der Regel bessere Suchfunktionen ermöglichen, die in verfügbar sind OpenSearch.
MySQL-Datentyp | OpenSearch Standard-Feldtyp | Empfohlener OpenSearch Feldtyp |
---|---|---|
BIGINT | long | long |
BIGINT UNSIGNED | long | lang ohne Vorzeichen |
BIT | long | Byte, Short, Integer oder Long, abhängig von der Anzahl der Bits |
DECIMAL | text | doppelt oder Schlüsselwort |
DOUBLE | float | double |
FLOAT | float | float |
INT | long | Ganzzahl |
INT UNSIGNED | long | long |
MEDIUMINT | long | Ganzzahl |
MEDIUMINT UNSIGNED | long | Ganzzahl |
NUMERIC | text | doppelt oder Schlüsselwort |
SMALLINT | long | short |
SMALLINT UNSIGNED | long | Ganzzahl |
TINYINT | long | Byte |
TINYINT UNSIGNED | long | short |
BINARY | text | Binary |
BLOB | text | Binary |
CHAR | text | text |
ENUM | text | Schlüsselwort |
LONGBLOB | text | Binary |
LONGTEXT | text | text |
MEDIUMBLOB | text | Binary |
MEDIUMTEXT | text | text |
SET | text | Schlüsselwort |
TEXT | text | text |
TINYBLOB | text | Binary |
TINYTEXT | text | text |
VARBINARY | text | Binary |
VARCHAR | text | text |
DATUM | lang (in Epochen-Millisekunden) | date |
DATETIME | lang (in Epochen-Millisekunden) | date |
TIME | lang (in Epochen-Millisekunden) | date |
TIMESTAMP (ZEITSTEMPEL) | lang (in Epochen-Millisekunden) | date |
JAHR | lang (in Epochen-Millisekunden) | date |
GEOMETRY | Text (im WKT-Format) | geo_shape |
GEOMETRYCOLLECTION | Text (im WKT-Format) | geo_shape |
LINESTRING | Text (im WKT-Format) | geo_shape |
MULTILINESTRING | Text (im WKT-Format) | geo_shape |
MULTIPOINT | Text (im WKT-Format) | geo_shape |
MULTIPOLYGON | Text (im WKT-Format) | geo_shape |
POINT | Text (im WKT-Format) | geo_point oder geo_shape |
POLYGON | Text (im WKT-Format) | geo_shape |
JSON | text | object |
Wir empfehlen, dass Sie die Dead-Letter-Warteschlange (DLQ) in Ihrer Ingestion-Pipeline konfigurieren. OpenSearch Wenn Sie die Warteschlange konfiguriert haben, sendet OpenSearch Service alle fehlgeschlagenen Dokumente, die aufgrund von Fehlern bei der dynamischen Zuordnung nicht aufgenommen werden konnten, an die Warteschlange.
Wenn automatische Zuordnungen fehlschlagen, können Sie template_type
und template_content
in Ihrer Pipeline-Konfiguration verwenden, um explizite Zuordnungsregeln zu definieren. Alternativ können Sie Zuordnungsvorlagen direkt in Ihrer Suchdomain oder Sammlung erstellen, bevor Sie die Pipeline starten.
Einschränkungen
Beachten Sie die folgenden Einschränkungen, wenn Sie eine OpenSearch Ingestion-Pipeline für Aurora MySQL einrichten:
-
Die Integration unterstützt nur eine MySQL-Datenbank pro Pipeline.
-
Die Integration unterstützt derzeit keine regionsübergreifende Datenaufnahme. Ihr Amazon Aurora Aurora-Cluster und Ihre OpenSearch Domain müssen sich im selben System befinden. AWS-Region
-
Die Integration unterstützt derzeit keine kontoübergreifende Datenaufnahme. Ihr Amazon Aurora Aurora-Cluster und Ihre OpenSearch Ingestion-Pipeline müssen identisch sein. AWS-Konto
-
Stellen Sie sicher, dass für den Amazon Aurora Aurora-Cluster die Authentifizierung mithilfe von Secrets Manager aktiviert ist. Dies ist der einzige unterstützte Authentifizierungsmechanismus.
-
Die bestehende Pipeline-Konfiguration kann nicht aktualisiert werden, um Daten aus einer anderen Datenbank oder and/or einer anderen Tabelle aufzunehmen. Um den Datenbank- und/oder Tabellennamen einer Pipeline zu aktualisieren, müssen Sie die Pipeline stoppen und mit einer aktualisierten Konfiguration neu starten oder eine neue Pipeline erstellen.
-
DDL-Anweisungen (Data Definition Language) werden im Allgemeinen nicht unterstützt. Die Datenkonsistenz wird nicht gewährleistet, wenn:
-
Primärschlüssel werden geändert (add/delete/rename).
-
Tabellen werden gelöscht/gekürzt.
-
Spaltennamen oder Datentypen werden geändert.
-
-
Wenn für die zu synchronisierenden MySQL-Tabellen keine Primärschlüssel definiert sind, ist die Datenkonsistenz nicht garantiert. Sie müssen die benutzerdefinierte
document_id
Option in der OpenSearch Senkenkonfiguration richtig definieren, damit eine Synchronisierung updates/deletes durchgeführt werden kann OpenSearch. -
Fremdschlüsselverweise mit kaskadierenden Löschaktionen werden nicht unterstützt und können zu Dateninkonsistenzen zwischen Aurora MySQL und führen. OpenSearch
-
Unterstützte Versionen: Aurora MySQL Version 3.05.2 und höher.
Empfohlene Alarme CloudWatch
Die folgenden CloudWatch Messwerte werden für die Überwachung der Leistung Ihrer Ingestion-Pipeline empfohlen. Mithilfe dieser Metriken können Sie die Menge der im Rahmen von Exporten verarbeiteten Daten, die Anzahl der aus Streams verarbeiteten Ereignisse, die Fehler bei der Verarbeitung von Exporten und Stream-Ereignissen sowie die Anzahl der Dokumente ermitteln, die an das Ziel geschrieben wurden. Sie können CloudWatch Alarme einrichten, um eine Aktion auszuführen, wenn eine dieser Metriken für einen bestimmten Zeitraum einen bestimmten Wert überschreitet.
Metrik | Beschreibung |
---|---|
pipeline-name .rds.Credentials geändert |
Diese Metrik gibt an, wie oft Secrets rotiert werden. AWS |
pipeline-name .rds. executorRefreshErrors |
Diese Metrik weist auf Fehler beim Aktualisieren von AWS Geheimnissen hin. |
pipeline-name .rds. exportRecordsTotal |
Diese Metrik gibt die Anzahl der aus Amazon Aurora exportierten Datensätze an. |
pipeline-name .rds. exportRecordsProcessed |
Diese Metrik gibt die Anzahl der Datensätze an, die von der OpenSearch Ingestion-Pipeline verarbeitet wurden. |
pipeline-name .rds. exportRecordProcessingFehler |
Diese Metrik gibt die Anzahl der Verarbeitungsfehler in einer OpenSearch Ingestion-Pipeline beim Lesen der Daten aus einem Amazon Aurora Aurora-Cluster an. |
pipeline-name .rds. exportRecordsSuccessInsgesamt |
Diese Metrik gibt die Gesamtzahl der erfolgreich verarbeiteten Exportdatensätze an. |
pipeline-name .rds. exportRecordsFailedInsgesamt |
Diese Metrik gibt die Gesamtzahl der Exportdatensätze an, die nicht verarbeitet werden konnten. |
pipeline-name .RDS.Bytes empfangen |
Diese Metrik gibt die Gesamtzahl der Byte an, die von einer Ingestion-Pipeline empfangen wurden. OpenSearch |
pipeline-name .RDS. Verarbeitete Bytes |
Diese Metrik gibt die Gesamtzahl der Byte an, die von einer Ingestion-Pipeline verarbeitet wurden. OpenSearch |
pipeline-name .rds. streamRecordsSuccessInsgesamt |
Diese Metrik gibt die Anzahl der erfolgreich verarbeiteten Datensätze aus dem Stream an. |
pipeline-name .rds. streamRecordsFailedInsgesamt |
Diese Metrik gibt die Gesamtzahl der Datensätze aus dem Stream an, die nicht verarbeitet werden konnten. |