Konfigurieren, Starten und Beenden der Binärprotokollreplikation (binlog) - Amazon Relational Database Service

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.

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.012345 hat beispielsweise den Index 12345. Um den Namen der aktuellen Master-Protokolldatei zu ermitteln, führen Sie den Befehl SHOW REPLICA STATUS aus. Sie finden den Namen anschließend im Feld Master_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.012345 hat beispielsweise den Index 12345. Um den Namen der aktuellen Quell-Protokolldatei zu ermitteln, führen Sie den Befehl SHOW REPLICA STATUS aus. Sie finden den Namen anschließend im Feld Source_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 CLIENT und REPLICATION 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 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_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
  1. 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.

  2. Erteilen Sie innerhalb der externen MySQL-Instance Ihrem Replikationsbenutzer die Berechtigungen REPLICATION CLIENT und REPLICATION SLAVE. Im folgenden Beispiel werden dem Benutzer 'repl_user' für Ihre Domäne die Berechtigungen REPLICATION CLIENT und REPLICATION 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. 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 CLIENT und REPLICATION 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 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_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

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
  1. 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.

  2. Erteilen Sie innerhalb der externen MySQL-Instance Ihrem Replikationsbenutzer die Berechtigungen REPLICATION CLIENT und REPLICATION SLAVE. Im folgenden Beispiel werden dem Benutzer 'repl_user' für Ihre Domäne die Berechtigungen REPLICATION CLIENT und REPLICATION SLAVE fü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 CLIENT und REPLICATION 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.

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
  1. 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'
  2. Erteilen Sie innerhalb der externen MySQL-Instance Ihrem Replikationsbenutzer die Berechtigungen REPLICATION CLIENT und REPLICATION SLAVE. Im folgenden Beispiel werden dem Benutzer REPLICATION CLIENT für Ihre Domäne die Berechtigungen REPLICATION 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.

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 CLIENT und REPLICATION 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 SOURCE_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.

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
  1. 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'
  2. Erteilen Sie innerhalb der externen MySQL-Instance Ihrem Replikationsbenutzer die Berechtigungen REPLICATION CLIENT und REPLICATION SLAVE. Im folgenden Beispiel werden dem Benutzer REPLICATION CLIENT für Ihre Domäne die Berechtigungen REPLICATION 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.

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 CLIENT und REPLICATION 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 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_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.

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
  1. 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'
  2. Erteilen Sie innerhalb der externen MySQL-Instance Ihrem Replikationsbenutzer die Berechtigungen REPLICATION CLIENT und REPLICATION SLAVE. Im folgenden Beispiel werden dem Benutzer REPLICATION CLIENT für Ihre Domäne die Berechtigungen REPLICATION 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 (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 CLIENT und REPLICATION 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 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_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.

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
  1. 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'
  2. Erteilen Sie innerhalb der externen MySQL-Instance Ihrem Replikationsbenutzer die Berechtigungen REPLICATION CLIENT und REPLICATION SLAVE. Im folgenden Beispiel werden dem Benutzer REPLICATION CLIENT für Ihre Domäne die Berechtigungen REPLICATION 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_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_purged auf einen angegebenen GTID-Bereich aus einer externen Quelle fest. Der Wert gtid_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_uuid ist gültig.

  • Der Wert von start_pos ist größer als 0 und kleiner als der Wert von end_pos.

  • Der Wert von end_pos ist größer als oder gleich dem Wert von start_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
  1. 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.

  2. 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-purgedOption.

  3. Ermitteln Sie den Wert gtid_purged, der für den Aufruf von mysql.rds_set_external_source_gtid_purged verwendet werden soll. Der gtid_purged Wert sollte alle enthalten GTIDs , die auf der Quellinstanz ausgeführt wurden und nicht mehr für die Replikation benötigt werden. Daher sollte der Wert gtid_purged eine Teilmenge des im vorherigen Schritt abgerufenen gtid_executed-Werts sein.

    Um den gtid_purged Wert 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

  4. Nachdem Sie den entsprechenden gtid_purged-Wert ermittelt haben, der mit Ihrer Sicherung konsistent ist, rufen Sie das gespeicherte mysql.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 ist 0.

  • 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 ist 0.

  • 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 in der MySQL-Dokumentation.

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.