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, Starten und Beenden der Binärprotokollreplikation (binlog)
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.
Wenn Sie gespeicherte Prozeduren verwenden, um die Replikation mit einem mit caching_sha2_password konfigurierten Replikationsbenutzer zu verwalten, müssen Sie TLS konfigurieren, indem Sie SOURCE_SSL=1 festlegen. caching_sha2_password ist das Standard-Authentifizierungs-Plugin für RDS für MySQL 8.4. Weitere Informationen finden Sie unter Verschlüsseln mit SSL/TLS.
Informationen zum Konfigurieren, Verwenden und Verwalten von Lesereplikaten finden Sie unter Arbeiten mit MySQL-Lesereplikaten.
Themen
mysql.rds_next_master_log (RDS-für-MariaDB- und RDS-für-MySQL-Hauptversionen 8.0 und niedriger)
mysql.rds_next_source_log (RDS-für-MySQL-Hauptversionen 8.4 und höher)
mysql.rds_reset_external_source (RDS-für-MySQL-Hauptversionen 8.4 und höher)
mysql.rds_set_external_master (RDS-für-MariaDB- und RDS-für-MySQL-Hauptversionen 8.0 und niedriger)
mysql.rds_set_external_source (RDS-für-MySQL-Hauptversionen 8.4 und höher)
mysql.rds_set_external_master_with_auto_position (RDS-für-MySQL-Hauptversionen 8.0 und niedriger)
mysql.rds_set_external_source_with_auto_position (RDS-für-MySQL-Hauptversionen 8.4 und höher)
mysql.rds_set_external_source_with_delay (RDS-für-MySQL-Hauptversionen 8.4 und höher)
mysql.rds_set_master_auto_position (RDS-für-MySQL-Hauptversionen 8.0 und niedriger)
mysql.rds_set_source_auto_position (RDS-für-MySQL-Hauptversionen 8.4 und höher)
mysql.rds_next_master_log (RDS-für-MariaDB- und RDS-für-MySQL-Hauptversionen 8.0 und niedriger)
Ändert die Protokollposition der Quelldatenbankinstance in den Anfang des nächsten Binärprotokolls auf der Quelldatenbankinstance. Verwenden Sie dieses Verfahren nur, wenn Sie bei einer Read Replica den I/O Replikationsfehler 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.012345hat beispielsweise den Index 12345. Um den Namen der aktuellen Master-Protokolldatei zu ermitteln, führen Sie den BefehlSHOW REPLICA STATUSaus. Sie finden den Namen anschließend im FeldMaster_Log_File.
Nutzungshinweise
Die Prozedur mysql.rds_next_master_log muss vom Hauptbenutzer ausgeführt werden.
Warnung
Rufen Sie mysql.rds_next_master_log nur auf, wenn die Replikation nach einem Failover einer Multi-AZ-DB-Instance, die die Replikationsquelle ist, fehlschlägt und das Last_IO_Errno Feld den Fehler 1236 meldet. SHOW REPLICA STATUS I/O
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 das Risiko dafür verringern, obwohl dies zu einer Reduzierung der Leistung führen kann. 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);
mysql.rds_next_source_log (RDS-für-MySQL-Hauptversionen 8.4 und höher)
Ändert die Protokollposition der Quelldatenbankinstance in den Anfang des nächsten Binärprotokolls auf der Quelldatenbankinstance. Verwenden Sie dieses Verfahren nur, wenn Sie bei einer Read Replica den I/O Replikationsfehler 1236 erhalten.
Syntax
CALL mysql.rds_next_source_log(curr_source_log);
Parameter
-
curr_source_log -
Der Index der aktuellen Quell-Protokolldatei. Der Index ist im Dateinamen codiert. Eine aktuelle Datei mit dem Namen
mysql-bin-changelog.012345hat beispielsweise den Index 12345. Um den Namen der aktuellen Quell-Protokolldatei zu ermitteln, führen Sie den BefehlSHOW REPLICA STATUSaus. Sie finden den Namen anschließend im FeldSource_Log_File.
Nutzungshinweise
Der Administrator muss das mysql.rds_next_source_log-Verfahren ausführen.
Warnung
Rufen Sie mysql.rds_next_source_log nur auf, wenn die Replikation nach einem Failover einer Multi-AZ-DB-Instance, die die Replikationsquelle ist, fehlschlägt und das Last_IO_Errno Feld den Fehler 1236 meldet. SHOW REPLICA STATUS I/O
Ein Aufruf von mysql.rds_next_source_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 das Risiko dafür verringern, obwohl dies zu einer Reduzierung der Leistung führen kann. 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_Source: NULL Source_SSL_Verify_Server_Cert: No Last_IO_Errno: 1236 Last_IO_Error: Got fatal error 1236 from source when reading data from binary log: 'Client requested source 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 Source_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_source_log mit dem folgenden Parameter aufrufen:
CALL mysql.rds_next_source_log(12345);
mysql.rds_reset_external_master (RDS-für-MariaDB- und RDS-für-MySQL-Hauptversionen 8.0 und niedriger)
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 in Amazon RDS.
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_reset_external_source (RDS-für-MySQL-Hauptversionen 8.4 und höher)
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 in Amazon RDS.
Syntax
CALL mysql.rds_reset_external_source;
Nutzungshinweise
Der Administrator muss das mysql.rds_reset_external_source-Verfahren ausführen. 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 (RDS-für-MariaDB- und RDS-für-MySQL-Hauptversionen 8.0 und niedriger)
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 in Amazon RDS.
Anmerkung
Sie können die gespeicherte Prozedur mysql.rds_set_external_master_with_delay (RDS-für-MariaDB- und RDS-für-MySQL-Hauptversionen 8.0 und niedriger) 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 CLIENTundREPLICATION SLAVEauf 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_nameangegebenen 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 STATUSauf der Quelldatenbank-Instance 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_CERTwird 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 CLIENTundREPLICATION SLAVE. Im folgenden Beispiel werden dem Benutzer 'repl_user' für Ihre Domäne die BerechtigungenREPLICATION CLIENTundREPLICATION SLAVEfü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. Importieren Sie außerdem mit der Prozedur das Zertifizierungsstellenzertifikat, das Clientzertifikat und den Clientschlüssel in die DB-Instance bzw. das DB-Cluster.
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 (RDS-für-MariaDB- und RDS-für-MySQL-Hauptversionen 8.0 und niedriger) 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, 1);
mysql.rds_set_external_source (RDS-für-MySQL-Hauptversionen 8.4 und höher)
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 in Amazon RDS.
Syntax
CALL mysql.rds_set_external_source (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 CLIENTundREPLICATION SLAVEauf 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_nameangegebenen 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 STATUSauf der Quelldatenbank-Instance 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
SOURCE_SSL_VERIFY_SERVER_CERTwird 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
Der Administrator muss das mysql.rds_set_external_source-Verfahren ausführen. Dieses Verfahren muss auf der DB-Instance von RDS für MySQL 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_source 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.
CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED 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 CLIENTundREPLICATION SLAVE. Im folgenden Beispiel werden dem Benutzer 'repl_user' für Ihre Domäne die BerechtigungenREPLICATION CLIENTundREPLICATION SLAVEfür alle Datenbanken erteilt.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. Importieren Sie außerdem mit der Prozedur mysql.rds_import_binlog_ssl_material das Zertifizierungsstellenzertifikat, das Clientzertifikat und den Clientschlüssel in die DB-Instance bzw. den DB-Cluster.
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_source aufgerufen haben, um eine DB-Instance von RDS für MySQL 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_source (RDS-für-MySQL-Hauptversionen 8.4 und höher) die Lesereplikat-Konfiguration zu entfernen.
Beim Aufrufen von mysql.rds_set_external_source 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 auf einer DB-Instance von RDS für MySQL 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_source( 'Externaldb.some.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.0777', 120, 1);
mysql.rds_set_external_master_with_auto_position (RDS-für-MySQL-Hauptversionen 8.0 und niedriger)
Konfiguriert eine RDS für MySQL-DB-Instance für die Verwendung als Read Replica einer außerhalb von Amazon RDS ausgeführten MySQL-Instance. Bei diesem Verfahren werden auch verzögerte Replikation und Replikation auf der Grundlage globaler Transaktions-Identifikatoren () konfiguriert. GTIDs
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 in Amazon RDS.
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 CLIENTundREPLICATION SLAVEauf 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_nameangegebenen 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_CERTwird nicht unterstützt. Diese Option ist auf 0 gesetzt, was bedeutet, dass die Verbindung verschlüsselt ist, aber die Zertifikate nicht überprüft werden. -
delay -
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 CLIENTundREPLICATION SLAVE. Im folgenden Beispiel werden dem BenutzerREPLICATION CLIENTfür Ihre Domäne die BerechtigungenREPLICATION SLAVEund'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.
Stellen Sie vor dem Aufrufen von mysql.rds_set_external_master_with_auto_position sicher, dass Sie mysql.rds_set_external_source_gtid_purged aufrufen, um die Systemvariable gtid_purged mit einem bestimmten GTID-Bereich aus einer externen Quelle aufrufen.
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 (RDS-für-MariaDB- und RDS-für-MySQL-Hauptversionen 8.0 und niedriger) 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.
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', 1, 3600);
mysql.rds_set_external_source_with_auto_position (RDS-für-MySQL-Hauptversionen 8.4 und höher)
Konfiguriert eine RDS für MySQL-DB-Instance für die Verwendung als Read Replica einer außerhalb von Amazon RDS ausgeführten MySQL-Instance. Bei diesem Verfahren werden auch verzögerte Replikation und Replikation auf der Grundlage globaler Transaktions-Identifikatoren () konfiguriert. GTIDs
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 in Amazon RDS.
Syntax
CALL mysql.rds_set_external_source_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 CLIENTundREPLICATION SLAVEauf 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_nameangegebenen 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
SOURCE_SSL_VERIFY_SERVER_CERTwird nicht unterstützt. Diese Option ist auf 0 gesetzt, was bedeutet, dass die Verbindung verschlüsselt ist, aber die Zertifikate nicht überprüft werden. -
delay -
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
Der Administrator muss das mysql.rds_set_external_source_with_auto_position-Verfahren ausführen. 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_source_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 CLIENTundREPLICATION SLAVE. Im folgenden Beispiel werden dem BenutzerREPLICATION CLIENTfür Ihre Domäne die BerechtigungenREPLICATION SLAVEund'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.
Stellen Sie vor dem Aufrufen von mysql.rds_set_external_source_with_auto_position sicher, dass Sie mysql.rds_set_external_source_gtid_purged aufrufen, um die Systemvariable gtid_purged mit einem bestimmten GTID-Bereich aus einer externen Quelle aufrufen.
Nachdem Sie mysql.rds_set_external_source_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_source (RDS-für-MySQL-Hauptversionen 8.4 und höher) die Lesereplikat-Konfiguration zu entfernen.
Beim Aufruf von mysql.rds_set_external_source_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_source_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.
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_source_with_auto_position( 'Externaldb.some.com', 3306, 'repl_user', 'SomePassW0rd', 1, 3600);
mysql.rds_set_external_master_with_delay (RDS-für-MariaDB- und RDS-für-MySQL-Hauptversionen 8.0 und niedriger)
Konfiguriert eine RDS für 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 in Amazon RDS.
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 CLIENTundREPLICATION SLAVEauf 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_nameangegebenen 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_nameangegebenen 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 STATUSauf der Quelldatenbank-Instance 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_CERTwird nicht unterstützt. Diese Option ist auf 0 gesetzt, was bedeutet, dass die Verbindung verschlüsselt ist, aber die Zertifikate nicht überprüft werden. -
delay -
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 CLIENTundREPLICATION SLAVE. Im folgenden Beispiel werden dem BenutzerREPLICATION CLIENTfür Ihre Domäne die BerechtigungenREPLICATION SLAVEund'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 (RDS-für-MariaDB- und RDS-für-MySQL-Hauptversionen 8.0 und niedriger) 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.
Die gespeicherte Prozedur mysql.rds_set_external_master_with_delay ist für die folgenden Versionen von RDS für 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, 1, 3600);
mysql.rds_set_external_source_with_delay (RDS-für-MySQL-Hauptversionen 8.4 und höher)
Konfiguriert eine RDS für 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 in Amazon RDS.
Syntax
CALL mysql.rds_set_external_source_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 CLIENTundREPLICATION SLAVEauf 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_nameangegebenen 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_nameangegebenen 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 STATUSauf der Quelldatenbank-Instance 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
SOURCE_SSL_VERIFY_SERVER_CERTwird nicht unterstützt. Diese Option ist auf 0 gesetzt, was bedeutet, dass die Verbindung verschlüsselt ist, aber die Zertifikate nicht überprüft werden. -
delay -
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
Der Administrator muss das mysql.rds_set_external_source_with_delay-Verfahren ausführen. 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_source_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 CLIENTundREPLICATION SLAVE. Im folgenden Beispiel werden dem BenutzerREPLICATION CLIENTfür Ihre Domäne die BerechtigungenREPLICATION SLAVEund'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_source_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_source (RDS-für-MySQL-Hauptversionen 8.4 und höher) die Lesereplikat-Konfiguration zu entfernen.
Beim Aufruf von mysql.rds_set_external_source_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_source_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.
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_source_with_delay( 'Externaldb.some.com', 3306, 'repl_user', 'SomePassW0rd', 'mysql-bin-changelog.000777', 120, 1, 3600);
mysql.rds_set_external_source_gtid_purged
Legt die Systemvariable gtid_purgedgtid_purged ist für die Konfiguration der GTID-basierten Replikation erforderlich, um die Replikation mithilfe der automatischen Positionierung fortzusetzen.
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 in Amazon RDS.
Syntax
CALL mysql.rds_set_external_source_gtid_purged(server_uuid,start_pos,end_pos);
Parameter
-
server_uuid -
Der Universally Unique Identifier (UUID) des externen Servers, von dem der GTID-Bereich importiert wird.
-
start_pos -
Die Startposition des festzulegenden GTID-Bereichs.
-
end_pos -
Die Endposition des festzulegenden GTID-Bereichs.
Nutzungshinweise
Das Verfahren mysql.rds_set_external_source_gtid_purged ist nur mit MySQL 8.0.37 und höheren 8.0-Versionen verfügbar.
Rufen Sie mysql.rds_set_external_source_gtid_purged vor mysql.rds_set_external_master_with_auto_position (RDS-für-MySQL-Hauptversionen 8.0 und niedriger), mysql.rds_set_external_source_with_auto_position (RDS-für-MySQL-Hauptversionen 8.4 und höher) oder mysql.rds_set_external_source_with_auto_position_for_channel auf.
Stellen Sie vor dem Anruf von mysql.rds_set_external_source_gtid_purged sicher, dass alle aktiven Replikationskanäle für die Datenbank beendet wurden. Verwenden Sie die MySQL-Anweisung SHOW REPLICA STATUS, um den Status eines Kanals zu überprüfen. Um die Replikation auf einem Kanal zu beenden, rufen Sie mysql.rds_stop_replication_for_channel auf.
Der von Ihnen angegebene GTID-Bereich muss eine übergeordnete Menge des vorhandenen GTID_PURGED-Werts sein. Dieses gespeicherte Verfahren überprüft die folgenden Werte, bevor der Wert GTID_PURGED festlegt wird:
-
Die
server_uuidist gültig. -
Der Wert von
start_posist größer als0und kleiner als der Wert vonend_pos. -
Der Wert von
end_posist größer als oder gleich dem Wert vonstart_pos.
Wenn die auf Ihrem externen Server festgelegte GTID mehrere Wertebereiche enthält, sollten Sie erwägen, das Verfahren mehrmals mit unterschiedlichen GTID-Satzwerten aufzurufen.
Beim Aufruf von mysql.rds_set_external_source_gtid_purged zeichnet Amazon RDS die Uhrzeit, den Benutzer und eine set gtid_purged-Aktion in der Tabelle mysql.rds_history auf.
Wenn Sie den Wert gtid_purged für die Sicherung, die Sie für die Replikation verwenden, nicht angemessen festlegen, kann dies dazu führen, dass während des Replikationsvorgangs Transaktionen fehlen oder doppelt vorhanden sind. Führen Sie die folgenden Schritte aus, um den richtigen gtid_purged-Wert festzulegen.
So legen Sie den Wert „gtid_purged“ für das Replikat fest
-
Ermitteln Sie den Zeitpunkt oder die spezifische Sicherungsdatei, die als Ausgangspunkt für die Replikation verwendet werden soll. Dies kann eine logische Sicherung (eine mysqldump-Datei) oder eine physische Sicherung (ein Amazon-RDS-Snapshot) sein.
-
Ermitteln Sie den Wert
gtid_executed. Dieser Wert stellt die Menge aller Daten dar GTIDs , die auf dem Server festgeschrieben wurden. Führen Sie auf der Quell-Instance einen der folgenden Schritte aus, um diesen Wert abzurufen:-
Führen Sie die SQL-Anweisung
SELECT @@GLOBAL.GTID_EXECUTED;zum Zeitpunkt der Sicherung aus. -
Wenn das jeweilige Sicherungsdienstprogramm zugehörige Optionen enthält, extrahieren Sie den Wert aus der Sicherungsdatei. Weitere Informationen finden Sie in der MySQL-Dokumentation zu der set-gtid-purged
Option.
-
-
Ermitteln Sie den Wert
gtid_purged, der für den Aufruf vonmysql.rds_set_external_source_gtid_purgedverwendet werden soll. Dergtid_purgedWert sollte alle enthalten GTIDs , die auf der Quellinstanz ausgeführt wurden und nicht mehr für die Replikation benötigt werden. Daher sollte der Wertgtid_purgedeine Teilmenge des im vorherigen Schritt abgerufenengtid_executed-Werts sein.Um den
gtid_purgedWert zu ermitteln, identifizieren Sie GTIDs diejenigen, die nicht im Backup enthalten sind und nicht mehr für die Replikation benötigt werden. Sie können dies tun, indem Sie die Binärprotokolle analysieren oder ein Tool wie mysqlbinlog verwenden, um diejenigen zu finden GTIDs , die aus den Binärprotokollen gelöscht wurden.Wenn Sie über eine konsistente Sicherung verfügen, die alle Binärprotokolle bis zum Sicherungspunkt umfasst, können Sie den Wert alternativ so festlegen, dass er dem
gtid_purged-Wert am Sicherungspunkt entspricht.gtid_executed -
Nachdem Sie den entsprechenden
gtid_purged-Wert ermittelt haben, der mit Ihrer Sicherung konsistent ist, rufen Sie das gespeichertemysql.rds_set_external_source_gtid_purged-Verfahren auf Ihrer DB-Instance von RDS für MySQL auf, um den Wert festzulegen.
Beispiele
Bei der Ausführung auf einer MySQL-DB-Instance legt das folgende Beispiel den GTID-Bereich von einem externen MySQL-Server mit der UUID 12345678-abcd-1234-efgh-123456789abc, einer Startposition von 1 und einer Endposition von 100 fest. Der resultierende GTID-Wert ist auf +12345678-abcd-1234-efgh-123456789abc:1-100 festgelegt.
CALL mysql.rds_set_external_source_gtid_purged('12345678-abcd-1234-efgh-123456789abc', 1, 100);
mysql.rds_set_master_auto_position (RDS-für-MySQL-Hauptversionen 8.0 und niedriger)
Legt fest, dass der Replikationsmodus entweder auf binären Protokolldateipositionen oder auf globalen Transaktions-Identifikatoren (GTIDs) basiert.
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 alle 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_auto_position (RDS-für-MySQL-Hauptversionen 8.4 und höher)
Legt fest, dass der Replikationsmodus entweder auf binären Protokolldateipositionen oder auf globalen Transaktions-Identifikatoren () GTIDs basiert.
Syntax
CALL mysql.rds_set_source_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
Der Administrator muss das mysql.rds_set_source_auto_position-Verfahren ausführen.
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
-
delay -
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.
Die gespeicherte Prozedur mysql.rds_set_source_delay ist für die folgenden Versionen von RDS für MySQL verfügbar:
-
RDS für MySQL 8.4 (alle Versionen)
-
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_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
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.
Um Daten aus einer außerhalb von Amazon RDS ausgeführten MySQL-Instance zu importieren, rufen Sie mysql.rds_start_replication für das Lesereplikat auf, um den Replikationsvorgang zu starten, nachdem Sie mysql.rds_set_external_master (RDS-für-MariaDB- und RDS-für-MySQL-Hauptversionen 8.0 und niedriger) oder mysql.rds_set_external_source (RDS-für-MySQL-Hauptversionen 8.4 und höher) aufgerufen haben, um die Replikation zu konfigurieren. Weitere Informationen finden Sie unter Wiederherstellen eines Backups in eine DB-Instance von Amazon RDS für MySQL.
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 für MySQL verfügbar:
-
RDS für MySQL 8.4 (alle Versionen)
-
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_pointeine 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_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 eine DB-Instance von Amazon RDS für MySQL.
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.