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.
Replikation
Die folgenden gespeicherten Prozeduren steuern, wie Transaktionen aus einer externen Datenbank in RDS für MySQL oder aus Aurora für MySQL in eine externen Datenbank repliziert werden. Weitere Informationen zur Verwendung der Replikation basierend auf globalen Transaktionskennungen (GTIDs) mit RDS für MySQL finden Sie unter Verwenden der GTID-basierten Replikation für Amazon RDS for MySQL.
Themen
- mysql.rds_next_master_log
- mysql.rds_reset_external_master
- mysql.rds_set_external_master
- mysql.rds_set_external_master_with_auto_position
- mysql.rds_set_external_master_with_delay
- mysql.rds_set_master_auto_position
- mysql.rds_set_source_delay
- mysql.rds_skip_transaction_with_gtid
- mysql.rds_skip_repl_error
- mysql.rds_start_replication
- mysql.rds_start_replication_until
- mysql.rds_start_replication_until_gtid
- mysql.rds_stop_replication
mysql.rds_next_master_log
Ändert die Protokollposition der Quelldatenbankinstance in den Anfang des nächsten Binärprotokolls auf der Quelldatenbankinstance. Verwenden Sie diese Prozedur nur dann, wenn Sie für ein Lesereplikat bei der Replikation einen I/O-Fehler mit der Fehlernummer 1236 erhalten.
Syntax
CALL mysql.rds_next_master_log(
curr_master_log
);
Parameter
-
curr_master_log
-
Der Index der aktuellen Master-Protokolldatei. Der Index ist im Dateinamen codiert. Eine aktuelle Datei mit dem Namen
mysql-bin-changelog.012345
hat beispielsweise den Index 12345. Um den Namen der aktuellen Master-Protokolldatei zu ermitteln, führen Sie den BefehlSHOW REPLICA STATUS
aus. Sie finden den Namen anschließend im FeldMaster_Log_File
.Anmerkung
Frühere Versionen von MySQL verwenden
SHOW SLAVE STATUS
anstelle vonSHOW REPLICA STATUS
. Wenn Sie vor 8.0.23 eine MySQL-Version verwenden, verwenden SiSHOW SLAVE STATUS
.
Nutzungshinweise
Die Prozedur mysql.rds_next_master_log
muss vom Hauptbenutzer ausgeführt werden.
Warnung
mysql.rds_next_master_log
sollte nur dann aufgerufen werden, wenn die Replikation nach einem Failover einer als Replikationsquelle fungierenden Multi-AZ-DB-Instance fehlschlägt und das Feld Last_IO_Errno
im von SHOW REPLICA STATUS
zurückgegebenen Ergebnis einen I/O-Fehler mit der Nummer 1236 meldet.
Ein Aufruf von mysql.rds_next_master_log
kann zu Datenverlust im Lesereplikat führen, falls Transaktionen in der Quell-Instance nicht in das binäre Protokoll auf der Festplatte geschrieben wurden, bevor das Failover-Ereignis auftrat.
Sie können durch Festlegung der Quell-Instance-Parameter sync_binlog
und innodb_support_xa
auf 1
die Gefahr, dass dies geschieht, verringern, allerdings kann diese Maßnahme die Leistung verringern. Weitere Informationen finden Sie unter Fehlerbehebung für ein Problem mit einer MySQL Read Replica.
Beispiele
Angenommen, die Replikation schlägt auf einer RDS-für-MySQL- -Read Replica fehl. Die Ausführung von SHOW REPLICA STATUS\G
für das Lesereplikat gibt das folgende Ergebnis zurück:
*************************** 1. row *************************** Replica_IO_State: Source_Host: myhost.XXXXXXXXXXXXXXX.rr-rrrr-1.rds.amazonaws.com Source_User: MasterUser Source_Port: 3306 Connect_Retry: 10 Source_Log_File: mysql-bin-changelog.012345 Read_Source_Log_Pos: 1219393 Relay_Log_File: relaylog.012340 Relay_Log_Pos: 30223388 Relay_Source_Log_File: mysql-bin-changelog.012345 Replica_IO_Running: No Replica_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Source_Log_Pos: 30223232 Relay_Log_Space: 5248928866 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Source_SSL_Allowed: No Source_SSL_CA_File: Source_SSL_CA_Path: Source_SSL_Cert: Source_SSL_Cipher: Source_SSL_Key: Seconds_Behind_Master: NULL Source_SSL_Verify_Server_Cert: No Last_IO_Errno: 1236 Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position; the first event 'mysql-bin-changelog.013406' at 1219393, the last event read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4, the last byte read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4.' Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Source_Server_Id: 67285976
Den Angeben im Feld Last_IO_Errno
ist zu entnehmen, dass die Instance eine I/O-Fehlermeldung mit der Nummer 1236 erhalten hat. Dem Feld Master_Log_File
ist zudem zu entnehmen, dass die betroffene Protokolldatei den Namen mysql-bin-changelog.012345
aufweist und ihr Index folglich 12345
lautet. Zur Behebung des Fehlers können Sie dann mysql.rds_next_master_log
mit dem folgenden Parameter aufrufen:
CALL mysql.rds_next_master_log(12345);
Anmerkung
Frühere Versionen von MySQL verwenden SHOW SLAVE STATUS
anstelle von SHOW REPLICA STATUS
. Wenn Sie vor 8.0.23 eine MySQL-Version verwenden, verwenden Si SHOW SLAVE STATUS
.
mysql.rds_reset_external_master
Rekonfiguriert eine RDS-für-MySQL-DB-Instance, sodass sie keine Read Replica einer Instance von MySQL außerhalb von Amazon RDS ist.
Wichtig
Um diese Prozedur auszuführen, muss autocommit
aktiviert sein. Um dies zu aktivieren, setzen Sie den autocommit
-Parameter auf 1
. Weitere Informationen zum Ändern von Parametern finden Sie unter Ändern von Parametern in einer DB-Parametergruppe.
Syntax
CALL mysql.rds_reset_external_master;
Nutzungshinweise
Die Prozedur mysql.rds_reset_external_master
muss vom Hauptbenutzer ausgeführt werden. Diese Prozedur muss auf der MySQL-DB-Instance ausgeführt werden, die nicht mehr Lesereplikat einer außerhalb von Amazon RDS ausgeführten MySQL-Instance sein soll.
Anmerkung
Wir empfehlen, Lesereplikate zur Verwaltung der Replikation zwischen zwei Amazon RDS-DB-Instances zu verwenden, sofern dies möglich ist. In diesem Fall sollten Sie nur diese und andere replikationsbezogene gespeicherte Prozeduren verwenden. Bei dieser Vorgehensweise sind komplexere Replikationstopologien zwischen Amazon RDS-DB-Instances möglich. Wir bieten diese gespeicherten Prozeduren hauptsächlich an, um die Replikation mit MySQL-Instances zu ermöglichen, die außerhalb von Amazon RDS ausgeführt werden. Informationen zur Verwaltung der Replikation zwischen Amazon RDS-DB-Instances finden Sie unter Arbeiten mit DB-Instance-Lesereplikaten.
Weitere Informationen zur Verwendung von Replikation für den Import von Daten aus einer außerhalb von Amazon RDS ausgeführten MySQL-Instance finden Sie unter Konfigurieren der Replikation der Binärprotokolldateiposition mit einer externen Quell-Instance.
mysql.rds_set_external_master
Konfiguriert eine RDS-für-MySQL-Instance für die Verwendung als Read Replica einer außerhalb von Amazon RDS ausgeführten MySQL-Instance.
Wichtig
Um diese Prozedur auszuführen, muss autocommit
aktiviert sein. Um dies zu aktivieren, setzen Sie den autocommit
-Parameter auf 1
. Weitere Informationen zum Ändern von Parametern finden Sie unter Ändern von Parametern in einer DB-Parametergruppe.
Anmerkung
Sie können die gespeicherte Prozedur mysql.rds_set_external_master_with_delay zum Konfigurieren einer externer Quelldatenbank-Instance und einer verzögerten Replikation verwenden.
Syntax
CALL mysql.rds_set_external_master (
host_name
,host_port
,replication_user_name
,replication_user_password
,mysql_binary_log_file_name
,mysql_binary_log_file_location
,ssl_encryption
);
Parameter
-
host_name
-
Der Hostname bzw. die IP-Adresse der außerhalb von Amazon RDS ausgeführten MySQL-Instance, die als Quelldatenbank-Instance festgelegt werden soll.
-
host_port
-
Der Port, der von der außerhalb von Amazon RDS ausgeführten MySQL-Instance verwendet wird, die als Quelldatenbank-Instance konfiguriert werden soll. Wenn Ihre Netzwerkkonfiguration die Replikation über Secure Shell (SSH)-Ports einschließt, welche die Portnummer konvertiert, geben Sie für diesen Parameter die von SSH offengelegte Portnummer an.
-
replication_user_name
-
Die ID eines Benutzers mit den Berechtigungen
REPLICATION CLIENT
undREPLICATION SLAVE
auf der MySQL-Instance, die extern zu Amazon RDS ausgeführt wird. Es wird empfohlen, ein Benutzerkonto bereitzustellen, das ausschließlich für die Replikation mit der externen Instance genutzt wird. -
replication_user_password
-
Das zu dem in
replication_user_name
angegebenen User-ID gehörige Passwort. -
mysql_binary_log_file_name
-
Der Name des Binärprotokolls auf der Quelldatenbank-Instance, die die Replikationsinformationen enthält.
-
mysql_binary_log_file_location
-
Die Position in der binären Protokolldatei
mysql_binary_log_file_name
, ab der bei der Replikation die Replikationsinformationen gelesen werden.Sie können den Namen und den Speicherort der Binlog-Datei ermitteln, indem Sie
SHOW MASTER STATUS
auf der Quelldatenbankinstanz starten. -
ssl_encryption
-
Ein Wert, der angibt, ob die SSL-Verschlüsselung (Secure Socket Layer) für die Replikationsverbindung verwendet wird. 1 = SSL-Verschlüsselung, 0 = keine Verschlüsselung. Der Standardwert ist 0.
Anmerkung
Die Option
MASTER_SSL_VERIFY_SERVER_CERT
wird nicht unterstützt. Diese Option ist auf 0 gesetzt, was bedeutet, dass die Verbindung verschlüsselt ist, aber die Zertifikate nicht überprüft werden.
Nutzungshinweise
Die Prozedur mysql.rds_set_external_master
muss vom Hauptbenutzer ausgeführt werden. Diese Prozedur muss auf der MySQL-DB-Instance ausgeführt werden, die als Lesereplikat einer außerhalb von Amazon RDS ausgeführten MySQL-Instance konfiguriert werden soll.
Vor der Ausführung von mysql.rds_set_external_master
müssen Sie zuerst die außerhalb von Amazon RDS ausgeführte MySQL-Instance für die Verwendung als Quelldatenbank-Instance konfigurieren. Um eine Verbindung zu der außerhalb von Amazon RDS ausgeführten MySQL-Instance herzustellen, müssen Sie Werte für replication_user_name
und replication_user_password
bereitstellen, die auf einen Replikationsbenutzer verweisen, der über die Berechtigungen REPLICATION CLIENT
und REPLICATION SLAVE
für die externe MySQL-Instance verfügt.
So konfigurieren Sie eine externe Instance von MySQL als Quelldatenbank-Instance
Verbinden Sie sich mithilfe eines MySQL-Clients Ihrer Wahl mit der externen MySQL-Instance und erstellen Sie ein Benutzerkonto, das für die Replikation verwendet werden soll. Im Folgenden wird ein Beispiel gezeigt.
MySQL 5.7
CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY '
password
';MySQL 8.0
CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED WITH mysql_native_password BY '
password
';Anmerkung
Geben Sie aus Sicherheitsgründen ein anderes Passwort als hier angegeben an.
-
Erteilen Sie innerhalb der externen MySQL-Instance Ihrem Replikationsbenutzer die Berechtigungen
REPLICATION CLIENT
undREPLICATION SLAVE
. Im folgenden Beispiel werden dem Benutzer 'repl_user' für Ihre Domäne die BerechtigungenREPLICATION CLIENT
undREPLICATION SLAVE
für alle Datenbanken erteilt.MySQL 5.7
GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY '
password
';MySQL 8.0
GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';
Um die verschlüsselte Replikation zu verwenden, konfigurieren Sie die Quelldatenbank-Instance für die Verwendung von SSL-Verbindungen.
Anmerkung
Wir empfehlen, Lesereplikate zur Verwaltung der Replikation zwischen zwei Amazon RDS-DB-Instances zu verwenden, sofern dies möglich ist. In diesem Fall sollten Sie nur diese und andere replikationsbezogene gespeicherte Prozeduren verwenden. Bei dieser Vorgehensweise sind komplexere Replikationstopologien zwischen Amazon RDS-DB-Instances möglich. Wir bieten diese gespeicherten Prozeduren hauptsächlich an, um die Replikation mit MySQL-Instances zu ermöglichen, die außerhalb von Amazon RDS ausgeführt werden. Informationen zur Verwaltung der Replikation zwischen Amazon RDS-DB-Instances finden Sie unter Arbeiten mit DB-Instance-Lesereplikaten.
Nachdem Sie mysql.rds_set_external_master
aufgerufen haben, um eine Amazon RDS-DB-Instance als Lesereplikat zu konfigurieren, können Sie mysql.rds_start_replication für das Lesereplikat aufrufen, um die Replikation zu starten Zudem haben Sie die Möglichkeit, mit einem Aufruf von mysql.rds_reset_external_master die Lesereplikat-Konfiguration zu entfernen.
Beim Aufrufen von mysql.rds_set_external_master
werden von Amazon RDS Uhrzeit, Benutzer und eine Aktion von set master
in den Tabellen mysql.rds_history
und mysql.rds_replication_status
protokolliert.
Beispiele
Bei Ausführung innerhalb einer MySQL-DB-Instance konfiguriert das folgende Beispiel diese DB-Instance für die Verwendung als Lesereplikat einer außerhalb von Amazon RDS ausgeführten MySQL-Instance.
call mysql.rds_set_external_master( 'Externaldb.some.com', 3306, 'repl_user', '
password
', 'mysql-bin-changelog.0777', 120, 0);
mysql.rds_set_external_master_with_auto_position
Konfiguriert eine RDS for MySQL-DB-Instance für die Verwendung als Read Replica einer außerhalb von Amazon RDS ausgeführten MySQL-Instance. Diese Prozedur konfiguriert auch die verzögerte Replikation sowie die auf globalen Transaktionskennungen (GTIDs) basierende Replikation.
Wichtig
Um diese Prozedur auszuführen, muss autocommit
aktiviert sein. Um dies zu aktivieren, setzen Sie den autocommit
-Parameter auf 1
. Weitere Informationen zum Ändern von Parametern finden Sie unter Ändern von Parametern in einer DB-Parametergruppe.
Syntax
CALL mysql.rds_set_external_master_with_auto_position (
host_name
,host_port
,replication_user_name
,replication_user_password
,ssl_encryption
,delay
);
Parameter
-
host_name
-
Der Hostname bzw. die IP-Adresse der außerhalb von Amazon RDS ausgeführten MySQL-Instance, die als Quelldatenbank-Instance festgelegt werden soll.
-
host_port
-
Der Port, der von der außerhalb von Amazon RDS ausgeführten MySQL-Instance verwendet wird, die als Quelldatenbank-Instance konfiguriert werden soll. Wenn Ihre Netzwerkkonfiguration die Replikation über Secure Shell (SSH)-Ports einschließt, welche die Portnummer konvertiert, geben Sie für diesen Parameter die von SSH offengelegte Portnummer an.
-
replication_user_name
-
Die ID eines Benutzers mit den Berechtigungen
REPLICATION CLIENT
undREPLICATION SLAVE
auf der MySQL-Instance, die extern zu Amazon RDS ausgeführt wird. Es wird empfohlen, ein Benutzerkonto bereitzustellen, das ausschließlich für die Replikation mit der externen Instance genutzt wird. -
replication_user_password
-
Das zu dem in
replication_user_name
angegebenen User-ID gehörige Passwort. -
ssl_encryption
-
Ein Wert, der angibt, ob die SSL-Verschlüsselung (Secure Socket Layer) für die Replikationsverbindung verwendet wird. 1 = SSL-Verschlüsselung, 0 = keine Verschlüsselung. Der Standardwert ist 0.
Anmerkung
Die Option
MASTER_SSL_VERIFY_SERVER_CERT
wird nicht unterstützt. Diese Option ist auf 0 gesetzt, was bedeutet, dass die Verbindung verschlüsselt ist, aber die Zertifikate nicht überprüft werden. -
Verzögerung
-
Die Mindestanzahl von Sekunden, um die Replikation von der Quelldatenbank-Instance zu verzögern.
Die Obergrenze für diesen Parameter beträgt einen Tag (86 400 Sekunden).
Nutzungshinweise
Die Prozedur mysql.rds_set_external_master_with_auto_position
muss vom Hauptbenutzer ausgeführt werden. Diese Prozedur muss auf der MySQL-DB-Instance ausgeführt werden, die als Lesereplikat einer außerhalb von Amazon RDS ausgeführten MySQL-Instance konfiguriert werden soll.
Diese Prozedur wird für alle RDS für MySQL 5.7 und RDS für MySQL 8.0.26 und höhere 8.0-Versionen unterstützt.
Vor der Ausführung von mysql.rds_set_external_master_with_auto_position
müssen Sie zuerst die außerhalb von Amazon RDS ausgeführte MySQL-Instance für die Verwendung als Quelldatenbank-Instance konfigurieren. Um eine Verbindung zu der außerhalb von Amazon RDS ausgeführten MySQL-Instance herzustellen, müssen Sie Werte für replication_user_name
und replication_user_password
angeben. Diese Werte müssen einen Replikationsbenutzer mit den Berechtigungen REPLICATION CLIENT
und REPLICATION SLAVE
für die externe MySQL-Instance angeben.
So konfigurieren Sie eine externe Instance von MySQL als Quelldatenbank-Instance
Verbinden Sie sich mithilfe eines MySQL-Clients Ihrer Wahl mit der externen MySQL-Instance und erstellen Sie ein Benutzerkonto, das für die Replikation verwendet werden soll. Im Folgenden wird ein Beispiel gezeigt.
CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
-
Erteilen Sie innerhalb der externen MySQL-Instance Ihrem Replikationsbenutzer die Berechtigungen
REPLICATION CLIENT
undREPLICATION SLAVE
. Im folgenden Beispiel werden dem BenutzerREPLICATION CLIENT
für Ihre Domäne die BerechtigungenREPLICATION SLAVE
und'repl_user'
für alle Datenbanken erteilt.GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
Weitere Informationen finden Sie unter Konfigurieren der Replikation der Binärprotokolldateiposition mit einer externen Quell-Instance.
Anmerkung
Wir empfehlen, Lesereplikate zur Verwaltung der Replikation zwischen zwei Amazon RDS-DB-Instances zu verwenden, sofern dies möglich ist. In diesem Fall sollten Sie nur diese und andere replikationsbezogene gespeicherte Prozeduren verwenden. Bei dieser Vorgehensweise sind komplexere Replikationstopologien zwischen Amazon RDS-DB-Instances möglich. Wir bieten diese gespeicherten Prozeduren hauptsächlich an, um die Replikation mit MySQL-Instances zu ermöglichen, die außerhalb von Amazon RDS ausgeführt werden. Informationen zur Verwaltung der Replikation zwischen Amazon RDS-DB-Instances finden Sie unter Arbeiten mit DB-Instance-Lesereplikaten.
Nachdem Sie mysql.rds_set_external_master_with_auto_position
aufgerufen haben, um eine Amazon RDS-DB-Instance als Lesereplikat zu konfigurieren, können Sie mysql.rds_start_replication für das Lesereplikat aufrufen, um die Replikation zu starten Zudem haben Sie die Möglichkeit, mit einem Aufruf von mysql.rds_reset_external_master die Lesereplikat-Konfiguration zu entfernen.
Beim Aufruf von mysql.rds_set_external_master_with_auto_position
zeichnet Amazon RDS die Uhrzeit, den Benutzer und eine set master
-Aktion in den Tabellen mysql.rds_history
und mysql.rds_replication_status
auf.
Für die Notfallwiederherstellung können Sie diese Prozedur mit der gespeicherten Prozedur mysql.rds_start_replication_until oder mysql.rds_start_replication_until_gtid verwenden. Um alle Änderungen bis zu einem Zeitpunkt unmittelbar vor Eintreten des Notfalls in einem verzögerten Lesereplikat wiederherzustellen, können Sie die Prozedur mysql.rds_set_external_master_with_auto_position
ausführen. Nachdem die Prozedur mysql.rds_start_replication_until_gtid
die Replikation gestoppt hat, können Sie das Lesereplikat zur neuen primären DB-Instance hochstufen (siehe die Anleitung unter Hochstufen eines Lesereplikats zur eigenständigen DB-Instance).
Um die Prozedur mysql.rds_rds_start_replication_until_gtid
verwenden zu können, muss die GTID-basierte Replikation aktiviert sein. Wenn Sie eine bestimmte GTID-basierte Transaktion überspringen möchten, von der Sie wissen, dass sie einen Notfall verursacht, können Sie die gespeicherte Prozedur mysql.rds_skip_transaction_with_gtid verwenden. Weitere Informationen über das Arbeiten mit der GTID-basierten Replikation finden Sie unter Verwenden der GTID-basierten Replikation für Amazon RDS for MySQL.
Beispiele
Bei Ausführung innerhalb einer MySQL-DB-Instance konfiguriert das folgende Beispiel diese DB-Instance für die Verwendung als Lesereplikat einer außerhalb von Amazon RDS ausgeführten MySQL-Instance. Die minimale Replikationsverzögerung wird für die MySQL-DB-Instance auf eine Stunde (3600 Sekunden) gesetzt. Eine Änderung an der MySQL-Quelldatenbankinstance, die außerhalb von Amazon RDS ausgeführt wird, wird frühestens nach einer Stunde in das Lesereplikat der MySQL-DB-Instance übernommen.
call mysql.rds_set_external_master_with_auto_position( 'Externaldb.some.com', 3306, 'repl_user', 'SomePassW0rd', 0, 3600);
mysql.rds_set_external_master_with_delay
Konfiguriert eine RDS for MySQL-DB-Instance für die Verwendung als Read Replica einer außerhalb von Amazon RDS ausgeführten MySQL-Instance und konfiguriert die verzögerte Replikation.
Wichtig
Um diese Prozedur auszuführen, muss autocommit
aktiviert sein. Um dies zu aktivieren, setzen Sie den autocommit
-Parameter auf 1
. Weitere Informationen zum Ändern von Parametern finden Sie unter Ändern von Parametern in einer DB-Parametergruppe.
Syntax
CALL mysql.rds_set_external_master_with_delay (
host_name
,host_port
,replication_user_name
,replication_user_password
,mysql_binary_log_file_name
,mysql_binary_log_file_location
,ssl_encryption
,delay
);
Parameter
-
host_name
-
Der Hostname bzw. die IP-Adresse der außerhalb von Amazon RDS ausgeführten MySQL-Instance, die als Replikations-Master festgelegt werden soll
-
host_port
-
Der Port, der von der außerhalb von Amazon RDS ausgeführten MySQL-Instance verwendet wird, die als Quelldatenbank-Instance konfiguriert werden soll. Wenn Ihre Netzwerkkonfiguration die Replikation von SSH-Ports einschließt, welche die Portnummer konvertiert, geben Sie für diesen Parameter die von SSH offengelegte Portnummer an.
-
replication_user_name
-
Die ID eines Benutzers mit den Berechtigungen
REPLICATION CLIENT
undREPLICATION SLAVE
auf der MySQL-Instance, die extern zu Amazon RDS ausgeführt wird. Es wird empfohlen, ein Benutzerkonto bereitzustellen, das ausschließlich für die Replikation mit der externen Instance genutzt wird. -
replication_user_password
-
Das zu dem in
replication_user_name
angegebenen User-ID gehörige Passwort. -
mysql_binary_log_file_name
-
Der Name des Binärprotokolls auf der Quelldatenbank-Instance, die die Replikationsinformationen enthält.
-
mysql_binary_log_file_location
-
Die Position innerhalb der für
mysql_binary_log_file_name
angegebenen binären Protokolldatei, ab der bei der Replikation die Replikationsinformationen gelesen werden.Sie können den Namen und den Speicherort der Binlog-Datei ermitteln, indem Sie
SHOW MASTER STATUS
auf der Quelldatenbankinstanz starten. -
ssl_encryption
-
Ein Wert, der angibt, ob die SSL-Verschlüsselung (Secure Socket Layer) für die Replikationsverbindung verwendet wird. 1 = SSL-Verschlüsselung, 0 = keine Verschlüsselung. Der Standardwert ist 0.
Anmerkung
Die Option
MASTER_SSL_VERIFY_SERVER_CERT
wird nicht unterstützt. Diese Option ist auf 0 gesetzt, was bedeutet, dass die Verbindung verschlüsselt ist, aber die Zertifikate nicht überprüft werden. -
Verzögerung
-
Die Mindestanzahl von Sekunden, um die Replikation von der Quelldatenbank-Instance zu verzögern.
Die Obergrenze für diesen Parameter beträgt einen Tag (86 400 Sekunden).
Nutzungshinweise
Die Prozedur mysql.rds_set_external_master_with_delay
muss vom Hauptbenutzer ausgeführt werden. Diese Prozedur muss auf der MySQL-DB-Instance ausgeführt werden, die als Lesereplikat einer außerhalb von Amazon RDS ausgeführten MySQL-Instance konfiguriert werden soll.
Vor der Ausführung von mysql.rds_set_external_master_with_delay
müssen Sie zuerst die außerhalb von Amazon RDS ausgeführte MySQL-Instance für die Verwendung als Quelldatenbank-Instance konfigurieren. Um eine Verbindung zu der außerhalb von Amazon RDS ausgeführten MySQL-Instance herzustellen, müssen Sie Werte für replication_user_name
und replication_user_password
angeben. Diese Werte müssen einen Replikationsbenutzer mit den Berechtigungen REPLICATION CLIENT
und REPLICATION SLAVE
für die externe MySQL-Instance angeben.
So konfigurieren Sie eine externe Instance von MySQL als Quelldatenbank-Instance
-
Verbinden Sie sich mithilfe eines MySQL-Clients Ihrer Wahl mit der externen MySQL-Instance und erstellen Sie ein Benutzerkonto, das für die Replikation verwendet werden soll. Im Folgenden wird ein Beispiel gezeigt.
CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
-
Erteilen Sie innerhalb der externen MySQL-Instance Ihrem Replikationsbenutzer die Berechtigungen
REPLICATION CLIENT
undREPLICATION SLAVE
. Im folgenden Beispiel werden dem BenutzerREPLICATION CLIENT
für Ihre Domäne die BerechtigungenREPLICATION SLAVE
und'repl_user'
für alle Datenbanken erteilt.GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
Weitere Informationen finden Sie unter Konfigurieren der Replikation der Binärprotokolldateiposition mit einer externen Quell-Instance.
Anmerkung
Wir empfehlen, Lesereplikate zur Verwaltung der Replikation zwischen zwei Amazon RDS-DB-Instances zu verwenden, sofern dies möglich ist. In diesem Fall sollten Sie nur diese und andere replikationsbezogene gespeicherte Prozeduren verwenden. Bei dieser Vorgehensweise sind komplexere Replikationstopologien zwischen Amazon RDS-DB-Instances möglich. Wir bieten diese gespeicherten Prozeduren hauptsächlich an, um die Replikation mit MySQL-Instances zu ermöglichen, die außerhalb von Amazon RDS ausgeführt werden. Informationen zur Verwaltung der Replikation zwischen Amazon RDS-DB-Instances finden Sie unter Arbeiten mit DB-Instance-Lesereplikaten.
Nachdem Sie mysql.rds_set_external_master_with_delay
aufgerufen haben, um eine Amazon RDS-DB-Instance als Lesereplikat zu konfigurieren, können Sie mysql.rds_start_replication für das Lesereplikat aufrufen, um die Replikation zu starten Zudem haben Sie die Möglichkeit, mit einem Aufruf von mysql.rds_reset_external_master die Lesereplikat-Konfiguration zu entfernen.
Beim Aufruf von mysql.rds_set_external_master_with_delay
zeichnet Amazon RDS die Uhrzeit, den Benutzer und eine set master
-Aktion in den Tabellen mysql.rds_history
und mysql.rds_replication_status
auf.
Für die Notfallwiederherstellung können Sie diese Prozedur mit der gespeicherten Prozedur mysql.rds_start_replication_until oder mysql.rds_start_replication_until_gtid verwenden. Um alle Änderungen bis zu einem Zeitpunkt unmittelbar vor Eintreten des Notfalls in einem verzögerten Lesereplikat wiederherzustellen, können Sie die Prozedur mysql.rds_set_external_master_with_delay
ausführen. Nachdem die Prozedur mysql.rds_start_replication_until
die Replikation gestoppt hat, können Sie das Lesereplikat zur neuen primären DB-Instance hochstufen (siehe die Anleitung unter Hochstufen eines Lesereplikats zur eigenständigen DB-Instance).
Um die Prozedur mysql.rds_rds_start_replication_until_gtid
verwenden zu können, muss die GTID-basierte Replikation aktiviert sein. Wenn Sie eine bestimmte GTID-basierte Transaktion überspringen möchten, von der Sie wissen, dass sie einen Notfall verursacht, können Sie die gespeicherte Prozedur mysql.rds_skip_transaction_with_gtid verwenden. Weitere Informationen über das Arbeiten mit der GTID-basierten Replikation finden Sie unter Verwenden der GTID-basierten Replikation für Amazon RDS for MySQL.
Die gespeicherte Prozedur mysql.rds_set_external_master_with_delay
ist für die folgenden Versionen von RDS for MySQL verfügbar:
-
MySQL 8.0.26 und höhere 8.0-Versionen
-
Alle 5.7-Versionen
Beispiele
Bei Ausführung innerhalb einer MySQL-DB-Instance konfiguriert das folgende Beispiel diese DB-Instance für die Verwendung als Lesereplikat einer außerhalb von Amazon RDS ausgeführten MySQL-Instance. Die minimale Replikationsverzögerung wird für die MySQL-DB-Instance auf eine Stunde (3600 Sekunden) gesetzt. Eine Änderung an der MySQL-Quelldatenbankinstance, die außerhalb von Amazon RDS ausgeführt wird, wird frühestens nach einer Stunde in das Lesereplikat der MySQL-DB-Instance übernommen.
call mysql.rds_set_external_master_with_delay( 'Externaldb.some.com', 3306, 'repl_user', 'SomePassW0rd', 'mysql-bin-changelog.000777', 120, 0, 3600);
mysql.rds_set_master_auto_position
Legt den Replikationsmodus als auf Binärprotokolldateipositionen oder globalen Transaktionskennungen (GTIDs) basierend fest.
Syntax
CALL mysql.rds_set_master_auto_position (
auto_position_mode
);
Parameter
-
auto_position_mode
-
Ein Wert, der angibt, ob die Replikation auf Basis der Protokolldateiposition oder der GTID verwendet werden soll:
-
0
– Verwendung der auf der Binärprotokolldateiposition basierenden Replikationsmethode. Der Standardwert ist0
. -
1
– Verwendung der auf GTID basierenden Replikationsmethode.
-
Nutzungshinweise
Die Prozedur mysql.rds_set_master_auto_position
muss vom Hauptbenutzer ausgeführt werden.
Diese Prozedur wird für RDS für MySQL 5.7-Versionen und RDS für MySQL 8.0.26 und höhere 8.0-Versionen unterstützt.
mysql.rds_set_source_delay
Legt die Mindestanzahl von Sekunden fest, in der die Replikation von der Quelldatenbankinstance auf das aktuelle Lesereplikat verzögert werden soll. Verwenden Sie diese Prozedur, wenn Sie mit einem Lesereplikat verbunden sind, um die Replikation von der zugehörigen Quelldatenbankinstance zu verzögern.
Syntax
CALL mysql.rds_set_source_delay(
delay
);
Parameter
-
Verzögerung
-
Die Mindestanzahl von Sekunden, um die Replikation von der Quelldatenbank-Instance zu verzögern.
Die Obergrenze für diesen Parameter beträgt einen Tag (86 400 Sekunden).
Nutzungshinweise
Die Prozedur mysql.rds_set_source_delay
muss vom Hauptbenutzer ausgeführt werden.
Für die Notfallwiederherstellung können Sie diese Prozedur mit der gespeicherten Prozedur mysql.rds_start_replication_until oder mysql.rds_start_replication_until_gtid verwenden. Um alle Änderungen bis zu einem Zeitpunkt unmittelbar vor Eintreten des Notfalls in einem verzögerten Lesereplikat wiederherzustellen, können Sie die Prozedur mysql.rds_set_source_delay
ausführen. Nachdem die Prozedur mysql.rds_start_replication_until
oder mysql.rds_start_replication_until_gtid
die Replikation gestoppt hat, können Sie das Lesereplikat zur neuen primären DB-Instance hochstufen (siehe die Anleitung unter Hochstufen eines Lesereplikats zur eigenständigen DB-Instance).
Um die Prozedur mysql.rds_rds_start_replication_until_gtid
verwenden zu können, muss die GTID-basierte Replikation aktiviert sein. Wenn Sie eine bestimmte GTID-basierte Transaktion überspringen möchten, von der Sie wissen, dass sie einen Notfall verursacht, können Sie die gespeicherte Prozedur mysql.rds_skip_transaction_with_gtid verwenden. Weitere Informationen zur GTID-basierten Replikation finden Sie unter Verwenden der GTID-basierten Replikation für Amazon RDS for MySQL.
Die gespeicherte Prozedur mysql.rds_set_source_delay
ist für die folgenden Versionen von RDS for MySQL verfügbar:
-
MySQL 8.0.26 und höhere 8.0-Versionen
-
Alle 5.7-Versionen
Beispiele
Um die Replikation von der Quelldatenbankinstance zum aktuellen Lesereplikat um mindestens eine Stunde (3.600 Sekunden) zu verzögern, können Sie mysql.rds_set_source_delay
mit dem folgenden Parameter aufrufen:
CALL mysql.rds_set_source_delay(3600);
mysql.rds_skip_transaction_with_gtid
Überspringt die Replikation einer Transaktion mit der angegebenen globalen Transaktionskennung (GTID) in einer MySQL-DB-Instance.
Sie können dieses Verfahren für die Notfallwiederherstellung verwenden, wenn eine bestimmte GTID-Transaktion bekanntermaßen ein Problem verursacht. Verwenden Sie diese gespeicherte Prozedur, um die problematische Transaktion zu überspringen. Problematisch sind beispielsweise Transaktionen, die die Replikation deaktivieren, wichtige Daten löschen oder dafür sorgen, dass die DB-Instance nicht mehr verfügbar ist.
Syntax
CALL mysql.rds_skip_transaction_with_gtid (
gtid_to_skip
);
Parameter
-
gtid_to_skip
-
Die GTID der zu überspringenden Replikationstransaktion.
Nutzungshinweise
Die Prozedur mysql.rds_skip_transaction_with_gtid
muss vom Hauptbenutzer ausgeführt werden.
Diese Prozedur wird für RDS für MySQL 5.7-Versionen und RDS für MySQL 8.0.26 und höhere 8.0-Versionen unterstützt.
Beispiele
Im folgenden Beispiel wird die Replikation der Transaktion mit der GTID übersprunge 3E11FA47-71CA-11E1-9E33-C80AA9429562:23
.
CALL mysql.rds_skip_transaction_with_gtid('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');
mysql.rds_skip_repl_error
Ignoriert und löscht einen Replikationsfehler in einem MySQL-DB-Lesereplikat.
Syntax
CALL mysql.rds_skip_repl_error;
Nutzungshinweise
Der Hauptbenutzer muss die Prozedur mysql.rds_skip_repl_error
auf einem Lesereplikat ausführen. Weitere Informationen zu dieser Prozedur finden Sie unter Aufrufen der Prozedur mysql.rds_skip_repl_error.
Führen Sie den MySQL-Befehl SHOW REPLICA STATUS\G
aus, um festzustellen, ob Fehler aufgetreten sind. Wenn ein Replikationsfehler nicht als kritisch eingestuft, ist, können Sie mysql.rds_skip_repl_error
ausführen, um den Fehler zu überspringen. Wenn mehrere Fehler aufgetreten sind, löscht mysql.rds_skip_repl_error
den ersten Fehler und weist darauf hin, dass weitere Fehlermeldungen anhängig sind. In diesem Fall können Sie mithilfe von SHOW REPLICA STATUS\G
die angemessene Vorgehensweise bei der Handhabung des nächsten Fehlers ermitteln. Informationen zu den zurückgegebenen Werten finden Sie unter SHOW REPLICA STATUS-Anweisung
Anmerkung
Frühere Versionen von MySQL verwenden SHOW SLAVE STATUS
anstelle von SHOW REPLICA STATUS
. Wenn Sie vor 8.0.23 eine MySQL-Version verwenden, verwenden Si SHOW SLAVE STATUS
.
Weitere Informationen zur Handhabung von Replikationsfehlern mit Amazon RDS finden Sie unter Fehlerbehebung für ein Problem mit einer MySQL Read Replica.
Fehler „Replication stopped (Replikation gestoppt)“
Wenn Sie die Prozedur mysql.rds_skip_repl_error
aufrufen, wird möglicherweise eine Fehlermeldung angezeigt, die besagt, dass das Replikat ausgefallen oder deaktiviert ist.
Diese Fehlermeldung wird angezeigt, wenn Sie die Prozedur auf der primären Instance statt auf dem Lesereplikat ausführen. Sie müssen diese Prozedur auf dem Lesereplikat ausführen, damit sie funktioniert.
Diese Fehlermeldung wird möglicherweise auch angezeigt, wenn Sie die Prozedur zwar auf dem Lesereplikat ausführen, die Replikation jedoch nicht neu gestartet werden kann.
Wenn Sie eine größere Anzahl von Fehlern überspringen müssen, kann die Dauer der Replikationsverzögerung den standardmäßigen Aufbewahrungszeitraum für binäre Protokolldateien (binlog) überschreiten. In diesem Fall kann es zu einem schwerwiegenden Fehler kommen, weil Binärprotokolldateien bereinigt werden, bevor ihr Inhalt in das Lesereplikat repliziert wurde. Diese Bereinigung führt zur Beendigung der Replikation, und Sie können den Befehl mysql.rds_skip_repl_error
nicht mehr aufrufen, um Replikationsfehler zu überspringen und zu ignorieren.
Sie können dieses Problem verringern, indem Sie die Anzahl der Stunden erhöhen, die die Binärprotokolldateien auf Ihrer Quelldatenbankinstance aufbewahrt werden. Nachdem Sie die Aufbewahrungsdauer für binäre Protokolldateien verlängert haben, können Sie die Replikation neu starten und nach Bedarf den Befehl mysql.rds_skip_repl_error
aufrufen.
Verwenden Sie zur Festlegung der Aufbewahrungszeit für Binärprotokolldateien die Prozedur mysql.rds_set_configuration und legen Sie einen Konfigurationsparameter für 'binlog
retention hours'
zusammen mit der Stundenanzahl für die Aufbewahrung der Binärprotokolldateien im DB-Cluster fest. Beim folgenden Beispiel wird die Aufbewahrungszeit für binäre Protokolle auf 48 Stunden festgelegt.
CALL mysql.rds_set_configuration('binlog retention hours', 48);
mysql.rds_start_replication
Startet die Replikation von einer/einem RDS-für-MySQL-DB-Instance.
Anmerkung
Sie können die gespeicherte Prozedur mysql.rds_start_replication_until oder mysql.rds_start_replication_until_gtid verwenden, um die Replikation von einer RDS-für-MySQL--DB-Instance zu initiieren und die Replikation an der angegebenen Position der Binärprotokolldatei zu stoppen.
Syntax
CALL mysql.rds_start_replication;
Nutzungshinweise
Die Prozedur mysql.rds_start_replication
muss vom Hauptbenutzer ausgeführt werden.
Zum Import von Daten aus einer außerhalb von Amazon RDS ausgeführten MySQL-Instance, rufen Sie mysql.rds_start_replication
für das Lesereplikat auf, um den Replikationsvorgang zu starten, nachdem Sie mysql.rds_set_external_master
aufgerufen haben, um die Replikation zu konfigurieren. Weitere Informationen finden Sie unter Wiederherstellen eines Backups in einer MySQL-DB-Instance.
Zum Export von Daten in eine außerhalb von Amazon RDS ausgeführte MySQL-Instance rufen Sie mysql.rds_start_replication
und mysql.rds_stop_replication
für das Lesereplikat auf, um Replikationsaktionen wie das Bereinigen von Binärprotokollen zu steuern. Weitere Informationen finden Sie unter Exportieren von Daten aus einer MySQL DB-Instance mithilfe der Replikation.
Darüber hinaus können Sie mysql.rds_start_replication
für das Lesereplikat aufrufen, um einen zuvor durch einen Aufruf von mysql.rds_stop_replication
gestoppten Replikationsprozess wieder zu starten. Weitere Informationen finden Sie unter Arbeiten mit DB-Instance-Lesereplikaten.
mysql.rds_start_replication_until
Initiiert die Replikation von einer RDS-für-MySQL-DB-Instance und stoppt die Replikation an der angegebenen Position in der Binärprotokolldatei.
Syntax
CALL mysql.rds_start_replication_until (
replication_log_file
,replication_stop_point
);
Parameter
-
replication_log_file
-
Der Name des Binärprotokolls auf der Quelldatenbank-Instance, die die Replikationsinformationen enthält.
-
replication_stop_point
-
Die Position im
replication_log_file
-Binärprotokoll, an der die Replikation stoppt.
Nutzungshinweise
Die Prozedur mysql.rds_start_replication_until
muss vom Hauptbenutzer ausgeführt werden.
Die gespeicherte Prozedur mysql.rds_start_replication_until
ist für die folgenden Versionen von RDS for MySQL verfügbar:
-
MySQL 8.0.26 und höhere 8.0-Versionen
-
Alle 5.7-Versionen
Sie können diese Prozedur mit verzögerter Replikation für die Notfallwiederherstellung verwenden. Wenn Sie die verzögerte Replikation konfiguriert haben, können Sie diese Prozedur verwenden, um alle Änderungen bis zu einem Zeitpunkt unmittelbar vor Eintreten des Notfalls in einem verzögerten Lesereplikat wiederherzustellen. Nachdem diese Prozedur die Replikation gestoppt hat, können Sie das Lesereplikat zur neuen primären DB-Instance hochstufen (siehe die Anleitung unter Hochstufen eines Lesereplikats zur eigenständigen DB-Instance.
Sie können die verzögerte Replikation mit den folgenden gespeicherten Prozeduren konfigurieren:
Der für den Parameter replication_log_file
angegebene Dateiname muss mit dem Binlogdateinamen der Quelldatenbankinstance übereinstimmen.
Wenn der Parameter replication_stop_point
eine Stoppposition angibt, die in der Vergangenheit liegt, wird die Replikation sofort gestoppt.
Beispiele
Das folgende Beispiel initiiert die Replikation und repliziert die Änderungen, bis die Position 120
in der Binärprotokolldatei mysql-bin-changelog.000777
erreicht wird.
call mysql.rds_start_replication_until( 'mysql-bin-changelog.000777', 120);
mysql.rds_start_replication_until_gtid
Initiiert die Replikation von einer/einem RDS-für-MySQL-DB-Instance und stoppt die Replikation unmittelbar nach der angegebenen globalen Transaktionskennung (GTID).
Syntax
CALL mysql.rds_start_replication_until_gtid(
gtid
);
Parameter
-
gtid
-
Die GTID, nach der die Replikation stoppen soll.
Nutzungshinweise
Die Prozedur mysql.rds_start_replication_until_gtid
muss vom Hauptbenutzer ausgeführt werden.
Diese Prozedur wird für RDS für MySQL 5.7-Versionen und RDS für MySQL 8.0.26 und höhere 8.0-Versionen unterstützt.
Sie können diese Prozedur mit verzögerter Replikation für die Notfallwiederherstellung verwenden. Wenn Sie die verzögerte Replikation konfiguriert haben, können Sie diese Prozedur verwenden, um alle Änderungen bis zu einem Zeitpunkt unmittelbar vor Eintreten des Notfalls in einem verzögerten Lesereplikat wiederherzustellen. Nachdem diese Prozedur die Replikation gestoppt hat, können Sie das Lesereplikat zur neuen primären DB-Instance hochstufen (siehe die Anleitung unter Hochstufen eines Lesereplikats zur eigenständigen DB-Instance.
Sie können die verzögerte Replikation mit den folgenden gespeicherten Prozeduren konfigurieren:
Wenn der Parameter gtid
eine Transaktion angibt, die bereits von dem Replikat ausgeführt wurde, wird die Replikation sofort gestoppt.
Beispiele
Das folgende Beispiel initiiert die Replikation und repliziert die Änderungen, bis die GTID erreicht wir 3E11FA47-71CA-11E1-9E33-C80AA9429562:23
.
call mysql.rds_start_replication_until_gtid('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');
mysql.rds_stop_replication
Stoppt die Replikation von einer MySQL-DB-Instance.
Syntax
CALL mysql.rds_stop_replication;
Nutzungshinweise
Die Prozedur mysql.rds_stop_replication
muss vom Hauptbenutzer ausgeführt werden.
Wenn Sie die Replikation für den Import von Daten aus einer außerhalb von Amazon RDS ausgeführten MySQL-Instance konfigurieren, stoppen Sie mit einem Aufruf von mysql.rds_stop_replication
für das Lesereplikat den Replikationsvorgang nach Abschluss des Imports. Weitere Informationen finden Sie unter Wiederherstellen eines Backups in einer MySQL-DB-Instance.
Wenn Sie die Replikation für den Export von Daten in eine außerhalb von Amazon RDS ausgeführte MySQL-Instance konfigurieren, rufen Sie mysql.rds_start_replication
und mysql.rds_stop_replication
für das Lesereplikat auf, um Replikationsaktionen wie das Bereinigen von Binärprotokollen zu steuern. Weitere Informationen finden Sie unter Exportieren von Daten aus einer MySQL DB-Instance mithilfe der Replikation.
Zudem können Sie mysql.rds_stop_replication
auch dazu verwenden, die Replikation zwischen zwei Amazon RDS-DB-Instances zu stoppen. In der Regel wird eine Replikation gestoppt, um eine länger dauernde Operation im Lesereplikat – zum Beispiel das Erstellen eines umfangreichen Indexes – durchzuführen. Ein gestoppter Replikationsvorgang kann durch Aufruf von mysql.rds_start_replication für das Lesereplikat wieder gestartet werden. Weitere Informationen finden Sie unter Arbeiten mit DB-Instance-Lesereplikaten.