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.
Konfiguration multi-source-replication für Amazon RDS for My SQL
Bei der Replikation mit mehreren Quellen können Sie eine Amazon RDS for My SQL DB-Instance als Replikat einrichten, das binäre Protokollereignisse von mehr als einer RDS My SQL Source DB-Instance empfängt. Die Replikation mehrerer Quellen wird RDS für My SQL DB-Instances unterstützt, auf denen die folgenden Engine-Versionen ausgeführt werden:
Nebenversionen 8.0.35 und höher
Nebenversionen 5.7.44 und höher
Informationen zu My SQL Multisource Replication finden Sie unter My SQL Multisource Replication
Anwendungsfälle für die Replikation mit mehreren Quellen
Die folgenden Fälle eignen sich gut für die Verwendung der Multiquellenreplikation auf RDS for My: SQL
-
Anwendungen, die mehrere Shards auf separaten DB-Instances zu einem einzigen Shard zusammenführen oder kombinieren müssen.
-
Anwendungen, die Berichte aus Daten generieren müssen, die aus mehreren Quellen konsolidiert wurden.
-
Anforderungen zur Erstellung konsolidierter langfristiger Backups von Daten, die auf mehrere RDS My SQL DB-Instances verteilt sind.
Voraussetzungen für die Replikation mit mehreren Quellen
Bevor Sie die Replikation mit mehreren Quellen konfigurieren, müssen Sie die folgenden Voraussetzungen erfüllen.
Stellen Sie sicher, dass für jede Quelle RDS für Meine SQL DB-Instance automatische Backups aktiviert sind. Durch die Aktivierung automatischer Backups wird die binäre Protokollierung aktiviert. Informationen zum Aktivieren automatischer Backups finden Sie unterAktivieren von automatisierten Backups.
Um Replikationsfehler zu vermeiden, wurde empfohlen, Schreibvorgänge in die Quell-DB-Instances zu blockieren. Sie können dies tun, indem Sie den
read-only
ParameterON
in einer benutzerdefinierten Parametergruppe, die an die RDS for My SQL Source DB-Instance angehängt ist, auf setzen. Sie können das AWS Management Console oder das verwenden AWS CLI , um eine neue benutzerdefinierte Parametergruppe zu erstellen oder eine bestehende zu ändern. Weitere Informationen erhalten Sie unter Erstellen einer DB-Parametergruppe in Amazon RDS und Ändern von Parametern in einer DB-Parametergruppe in Amazon RDS.Fügen Sie für jede Quell-DB-Instance die IP-Adresse der Amazon Virtual Private Cloud (VPC) -Sicherheitsgruppe für die Multisource-DB-Instance hinzu. Um die IP-Adresse einer Quell-DB-Instance zu identifizieren, können Sie den Befehl
dig
ausführen. Führen Sie den Befehl von einer EC2 Amazon-Instance aus, die sich in VPC der Ziel-DB-Instance mit mehreren Quellen befindet.RDS Endpoint
Verwenden Sie für jede Quell-DB-Instance einen Client, um eine Verbindung mit der DB-Instance herzustellen, und erstellen Sie einen Datenbankbenutzer mit den erforderlichen Rechten für die Replikation, wie im folgenden Beispiel.
CREATE USER '
repl_user
' IDENTIFIED BY 'password
'; GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user
';
Konfiguration von Replikationskanälen mit mehreren Quellen RDS für My SQL DB-Instances
Die Konfiguration von Replikationskanälen mit mehreren Quellen ähnelt der Konfiguration der Replikation aus einzelnen Quellen. Bei der Replikation mit mehreren Quellen aktivieren Sie zunächst die binäre Protokollierung auf der Quellinstanz. Anschließend importieren Sie Daten aus den Quellen in das Multiquellen-Replikat. Anschließend starten Sie die Replikation von jeder Quelle aus, indem Sie die binären Log-Koordinaten oder die GTID automatische Positionierung verwenden.
Gehen Sie wie folgt vor, um eine RDS For My SQL DB-Instance als Multisource-Replikat von zwei oder mehr RDS für My SQL DB-Instances zu konfigurieren.
Themen
Schritt 1: Importieren Sie Daten aus den Quell-DB-Instances in das Multisource-Replikat
Führen Sie die folgenden Schritte für jede Quell-DB-Instance aus.
Bevor Sie die Daten aus einer Quelle in das Multiquellen-Replikat importieren, ermitteln Sie die aktuelle binäre Protokolldatei und Position, indem Sie den SHOW MASTER
STATUS
Befehl ausführen. Notieren Sie sich diese Details, damit Sie sie im nächsten Schritt verwenden können. In dieser Beispielausgabe ist die Datei mysql-bin-changelog.000031
und die Position ist107
.
File Position ----------------------------------- mysql-bin-changelog.000031 107 -----------------------------------
Kopieren Sie nun die Datenbank von der Quell-DB-Instance in das Multiquellen-Replikat, indem Siemysqldump
, wie im folgenden Beispiel, Folgendes verwenden.
mysqldump --databases database_name \ --single-transaction \ --compress \ --order-by-primary \ -u
RDS_user_name
\ -pRDS_password
\ --host=RDS Endpoint
| mysql \ --host=RDS Endpoint
\ --port=3306 \ -uRDS_user_name
\ -pRDS_password
Nach dem Kopieren der Datenbank können Sie den schreibgeschützten Parameter auf der Quell-DB-Instance OFF
auf setzen.
Schritt 2: Starten Sie die Replikation von den Quell-DB-Instances auf das Multiquellen-Replikat
Verwenden Sie für jede Quell-DB-Instance die Master-Benutzeranmeldedaten, um eine Verbindung zur Instance herzustellen, und führen Sie die folgenden beiden gespeicherten Prozeduren aus. Diese gespeicherten Prozeduren konfigurieren die Replikation auf einem Kanal und starten die Replikation. In diesem Beispiel werden der Name und die Position der Binlog-Datei aus der Beispielausgabe im vorherigen Schritt verwendet.
CALL mysql.rds_set_external_source_for_channel('
mysourcehost.example.com
', 3306, 'repl_user
', 'password
', 'mysql-bin-changelog.000031
',107
, 0, 'channel_1
'); CALL mysql.rds_start_replication_for_channel('channel_1
');
Weitere Hinweise zur Verwendung dieser und anderer gespeicherter Prozeduren zur Einrichtung und Verwaltung Ihrer Replikationskanäle finden Sie unterVerwaltung der Replikation mehrerer Quellen.
Verwenden von Filtern bei der Replikation mit mehreren Quellen
Sie können Replikationsfilter verwenden, um anzugeben, mit welchen Datenbanken und Tabellen in einem Multiquellenreplikat repliziert werden. Replikationsfilter können Datenbanken und Tabellen in die Replikation einbeziehen oder sie von der Replikation ausschließen. Weitere Informationen zu Replikationsfiltern finden Sie unter. Konfiguration von Replikationsfiltern mit My SQL
Bei der Replikation mit mehreren Quellen können Sie Replikationsfilter global oder auf Kanalebene konfigurieren. Die Filterung auf Kanalebene ist nur bei unterstützten DB-Instances verfügbar, auf denen Version 8.0 ausgeführt wird. Die folgenden Beispiele zeigen, wie Filter global oder auf Kanalebene konfiguriert werden.
Beachten Sie die folgenden Anforderungen und das folgende Verhalten bei der Filterung bei der Replikation mit mehreren Quellen:
Die Kanalnamen müssen in umgekehrte Anführungszeichen (``) gesetzt werden.
Wenn Sie die Replikationsfilter in der Parametergruppe ändern, werden die Multiquellen-Replikate
sql_thread
für alle Kanäle mit Aktualisierungen neu gestartet, um die Änderungen dynamisch zu übernehmen. Wenn ein Update einen globalen Filter beinhaltet, werden alle Replikationskanäle im laufenden Zustand neu gestartet.Alle globalen Filter werden vor allen kanalspezifischen Filtern angewendet.
Wenn ein Filter global und auf Kanalebene angewendet wird, wird nur der Filter auf Kanalebene angewendet. Wenn die Filter beispielsweise auf
replicate_ignore_db
gesetzt sindreplicate_ignore_db="db1,`channel_22`:db2"
,db1
wird „auf“ auf alle Kanäle mit Ausnahmechannel_22
von angewendet undchannel_22
ignoriert nur Änderungen von.db2
Beispiel 1: Einen globalen Filter einrichten
Im folgenden Beispiel ist die temp_data
Datenbank in jedem Kanal von der Replikation ausgeschlossen.
Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. Linux, macOS, oder Unix:
aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "ParameterName=replicate-ignore-db,ParameterValue='temp_data',ApplyMethod=immediate"
Beispiel 2: Einstellen eines Filters auf Kanalebene
Im folgenden Beispiel sind Änderungen aus der sample22
Datenbank nur im Kanal enthalten. channel_22
Ebenso sind Änderungen aus der sample99
Datenbank nur im Kanal enthaltenchannel_99
.
Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. Linux, macOS, oder Unix:
aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "ParameterName=replicate-do-db,ParameterValue='\`channel_22\`:sample22,\`channel_99\`:sample99',ApplyMethod=immediate"
Überwachung von Replikationskanälen mit mehreren Quellen
Sie können einzelne Kanäle in einem Replikat mit mehreren Quellen mithilfe der folgenden Methoden überwachen:
Um den Status aller Kanäle oder eines bestimmten Kanals zu überwachen, stellen Sie eine Verbindung zum Multiquellen-Replikat her und führen Sie den Befehl or aus.
SHOW REPLICA STATUS
SHOW REPLICA STATUS FOR CHANNEL '
Weitere Informationen finden Sie in der Dokumentation Meine SQLDokumentation unter Überprüfen des Replikationsstatuschannel_name
'. Verwenden Sie die RDS Ereignisbenachrichtigung, um eine Benachrichtigung zu erhalten, wenn ein Replikationskanal gestartet, gestoppt oder entfernt wird. Weitere Informationen finden Sie unter Mit RDS Amazon-Event-Benachrichtigungen arbeiten.
Um die Verzögerung für einen bestimmten Kanal zu überwachen, überprüfen Sie die
ReplicationChannelLag
entsprechende Metrik. Datenpunkte für diese Metrik haben einen Zeitraum von 60 Sekunden (1 Minute) und sind für 15 Tage verfügbar. Verwenden Sie die Instanz-ID und den Namen des Replikationskanals, um die Verzögerung des Replikationskanals für einen Kanal zu ermitteln. Um eine Benachrichtigung zu erhalten, wenn diese Verzögerung einen bestimmten Schwellenwert überschreitet, können Sie einen CloudWatch Alarm einrichten. Weitere Informationen finden Sie unter Überwachung von Amazon RDS Amazon mit Amazon CloudWatch.
Überlegungen und bewährte Methoden für die Replikation mehrerer Quellen
Bevor Sie die Replikation mit mehreren Quellen auf RDS for My verwendenSQL, sollten Sie sich die folgenden Überlegungen und bewährten Methoden ansehen:
-
Stellen Sie sicher, dass eine als Multiquellen-Replikat konfigurierte DB-Instance über ausreichende Ressourcen wie Durchsatz und Arbeitsspeicher verfügt und IOPS die Arbeitslast mehrerer Quell-Instances bewältigen kann. CPU
-
Überwachen Sie regelmäßig die Ressourcennutzung auf Ihrem Multisource-Replikat und passen Sie die Speicher- oder Instance-Konfiguration an, um die Arbeitslast zu bewältigen, ohne Ressourcen zu belasten.
-
Sie können die Multithread-Replikation auf einem Replikat mit mehreren Quellen konfigurieren, indem Sie die Systemvariable
replica_parallel_workers
auf einen Wert größer als setzen.0
In diesem Fall entspricht die Anzahl der Threads, die jedem Kanal zugewiesen sind, dem Wert dieser Variablen zuzüglich eines Koordinator-Threads zur Verwaltung der Anwender-Threads. -
Konfigurieren Sie die Replikationsfilter entsprechend, um Konflikte zu vermeiden. Um eine gesamte Datenbank auf einem Replikat in eine andere Datenbank zu replizieren, können Sie die
--replicate-rewrite-db
Option verwenden. Sie können beispielsweise alle Tabellen in Datenbank A auf einer Replikatinstanz in Datenbank B replizieren. Dieser Ansatz kann hilfreich sein, wenn alle Quellinstanzen dieselbe Schema-Benennungskonvention verwenden. Informationen zu dieser--replicate-rewrite-db
Option finden Sie in der SQL Dokumentation Meine Dokumentation unter Replica Server Options and Variables. -
Um Replikationsfehler zu vermeiden, sollten Sie vermeiden, in das Replikat zu schreiben. Es wurde empfohlen, den
read_only
Parameter auf Replikaten mit mehreren Quellen zu aktivieren, um Schreibvorgänge zu blockieren. Auf diese Weise können Replikationsprobleme vermieden werden, die durch widersprüchliche Schreibvorgänge verursacht werden. -
Um die Leistung von Lesevorgängen wie Sortiervorgängen und High-Load-Joins, die auf dem Replikat mit mehreren Quellen ausgeführt werden, zu erhöhen, sollten Sie die Verwendung optimierter Lesevorgänge in Betracht ziehen. RDS Diese Funktion kann bei Abfragen hilfreich sein, die von großen temporären Tabellen oder Sortierdateien abhängen. Weitere Informationen finden Sie unter Verbesserung der Abfrageleistung für RDS für MySQL mit Amazon RDS Optimized Reads.
-
Um die Verzögerung bei der Replikation zu minimieren und die Leistung eines Replikats mit mehreren Quellen zu verbessern, sollten Sie die Aktivierung optimierter Schreibvorgänge in Betracht ziehen. Weitere Informationen finden Sie unter Verbesserung der Schreibleistung mit RDS-optimierten Schreibvorgängen für MySQL.
-
Führen Sie Verwaltungsvorgänge (z. B. das Ändern der Konfiguration) jeweils auf einem Kanal durch und vermeiden Sie, dass Änderungen an mehreren Kanälen von mehreren Verbindungen aus vorgenommen werden. Diese Praktiken können zu Konflikten bei Replikationsvorgängen führen. Beispielsweise kann die gleichzeitige Ausführung von
rds_skip_repl_error_for_channel
rds_start_replication_for_channel
Prozeduren über mehrere Verbindungen dazu führen, dass Ereignisse auf einem anderen Kanal als beabsichtigt übersprungen werden. -
Sie können Backups auf einer Replikationsinstanz mit mehreren Quellen aktivieren und Daten aus dieser Instance in einen Amazon S3 S3-Bucket exportieren, um sie für langfristige Zwecke zu speichern. Es ist jedoch wichtig, auch Backups mit entsprechender Aufbewahrung für die einzelnen Quell-Instances zu konfigurieren. Informationen zum Exportieren von Snapshot-Daten nach Amazon S3 finden Sie unterExportieren von DB-Snapshot-Daten nach Amazon S3 for Amazon RDS.
-
Um den Lese-Workload auf ein Replikat mit mehreren Quellen zu verteilen, können Sie Read Replicas aus einem Replikat mit mehreren Quellen erstellen. Sie können diese Read Replicas AWS-Regionen je nach den Anforderungen Ihrer Anwendung an unterschiedlichen Orten platzieren. Weitere Informationen über Lesereplikate finden Sie unter Mit My SQL Read Replicas arbeiten.
Einschränkungen für die Replikation mit mehreren Quellen auf My RDS SQL
Die folgenden Einschränkungen gelten für die Replikation mit mehreren Quellen auf RDS für My: SQL
-
Derzeit SQL unterstützt RDS For My die Konfiguration von maximal 15 Kanälen für ein Replikat mit mehreren Quellen.
-
Eine Read Replica-Instanz kann nicht als Replikat mit mehreren Quellen konfiguriert werden.
-
Um die Multiquellen-Replikation RDS für My SQL Running Engine Version 5.7 zu konfigurieren, muss das Performance-Schema auf der Replikatinstanz aktiviert sein. Die Aktivierung des Leistungsschemas ist RDS für My SQL Running Engine Version 8.0 optional.
-
RDSFür My SQL Running Engine Version 5.7 gelten Replikationsfilter für alle Replikationskanäle. RDSFür My SQL Running Engine Version 8.0 können Sie Filter konfigurieren, die für alle Replikationskanäle oder für einzelne Kanäle gelten.
-
Durch das Wiederherstellen eines RDS Snapshots oder das Ausführen eines Point-in-time-Restore (PITR) werden keine Replikatkanalkonfigurationen mit mehreren Quellen wiederhergestellt.
-
Wenn Sie ein Read Replica eines Multiquellen-Replikats erstellen, werden nur Daten aus der Multiquell-Instance repliziert. Es stellt keine Kanalkonfiguration wieder her.
-
My unterstützt SQL nicht die Einrichtung einer unterschiedlichen Anzahl parallel Worker für jeden Kanal. Jeder Kanal erhält die gleiche Anzahl parallel Worker, basierend auf dem
replica_parallel_workers
Wert.
Die folgenden zusätzlichen Einschränkungen gelten, wenn Ihr Replikationsziel mit mehreren Quellen ein Multi-AZ-DB-Cluster ist:
Ein Kanal muss für eine Quelle RDS für Meine SQL Instance konfiguriert werden, bevor Schreibvorgänge auf diese Instance ausgeführt werden.
-
Für jede Quelle RDS für Meine SQL Instanz muss die GTID basierte Replikation aktiviert sein.
-
Ein Failover-Ereignis auf dem DB-Cluster entfernt die Konfiguration für die Replikation mit mehreren Quellen. Um diese Konfiguration wiederherzustellen, müssen die Konfigurationsschritte wiederholt werden.