View a markdown version of this page

RDS für MySQL - OpenSearch Amazon-Dienst

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.

RDS für MySQL

Gehen Sie wie folgt vor, um eine OpenSearch Ingestion-Pipeline mit Amazon RDS for RDS for MySQL zu konfigurieren.

Voraussetzungen für RDS für MySQL

Bevor Sie Ihre OpenSearch Ingestion-Pipeline erstellen, führen Sie die folgenden Schritte aus:

  1. Erstellen Sie eine benutzerdefinierte DB-Parametergruppe in Amazon RDS, um die binäre Protokollierung zu konfigurieren, und legen Sie die folgenden Parameter fest.

    binlog_format=ROW binlog_row_image=full binlog_row_metadata=FULL

    Stellen Sie außerdem sicher, dass der binlog_row_value_options Parameter nicht auf gesetzt istPARTIAL_JSON.

    Weitere Informationen finden Sie unter Konfiguration von RDS für die MySQL-Binärprotokollierung.

  2. Wählen oder erstellen Sie eine RDS for MySQL-DB-Instance und verknüpfen Sie die im vorherigen Schritt erstellte Parametergruppe mit der DB-Instance.

  3. Stellen Sie sicher, dass automatische Backups in der Datenbank aktiviert sind. Weitere Informationen finden Sie unter Automatische Backups aktivieren.

  4. Konfigurieren Sie die Aufbewahrung von Binärprotokollen mit ausreichend Zeit für die Replikation, z. B. 24 Stunden. Weitere Informationen finden Sie unter Konfiguration des Binärprotokolls einrichten und anzeigen im Amazon RDS-Benutzerhandbuch.

  5. Richten Sie die Authentifizierung mit Benutzername und Passwort auf Ihrer Amazon RDS-Instance mithilfe der Passwortverwaltung mit Amazon RDS ein und AWS Secrets Manager. Sie können auch eine username/password Kombination erstellen, indem Sie ein Secrets Manager-Geheimnis erstellen.

  6. 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 von Amazon RDS nach Amazon S3.

    Für die IAM-Rolle sollte die folgende Berechtigungsrichtlinie gelten:

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

    Die Rolle sollte außerdem über die folgenden Vertrauensbeziehungen verfügen:

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "export.rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  7. Wählen Sie eine OpenSearch Servicedomäne oder eine OpenSearch serverlose Sammlung aus, oder erstellen Sie sie. Weitere Informationen finden Sie unter OpenSearch Servicedomänen erstellen und Sammlungen https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-manage.html#serverless-create erstellen.

  8. Hängen Sie Ihrer Domain eine ressourcenbasierte Richtlinie oder Ihrer Sammlung eine Datenzugriffsrichtlinie an. Diese Zugriffsrichtlinien ermöglichen es OpenSearch Ingestion, Daten von Ihrer Amazon RDS-DB-Instance in Ihre Domain oder Sammlung zu schreiben.

Schritt 1: Konfigurieren Sie die Pipeline-Rolle

Nachdem Sie die Voraussetzungen für Ihre Amazon RDS-Pipeline eingerichtet haben, konfigurieren Sie die Pipeline-Rolle, die Sie in Ihrer Pipeline-Konfiguration verwenden möchten. Fügen Sie der Rolle außerdem die folgenden Berechtigungen für die Amazon RDS-Quelle hinzu:

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:*" ] } ] }

Schritt 2: Erstellen Sie die Pipeline

Konfigurieren Sie eine OpenSearch Ingestion-Pipeline, die der folgenden ähnelt. Die Beispielpipeline gibt eine Amazon RDS-Instance als Quelle an.

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

Sie können einen vorkonfigurierten Amazon RDS-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 von Ihnen gewählte VPC sollte dieselbe VPC sein, die Ihre Amazon 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-Managementkonsole 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, wählen Sie An VPC anhängen und wählen Sie Ihre CIDR aus einer der bereitgestellten Standardoptionen aus, oder wählen Sie Ihre eigene aus. Der CIDR-Block muss eine Präfixlänge von /24 verwenden. Sie können jedes /24-CIDR aus einem privaten Adressraum verwenden, wie in RFC 1918 Best Current Practice definiert.

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 RDS zu vermeiden, stellen Sie sicher, dass sich der Amazon RDS VPC-CIDR von dem CIDR für Ingestion unterscheidet. OpenSearch

Weitere Informationen finden Sie unter Konfiguration des VPC-Zugriffs für eine Pipeline.

Datenkonsistenz

Die Pipeline gewährleistet die Datenkonsistenz, indem sie kontinuierlich Änderungen von der Amazon RDS-Instance abfragt oder empfängt und die entsprechenden Dokumente im OpenSearch Index aktualisiert.

OpenSearch Die Erfassung unterstützt eine durchgängige Bestätigung, um die Haltbarkeit der Daten sicherzustellen. Wenn eine Pipeline Snapshots oder Streams liest, erstellt sie dynamisch Partitionen für die parallele Verarbeitung. Die Pipeline markiert eine Partition als vollständig, wenn sie nach dem Aufnehmen aller Datensätze in der OpenSearch Domäne oder Sammlung eine Bestätigung erhält. Wenn Sie in eine OpenSearch serverlose Suchsammlung aufnehmen möchten, können Sie in der Pipeline eine Dokument-ID generieren. Wenn Sie in eine OpenSearch serverlose Zeitreihen-Sammlung importieren möchten, beachten Sie, dass die Pipeline keine Dokument-ID generiert. Sie müssen sie daher document_id: "${getMetadata(\"primary_key\")}" in Ihrer Pipeline-Senk-Konfiguration weglassen.

Eine OpenSearch Erfassungspipeline ordnet eingehende Ereignisaktionen auch den entsprechenden Massenindizierungsaktionen zu, um das Ingestieren von Dokumenten zu erleichtern. Dadurch bleiben die Daten konsistent, sodass jede Datenänderung in Amazon RDS mit den entsprechenden Dokumentänderungen abgeglichen wird. OpenSearch

Zuordnung von Datentypen

OpenSearch Die Ingestion-Pipeline ordnet MySQL-Datentypen Repräsentationen zu, die für die Nutzung durch OpenSearch Service-Domänen oder Sammlungen geeignet sind. Wenn keine Zuordnungsvorlage in definiert ist OpenSearch, bestimmt OpenSearch automatisch Feldtypen mit dynamischer Zuordnung auf der Grundlage des ersten gesendeten Dokuments. Sie können die Feldtypen, die für Sie am besten geeignet sind, auch explizit OpenSearch mithilfe einer Zuordnungsvorlage definieren.

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 wenn keine explizite Zuordnung definiert ist. In diesem Fall OpenSearch werden automatisch Feldtypen mit dynamischer Zuordnung bestimmt. Die Spalte OpenSearch „Empfohlener Feldtyp“ ist der entsprechende Feldtyp, dessen explizite Angabe in einer Zuordnungsvorlage empfohlen wird. Diese Feldtypen sind enger auf die Datentypen in MySQL abgestimmt und ermöglichen in der Regel bessere Suchfunktionen, 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 Double 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 Double 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
DATE 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, die Dead-Letter Queue (DLQ) in Ihrer Ingestion-Pipeline zu konfigurieren. OpenSearch Wenn Sie die Warteschlange konfiguriert haben, sendet OpenSearch Service alle fehlgeschlagenen Dokumente, die aufgrund von dynamischen Zuordnungsfehlern nicht aufgenommen werden können, 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 Mapping-Vorlagen direkt in Ihrer Such-Domain oder Sammlung erstellen, bevor Sie die Pipeline starten.

Einschränkungen

Beachten Sie die folgenden Einschränkungen, wenn Sie eine OpenSearch Ingestion-Pipeline für RDS for MySQL einrichten:

  • Die Integration unterstützt nur eine MySQL-Datenbank pro Pipeline.

  • Die Integration unterstützt derzeit keine regionsübergreifende Datenaufnahme; Ihre Amazon RDS-Instance und OpenSearch Domain müssen sich in derselben befinden. AWS-Region

  • Die Integration unterstützt derzeit keine kontoübergreifende Datenaufnahme. Ihre Amazon RDS-Instance und die Ingestion-Pipeline müssen sich in OpenSearch derselben befinden. AWS-Konto

  • Stellen Sie sicher, dass für die Amazon RDS-Instance die Authentifizierung mithilfe von Secrets Manager aktiviert ist, dem einzigen unterstützten Authentifizierungsmechanismus.

  • Die bestehende Pipeline-Konfiguration kann nicht aktualisiert werden, um Daten aus einer anderen Datenbank oder and/or einer anderen Tabelle aufzunehmen. Um den and/or Datenbanktabellennamen einer Pipeline zu aktualisieren, müssen Sie eine neue Pipeline erstellen.

  • DDL-Anweisungen (Data Definition Language) werden im Allgemeinen nicht unterstützt. Die Datenkonsistenz wird nicht aufrechterhalten, wenn:

    • Primärschlüssel werden geändert (add/delete/rename).

    • Tabellen sind dropped/truncated.

    • Spaltennamen oder Datentypen werden geändert.

  • Wenn für die zu synchronisierenden MySQL-Tabellen keine Primärschlüssel definiert sind, kann die Datenkonsistenz nicht garantiert werden. Sie müssen die benutzerdefinierte document_id Option in der OpenSearch Senkenkonfiguration ordnungsgemäß definieren, damit Sie synchronisieren updates/deletes können OpenSearch.

  • Fremdschlüsselverweise mit kaskadierenden Löschaktionen werden nicht unterstützt und können zu Dateninkonsistenzen zwischen RDS for MySQL und führen. OpenSearch

  • Amazon RDS-DB-Cluster mit Mehrfachverfügbarkeitszonen werden nicht unterstützt.

  • Unterstützte Versionen: MySQL Version 8.0 und höher.

Empfohlene CloudWatch Alarme

Die folgenden CloudWatch Messwerte werden zur Überwachung der Leistung Ihrer Ingestion-Pipeline empfohlen. Mithilfe dieser Metriken können Sie die Menge der bei Exporten verarbeiteten Daten, die Anzahl der aus Streams verarbeiteten Ereignisse, die Fehler bei der Verarbeitung von Exporten und Stream-Ereignissen sowie die Anzahl der an das Ziel geschriebenen Dokumente ermitteln. Sie können CloudWatch Alarme einrichten, um eine Aktion auszuführen, wenn eine dieser Metriken einen bestimmten Wert für einen bestimmten Zeitraum überschreitet.

Metrik Description
pipeline-name.rds.Die Anmeldeinformationen wurden geändert Diese Metrik gibt an, wie oft Geheimnisse rotiert werden. AWS
pipeline-name.rds.executor RefreshErrors Diese Metrik weist auf Fehler beim Aktualisieren von Geheimnissen hin. AWS
pipeline-name.rds.export RecordsTotal Diese Metrik gibt die Anzahl der aus Amazon Aurora exportierten Datensätze an.
pipeline-name.rds.export RecordsProcessed Diese Metrik gibt die Anzahl der Datensätze an, die von der Ingestion-Pipeline verarbeitet wurden OpenSearch .
pipeline-name.rds.export RecordProcessingErrors Diese Metrik gibt die Anzahl der Verarbeitungsfehler in einer OpenSearch Ingestion-Pipeline beim Lesen der Daten aus einem Amazon Aurora-Cluster an.
pipeline-name.rds.export RecordsSuccessTotal Diese Metrik gibt die Gesamtzahl der erfolgreich verarbeiteten Exportdatensätze an.
pipeline-name.rds.export RecordsFailedTotal Diese Metrik gibt die Gesamtzahl der Exportdatensätze an, die nicht verarbeitet werden konnten.
pipeline-name.rds.BytesReceived 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 werden. OpenSearch
pipeline-name.rds.stream RecordsSuccessTotal Diese Metrik gibt die Anzahl der Datensätze an, die erfolgreich aus dem Stream verarbeitet wurden.
pipeline-name.rds.stream RecordsFailedTotal Diese Metrik gibt die Gesamtzahl der Datensätze an, die aus dem Stream nicht verarbeitet werden konnten.