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.
Konfigurieren der Multi-Source-Replikation von Amazon RDS für MySQL
Bei der Multi-Source-Replikation können Sie eine DB-Instance von Amazon RDS für MySQL als Replikat einrichten, das binäre Protokollereignisse aus mehreren Quell-DB-Instances von RDS für MySQL empfängt. Die Multi-Source-Replikation wird für DB-Instances von RDS für MySQL unterstützt, auf denen die folgenden Engine-Versionen ausgeführt werden:
-
Alle MySQL 8.4-Versionen
8.0.35 und höhere Nebenversionen
5.7.44 und höhere Nebenversionen
Informationen zur MySQL-Multi-Source-Replikation finden Sie unter MySQL-Multi-Source-Replikation
Anwendungsfälle für die Multi-Source-Replikation
Die folgenden Fälle eignen sich gut für die Verwendung der Multi-Source-Replikation in RDS für MySQL:
-
Anwendungen, die mehrere Shards auf separaten DB-Instances mit einem einzigen Shard zusammenführen oder kombinieren müssen.
-
Anwendungen, die Berichte anhand von Daten generieren müssen, die aus mehreren Quellen zusammengefasst wurden.
-
Anforderungen zum Erstellen zusammengefasster langfristiger Backups von Daten, die auf mehreren DB-Instances von RDS für MySQL verteilt sind.
Voraussetzungen für eine Multi-Source-Replikation
Damit Sie die Multi-Source-Replikation konfigurieren können, müssen die folgenden Voraussetzungen erfüllt sein.
Vergewissern Sie sich, dass für jede Quell-DB-Instance von RDS für MySQL automatische Backups aktiviert sind. Durch die Aktivierung automatischer Backups wird die binäre Protokollierung ermöglicht. Informationen zum Aktivieren von automatischen Backups finden Sie unter Aktivieren von automatisierten Backups.
Um Replikationsfehler zu vermeiden, wird empfohlen, Schreibvorgänge in die Quell-DB-Instances zu blockieren. Legen Sie hierzu den Parameter
read-onlyin einer benutzerdefinierten Parametergruppe, die mit der Quell-DB-Instance von RDS für MySQL verbunden ist, aufONfest. Sie können die AWS-Managementkonsole oder die AWS CLI verwenden, um eine neue benutzerdefinierte Parametergruppe zu erstellen oder eine vorhandene 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 die jeweilige Quell-DB-Instance die IP-Adresse der Instance zur Sicherheitsgruppe von Amazon Virtual Private Cloud (VPC) für die Multi-Source-DB-Instance hinzu. Um die IP-Adresse einer Quell-DB-Instance zu identifizieren, können Sie den Befehl
digausführen. Führen Sie den Befehl von einer Amazon-EC2-Instance aus, die sich in derselben VPC wie die Ziel-Multi-Source-DB-Instance befindet.RDS EndpointVerwenden Sie für die jeweilige Quell-DB-Instance einen Client, um eine Verbindung mit der DB-Instance herzustellen und einen Datenbankbenutzer mit den erforderlichen Berechtigungen für die Replikation zu erstellen, wie im folgenden Beispiel gezeigt.
CREATE USER 'repl_user' IDENTIFIED BY 'password'; GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user';Anmerkung
Ab MySQL 8.4 wurde die Berechtigung
REPLICATION SLAVEeingestellt und durchREPLICATION REPLICAersetzt. Verwenden Sie für MySQL 8.4 und höhere Versionen stattdessen die folgende Syntax:CREATE USER 'repl_user' IDENTIFIED BY 'password'; GRANT REPLICATION CLIENT, REPLICATION REPLICA ON *.* TO 'repl_user';
Konfigurieren von Multi-Source-Replikationskanälen auf DB-Instances von RDS für MySQL
Die Konfiguration von Multi-Source-Replikationskanälen ähnelt der Konfiguration einer Single-Source-Replikation. Bei der Multi-Source-Replikation aktivieren Sie zunächst die Binärprotokollierung für die Quell-Instance. Importieren Sie anschließend die Daten aus den Quellen in das Multi-Source-Replikat. Starten Sie danach die Replikation von jeder Quelle aus, indem Sie die Binärprotokollkoordinaten oder die automatische GTID-Positionierung verwenden.
Führen Sie die folgenden Schritte aus, um eine DB-Instance von RDS für MySQL als Multi-Source-Replikat von zwei oder mehr DB-Instances von RDS für MySQL zu konfigurieren.
Themen
Schritt 1: Importieren von Daten aus den Quell-DB-Instances in das Multi-Source-Replikat
Führen Sie die folgenden Schritte für jede Quell-DB-Instance aus.
Bevor Sie die Daten einer Quelle in das Multi-Source-Replikat importieren, ermitteln Sie die aktuelle Binärprotokolldatei und Position, indem Sie den Befehl SHOW MASTER
STATUS ausführen. Notieren Sie sich diese Details zwecks Verwendung im nächsten Schritt. In dieser Beispielausgabe ist die Datei mysql-bin-changelog.000031 und die Position 107.
Anmerkung
Ab MySQL 8.4 wurde der Befehl SHOW MASTER STATUS nicht mehr verwendet und durch SHOW BINARY LOG STATUS ersetzt. Verwenden Sie für MySQL 8.4 und höhere Versionen stattdessen SHOW BINARY LOG STATUS.
File Position ----------------------------------- mysql-bin-changelog.000031 107 -----------------------------------
Kopieren Sie nun die Datenbank von der Quell-DB-Instance mithilfe von mysqldump in das Multi-Source-Replikat, wie im folgenden Beispiel aufgeführt.
mysqldump --databases database_name \ --single-transaction \ --compress \ --order-by-primary \ -uRDS_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 in der Quell-DB-Instance auf OFF festlegen.
Schritt 2: Starten der Replikation von den Quell-DB-Instances in das Multi-Source-Replikat
Verwenden Sie für die jeweilige Quell-DB-Instance die Anmeldeinformationen des Administratorbenutzers, um eine Verbindung mit der Instance herzustellen, und führen Sie die folgenden zwei gespeicherten Prozeduren aus. Mit diesen gespeicherten Prozeduren wird die Replikation auf einem Kanal konfiguriert und dann gestartet. In diesem Beispiel wird der Name und die Position der Binärprotokolldatei 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, 1, 'channel_1'); CALL mysql.rds_start_replication_for_channel('channel_1');
Weitere Informationen zur Verwendung dieser und anderer gespeicherten Prozeduren zum Einrichten und Verwalten der Replikationskanäle finden Sie unter Verwalten der Multi-Source-Replikation.
Verwenden von Filtern bei der Multi-Source-Replikation
Sie können Replikationsfilter verwenden, um festzulegen, welche Datenbanken und Tabellen mit einem Lesereplikat 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 Konfigurieren von Replikationsfiltern mit MySQL.
Bei der Multi-Source-Replikation können Sie Replikationsfilter global oder auf Kanalebene konfigurieren. Die Filterung auf Kanalebene ist nur für unterstützte DB-Instances verfügbar, auf denen Version 8.0 oder Version 8.4 ausgeführt wird. In den folgenden Beispielen ist die Konfiguration von Filtern global oder auf Kanalebene angegeben.
Beachten Sie die folgenden Anforderungen und das folgende Verhalten bei der Filterung von Multi-Source-Replikationen:
Die Kanalnamen müssen in invertierte Anführungszeichen (``) gesetzt werden.
Wenn Sie die Replikationsfilter in der Parametergruppe ändern, werden die Multi-Source-Replikate von
sql_threadfür alle Kanäle mit den Aktualisierungen neu gestartet, um die Änderungen dynamisch zu übernehmen. Wenn eine Aktualisierung einen globalen Filter einbezieht, werden alle Replikationskanäle im Ausführungszustand neu gestartet.Alle globalen Filter werden vor jeglichen kanalspezifischen Filtern angewendet.
Wenn ein Filter global und auf Kanalebene angewendet wird, wird nur der Filter auf Kanalebene übernommen. Wenn die Filter beispielsweise
replicate_ignore_db="db1,`channel_22`:db2"lauten, wird der aufdb1festgelegte Parameterreplicate_ignore_dbauf alle Kanäle angewendet, mit Ausnahme vonchannel_22, und nurchannel_22ignoriert Änderungen vondb2.
Beispiel 1: Festlegen eines globalen Filters
Im folgenden Beispiel wird die Datenbank temp_data in jedem Kanal von der Replikation ausgeschlossen.
Für 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: Festlegen eines Filters auf Kanalebene
Im folgenden Beispiel sind Änderungen der Datenbank sample22 nur im Kanal channel_22 enthalten. Ebenso sind Änderungen der Datenbank sample99 nur im Kanal channel_99 enthalten.
Für 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"
Überwachen von Multi-Source-Replikationskanälen
Sie können einzelne Kanäle in einem Multi-Source-Replikat mithilfe der folgenden Methoden überwachen:
Um den Status aller Kanäle oder eines bestimmten Kanals zu überwachen, stellen Sie eine Verbindung mit dem Multi-Source-Replikat her und führen Sie den Befehl
SHOW REPLICA STATUSoderSHOW REPLICA STATUS FOR CHANNEL 'aus. Weitere Informationen finden Sie unter Überprüfen des Replikationsstatuschannel_name'in der MySQL-Dokumentation. Verwenden Sie die RDS-Ereignisbenachrichtigung, um eine Benachrichtigung zu erhalten, wenn ein Replikationskanal gestartet, gestoppt oder entfernt wird. Weitere Informationen finden Sie unter Arbeiten mit Amazon-RDS-Ereignisbenachrichtigungen.
Um die Verzögerung für einen bestimmten Kanal zu überwachen, überprüfen Sie dessen Metrik
ReplicationChannelLag. Datenpunkte für diese Metrik mit einem Zeitraum von 60 Sekunden (1 Minute) stehen 15 Tage lang zur Verfügung. Zum Ermitteln der Replikationskanalverzögerung für einen Kanal verwenden Sie die Instance-ID und den Namen des Replikationskanals. 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 Überwachen von Amazon RDS-Metriken mit Amazon CloudWatch.
Überlegungen und bewährte Methoden bei der Multi-Source-Replikation
Bevor Sie die Multi-Source-Replikation von RDS für MySQL verwenden, machen Sie sich mit den folgenden Faktoren und bewährten Methoden vertraut:
-
Vergewissern Sie sich, dass eine als Multi-Source-Replikat konfigurierte DB-Instance über ausreichende Ressourcen wie Durchsatz, Arbeitsspeicher, CPU und IOPS verfügt, um den Workload mehrerer Quell-Instances zu verarbeiten.
-
Überwachen Sie die Ressourcennutzung für das Multi-Source-Replikat regelmäßig und passen Sie die Speicher- oder Instance-Konfiguration an, um den Workload zu verarbeiten, ohne die Ressourcen zu belasten.
-
Sie können die Multi-Thread-Replikation für ein Multi-Source-Replikat konfigurieren, indem Sie die Systemvariable
replica_parallel_workersauf einen Wert größer als0festlegen. 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 in eine andere Datenbank eines Replikats zu replizieren, können Sie die Option
--replicate-rewrite-dbverwenden. Sie können beispielsweise alle Tabellen von Datenbank A in Datenbank B einer Replikat-Instance replizieren. Diese Vorgehensweise kann hilfreich sein, wenn alle Quell-Instances dieselbe Schema-Benennungskonvention verwenden. Informationen zur Option--replicate-rewrite-dbfinden Sie unter Optionen und Variablen für Replikatserverin der MySQL-Dokumentation. -
Um Replikationsfehler zu vermeiden, sollten Sie nicht in das Replikat schreiben. Es wird empfohlen, den Parameter
read_onlyin Multi-Source-Replikaten 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 Sortierungen und Verknüpfungen mit hoher Auslastung zu verbessern, die auf dem Multi-Source-Replikat ausgeführt werden, erwägen Sie die Verwendung von RDS-optimierten Lesevorgängen. 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 Replikationsverzögerung zu minimieren und die Leistung eines Multi-Source-Replikats zu verbessern, erwägen Sie die Aktivierung optimierter Schreibvorgänge. Weitere Informationen finden Sie unter Verbesserung der Schreibleistung mit RDS-optimierten Schreibvorgängen für MySQL.
-
Führen Sie Verwaltungsvorgänge (z. B. Konfigurationsänderungen) jeweils auf einem Kanal durch und vermeiden Sie es, an mehreren Kanälen von mehreren Verbindungen aus Änderungen vorzunehmen. Diese Vorgehensweisen können zu Konflikten bei Replikationsvorgängen führen. Beispielsweise kann die gleichzeitige Ausführung der Prozeduren
rds_skip_repl_error_for_channelundrds_start_replication_for_channelvon mehreren Verbindungen aus dazu führen, dass Ereignisse auf einem anderen Kanal als vorgesehen übersprungen werden. -
Sie können Backups auf einer Multi-Source-Replikations-Instance aktivieren und Daten dieser Instance in einen Amazon-S3-Bucket exportieren, um sie für langfristige Zwecke zu speichern. Es ist jedoch wichtig, auch Backups mit entsprechender Aufbewahrungsdauer für die einzelnen Quell-Instances zu konfigurieren. Informationen zum Exportieren von Snapshot-Daten nach Amazon S3 finden Sie unter Exportieren von DB-Snapshot-Daten nach Amazon S3 für Amazon RDS.
-
Um den Workload des Lesevorgangs auf ein Multi-Source-Replikat zu verteilen, können Sie Lesereplikate eines Multi-Source-Replikats erstellen. Je nach den Anforderungen Ihrer Anwendung befinden sich diese Lesereplikate in verschiedenen AWS-Regionen. Weitere Informationen über Lesereplikate finden Sie unter Arbeiten mit MySQL-Lesereplikaten.
Einschränkungen für die Multi-Source-Replikation bei RDS für MySQL
Folgende Einschränkungen gelten für die Multi-Source-Replikation bei RDS für MySQL:
-
Derzeit unterstützt RDS für MySQL die Konfiguration von maximal 15 Kanälen für ein Multi-Source-Replikat.
-
Eine Lesereplikat-Instance kann nicht als Multi-Source-Replikat konfiguriert werden.
-
Um die Multi-Source-Replikation bei RDS für MySQL zu konfigurieren, auf dem Engine-Version 5.7 ausgeführt wird, muss das Leistungsschema auf der Replikat-Instance aktiviert sein. Die Aktivierung des Leistungsschemas ist bei RDS für MySQL mit Engine-Version 8.0 oder 8.4 optional.
-
Bei RDS für MySQL mit Engine-Version 5.7 gelten Replikationsfilter für alle Replikationskanäle. Bei RDS für MySQL mit Engine-Version 8.0 oder 8.4 können Sie Filter konfigurieren, die für alle Replikationskanäle oder für einzelne Kanäle gelten.
-
Durch die Wiederherstellung eines RDS-Snapshots oder eine Wiederherstellung zu einem bestimmten Zeitpunkt (PITR) werden Konfigurationen eines Multi-Source-Replikatkanals nicht wiederhergestellt.
-
Wenn Sie ein Lesereplikat eines Multi-Source-Replikats erstellen, werden nur Daten der Multi-Source-Instance repliziert. Kanalkonfigurationen werden nicht wiederhergestellt.
-
MySQL unterstützt nicht die Einrichtung einer unterschiedlichen Anzahl paralleler Worker des jeweiligen Kanals. Basierend auf dem Wert
replica_parallel_workerserhält der Kanal die gleiche Anzahl paralleler Worker.
Die folgenden zusätzlichen Einschränkungen gelten, wenn das Multi-Source-Replikationsziel ein Multi-AZ-DB-Cluster ist:
Ein Kanal muss für eine Quell-Instance von RDS für MySQL konfiguriert werden, bevor Schreibvorgänge auf diese Instance ausgeführt werden.
-
Für die jeweilige Quell-Instance von RDS für MySQL muss die GTID-basierte Replikation aktiviert sein.
-
Durch ein Failover-Ereignis auf dem DB-Cluster wird die Konfiguration der Multi-Source-Replikation entfernt. Um diese Konfiguration wiederherzustellen, müssen die Konfigurationsschritte wiederholt werden.