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

Replikation

Die folgenden gespeicherten Prozeduren steuern, wie Transaktionen aus einer externen Datenbank in RDS für MySQL oder aus Aurora für MySQL in eine externen Datenbank repliziert werden. Weitere Informationen zur Verwendung der Replikation basierend auf globalen Transaktionskennungen (GTIDs) mit RDS für MySQL finden Sie unter Verwenden der GTID-basierten Replikation für Amazon RDS for MySQL.

mysql.rds_next_master_log

Ändert die Protokollposition der Quelldatenbankinstance in den Anfang des nächsten Binärprotokolls auf der Quelldatenbankinstance. Verwenden Sie diese Prozedur nur dann, wenn Sie für ein Lesereplikat bei der Replikation einen I/O-Fehler mit der Fehlernummer 1236 erhalten.

Syntax

CALL mysql.rds_next_master_log( curr_master_log );

Parameter

curr_master_log

Der Index der aktuellen Master-Protokolldatei. Der Index ist im Dateinamen codiert. Eine aktuelle Datei mit dem Namen mysql-bin-changelog.012345 hat beispielsweise den Index 12345. Um den Namen der aktuellen Master-Protokolldatei zu ermitteln, führen Sie den Befehl SHOW REPLICA STATUS aus. Sie finden den Namen anschließend im Feld Master_Log_File.

Anmerkung

Frühere Versionen von MySQL verwenden SHOW SLAVE STATUS anstelle von SHOW REPLICA STATUS. Wenn Sie vor 8.0.23 eine MySQL-Version verwenden, verwenden Si SHOW SLAVE STATUS.

Nutzungshinweise

Die Prozedur mysql.rds_next_master_log muss vom Hauptbenutzer ausgeführt werden.

Warnung

mysql.rds_next_master_log sollte nur dann aufgerufen werden, wenn die Replikation nach einem Failover einer als Replikationsquelle fungierenden Multi-AZ-DB-Instance fehlschlägt und das Feld Last_IO_Errno im von SHOW REPLICA STATUS zurückgegebenen Ergebnis einen I/O-Fehler mit der Nummer 1236 meldet.

Ein Aufruf von mysql.rds_next_master_log kann zu Datenverlust im Lesereplikat führen, falls Transaktionen in der Quell-Instance nicht in das binäre Protokoll auf der Festplatte geschrieben wurden, bevor das Failover-Ereignis auftrat.

Sie können durch Festlegung der Quell-Instance-Parameter sync_binlog und innodb_support_xa auf 1 die Gefahr, dass dies geschieht, verringern, allerdings kann diese Maßnahme die Leistung verringern. Weitere Informationen finden Sie unter Fehlerbehebung für ein Problem mit einer MySQL Read Replica.

Beispiele

Angenommen, die Replikation schlägt auf einer RDS-für-MySQL- -Read Replica fehl. Die Ausführung von SHOW REPLICA STATUS\G für das Lesereplikat gibt das folgende Ergebnis zurück:

*************************** 1. row *************************** Replica_IO_State: Source_Host: myhost.XXXXXXXXXXXXXXX.rr-rrrr-1.rds.amazonaws.com Source_User: MasterUser Source_Port: 3306 Connect_Retry: 10 Source_Log_File: mysql-bin-changelog.012345 Read_Source_Log_Pos: 1219393 Relay_Log_File: relaylog.012340 Relay_Log_Pos: 30223388 Relay_Source_Log_File: mysql-bin-changelog.012345 Replica_IO_Running: No Replica_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Source_Log_Pos: 30223232 Relay_Log_Space: 5248928866 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Source_SSL_Allowed: No Source_SSL_CA_File: Source_SSL_CA_Path: Source_SSL_Cert: Source_SSL_Cipher: Source_SSL_Key: Seconds_Behind_Master: NULL Source_SSL_Verify_Server_Cert: No Last_IO_Errno: 1236 Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position; the first event 'mysql-bin-changelog.013406' at 1219393, the last event read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4, the last byte read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4.' Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Source_Server_Id: 67285976

Den Angeben im Feld Last_IO_Errno ist zu entnehmen, dass die Instance eine I/O-Fehlermeldung mit der Nummer 1236 erhalten hat. Dem Feld Master_Log_File ist zudem zu entnehmen, dass die betroffene Protokolldatei den Namen mysql-bin-changelog.012345 aufweist und ihr Index folglich 12345 lautet. Zur Behebung des Fehlers können Sie dann mysql.rds_next_master_log mit dem folgenden Parameter aufrufen:

CALL mysql.rds_next_master_log(12345);
Anmerkung

Frühere Versionen von MySQL verwenden SHOW SLAVE STATUS anstelle von SHOW REPLICA STATUS. Wenn Sie vor 8.0.23 eine MySQL-Version verwenden, verwenden Si SHOW SLAVE STATUS.

mysql.rds_reset_external_master

Rekonfiguriert eine RDS-für-MySQL-DB-Instance, sodass sie keine Read Replica einer Instance von MySQL außerhalb von Amazon RDS ist.

Wichtig

Um diese Prozedur auszuführen, muss autocommit aktiviert sein. Um dies zu aktivieren, setzen Sie den autocommit-Parameter auf 1. Weitere Informationen zum Ändern von Parametern finden Sie unter Ändern von Parametern in einer DB-Parametergruppe.

Syntax

CALL mysql.rds_reset_external_master;

Nutzungshinweise

Die Prozedur mysql.rds_reset_external_master muss vom Hauptbenutzer ausgeführt werden. Diese Prozedur muss auf der MySQL-DB-Instance ausgeführt werden, die nicht mehr Lesereplikat einer außerhalb von Amazon RDS ausgeführten MySQL-Instance sein soll.

Anmerkung

Wir empfehlen, Lesereplikate zur Verwaltung der Replikation zwischen zwei Amazon RDS-DB-Instances zu verwenden, sofern dies möglich ist. In diesem Fall sollten Sie nur diese und andere replikationsbezogene gespeicherte Prozeduren verwenden. Bei dieser Vorgehensweise sind komplexere Replikationstopologien zwischen Amazon RDS-DB-Instances möglich. Wir bieten diese gespeicherten Prozeduren hauptsächlich an, um die Replikation mit MySQL-Instances zu ermöglichen, die außerhalb von Amazon RDS ausgeführt werden. Informationen zur Verwaltung der Replikation zwischen Amazon RDS-DB-Instances finden Sie unter Arbeiten mit DB-Instance-Lesereplikaten.

Weitere Informationen zur Verwendung von Replikation für den Import von Daten aus einer außerhalb von Amazon RDS ausgeführten MySQL-Instance finden Sie unter Konfigurieren der Replikation der Binärprotokolldateiposition mit einer externen Quell-Instance.

mysql.rds_set_external_master

Konfiguriert eine RDS-für-MySQL-Instance für die Verwendung als Read Replica einer außerhalb von Amazon RDS ausgeführten MySQL-Instance.

Wichtig

Um diese Prozedur auszuführen, muss autocommit aktiviert sein. Um dies zu aktivieren, setzen Sie den autocommit-Parameter auf 1. Weitere Informationen zum Ändern von Parametern finden Sie unter Ändern von Parametern in einer DB-Parametergruppe.

Anmerkung

Sie können die gespeicherte Prozedur mysql.rds_set_external_master_with_delay zum Konfigurieren einer externer Quelldatenbank-Instance und einer verzögerten Replikation verwenden.

Syntax

CALL mysql.rds_set_external_master ( host_name , host_port , replication_user_name , replication_user_password , mysql_binary_log_file_name , mysql_binary_log_file_location , ssl_encryption );

Parameter

host_name

Der Hostname bzw. die IP-Adresse der außerhalb von Amazon RDS ausgeführten MySQL-Instance, die als Quelldatenbank-Instance festgelegt werden soll.

host_port

Der Port, der von der außerhalb von Amazon RDS ausgeführten MySQL-Instance verwendet wird, die als Quelldatenbank-Instance konfiguriert werden soll. Wenn Ihre Netzwerkkonfiguration die Replikation über Secure Shell (SSH)-Ports einschließt, welche die Portnummer konvertiert, geben Sie für diesen Parameter die von SSH offengelegte Portnummer an.

replication_user_name

Die ID eines Benutzers mit den Berechtigungen REPLICATION CLIENT 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 Quelldatenbankinstanz starten.

ssl_encryption

Ein Wert, der angibt, ob die SSL-Verschlüsselung (Secure Socket Layer) für die Replikationsverbindung verwendet wird. 1 = SSL-Verschlüsselung, 0 = keine Verschlüsselung. Der Standardwert ist 0.

Anmerkung

Die Option MASTER_SSL_VERIFY_SERVER_CERT wird nicht unterstützt. Diese Option ist auf 0 gesetzt, was bedeutet, dass die Verbindung verschlüsselt ist, aber die Zertifikate nicht überprüft werden.

Nutzungshinweise

Die Prozedur mysql.rds_set_external_master muss vom Hauptbenutzer ausgeführt werden. Diese Prozedur muss auf der MySQL-DB-Instance ausgeführt werden, die als Lesereplikat einer außerhalb von Amazon RDS ausgeführten MySQL-Instance konfiguriert werden soll.

Vor der Ausführung von mysql.rds_set_external_master müssen Sie zuerst die außerhalb von Amazon RDS ausgeführte MySQL-Instance für die Verwendung als Quelldatenbank-Instance konfigurieren. Um eine Verbindung zu der außerhalb von Amazon RDS ausgeführten MySQL-Instance herzustellen, müssen Sie Werte für replication_user_name und replication_user_password bereitstellen, die auf einen Replikationsbenutzer verweisen, der über die Berechtigungen REPLICATION CLIENT und REPLICATION SLAVE für die externe MySQL-Instance verfügt.

So konfigurieren Sie eine externe Instance von MySQL als Quelldatenbank-Instance
  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.

Anmerkung

Wir empfehlen, Lesereplikate zur Verwaltung der Replikation zwischen zwei Amazon RDS-DB-Instances zu verwenden, sofern dies möglich ist. In diesem Fall sollten Sie nur diese und andere replikationsbezogene gespeicherte Prozeduren verwenden. Bei dieser Vorgehensweise sind komplexere Replikationstopologien zwischen Amazon RDS-DB-Instances möglich. Wir bieten diese gespeicherten Prozeduren hauptsächlich an, um die Replikation mit MySQL-Instances zu ermöglichen, die außerhalb von Amazon RDS ausgeführt werden. Informationen zur Verwaltung der Replikation zwischen Amazon RDS-DB-Instances finden Sie unter Arbeiten mit DB-Instance-Lesereplikaten.

Nachdem Sie mysql.rds_set_external_master aufgerufen haben, um eine Amazon RDS-DB-Instance als Lesereplikat zu konfigurieren, können Sie mysql.rds_start_replication für das Lesereplikat aufrufen, um die Replikation zu starten Zudem haben Sie die Möglichkeit, mit einem Aufruf von mysql.rds_reset_external_master die Lesereplikat-Konfiguration zu entfernen.

Beim Aufrufen von mysql.rds_set_external_master werden von Amazon RDS Uhrzeit, Benutzer und eine Aktion von set master in den Tabellen mysql.rds_history und mysql.rds_replication_status protokolliert.

Beispiele

Bei Ausführung innerhalb einer MySQL-DB-Instance konfiguriert das folgende Beispiel diese DB-Instance für die Verwendung als Lesereplikat einer außerhalb von Amazon RDS ausgeführten MySQL-Instance.

call mysql.rds_set_external_master( 'Externaldb.some.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.0777', 120, 0);

mysql.rds_set_external_master_with_auto_position

Konfiguriert eine RDS for MySQL-DB-Instance für die Verwendung als Read Replica einer außerhalb von Amazon RDS ausgeführten MySQL-Instance. Diese Prozedur konfiguriert auch die verzögerte Replikation sowie die auf globalen Transaktionskennungen (GTIDs) basierende Replikation.

Wichtig

Um diese Prozedur auszuführen, muss autocommit aktiviert sein. Um dies zu aktivieren, setzen Sie den autocommit-Parameter auf 1. Weitere Informationen zum Ändern von Parametern finden Sie unter Ändern von Parametern in einer DB-Parametergruppe.

Syntax

CALL mysql.rds_set_external_master_with_auto_position ( host_name , host_port , replication_user_name , replication_user_password , ssl_encryption , delay );

Parameter

host_name

Der Hostname bzw. die IP-Adresse der außerhalb von Amazon RDS ausgeführten MySQL-Instance, die als Quelldatenbank-Instance festgelegt werden soll.

host_port

Der Port, der von der außerhalb von Amazon RDS ausgeführten MySQL-Instance verwendet wird, die als Quelldatenbank-Instance konfiguriert werden soll. Wenn Ihre Netzwerkkonfiguration die Replikation über Secure Shell (SSH)-Ports einschließt, welche die Portnummer konvertiert, geben Sie für diesen Parameter die von SSH offengelegte Portnummer an.

replication_user_name

Die ID eines Benutzers mit den Berechtigungen REPLICATION CLIENT 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.

Verzögerung

Die Mindestanzahl von Sekunden, um die Replikation von der Quelldatenbank-Instance zu verzögern.

Die Obergrenze für diesen Parameter beträgt einen Tag (86 400 Sekunden).

Nutzungshinweise

Die Prozedur mysql.rds_set_external_master_with_auto_position muss vom Hauptbenutzer ausgeführt werden. Diese Prozedur muss auf der MySQL-DB-Instance ausgeführt werden, die als Lesereplikat einer außerhalb von Amazon RDS ausgeführten MySQL-Instance konfiguriert werden soll.

Diese Prozedur wird für alle RDS für MySQL 5.7 und RDS für MySQL 8.0.26 und höhere 8.0-Versionen unterstützt.

Vor der Ausführung von mysql.rds_set_external_master_with_auto_position müssen Sie zuerst die außerhalb von Amazon RDS ausgeführte MySQL-Instance für die Verwendung als Quelldatenbank-Instance konfigurieren. Um eine Verbindung zu der außerhalb von Amazon RDS ausgeführten MySQL-Instance herzustellen, müssen Sie Werte für replication_user_name und replication_user_password angeben. Diese Werte müssen einen Replikationsbenutzer mit den Berechtigungen REPLICATION CLIENT und REPLICATION SLAVE für die externe MySQL-Instance angeben.

So konfigurieren Sie eine externe Instance von MySQL als Quelldatenbank-Instance
  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_auto_position aufgerufen haben, um eine Amazon RDS-DB-Instance als Lesereplikat zu konfigurieren, können Sie mysql.rds_start_replication für das Lesereplikat aufrufen, um die Replikation zu starten Zudem haben Sie die Möglichkeit, mit einem Aufruf von mysql.rds_reset_external_master die Lesereplikat-Konfiguration zu entfernen.

Beim Aufruf von mysql.rds_set_external_master_with_auto_position zeichnet Amazon RDS die Uhrzeit, den Benutzer und eine set master-Aktion in den Tabellen mysql.rds_history und mysql.rds_replication_status auf.

Für die Notfallwiederherstellung können Sie diese Prozedur mit der gespeicherten Prozedur mysql.rds_start_replication_until oder mysql.rds_start_replication_until_gtid verwenden. Um alle Änderungen bis zu einem Zeitpunkt unmittelbar vor Eintreten des Notfalls in einem verzögerten Lesereplikat wiederherzustellen, können Sie die Prozedur mysql.rds_set_external_master_with_auto_position ausführen. Nachdem die Prozedur mysql.rds_start_replication_until_gtid die Replikation gestoppt hat, können Sie das Lesereplikat zur neuen primären DB-Instance hochstufen (siehe die Anleitung unter Hochstufen eines Lesereplikats zur eigenständigen DB-Instance).

Um die Prozedur mysql.rds_rds_start_replication_until_gtid verwenden zu können, muss die GTID-basierte Replikation aktiviert sein. Wenn Sie eine bestimmte GTID-basierte Transaktion überspringen möchten, von der Sie wissen, dass sie einen Notfall verursacht, können Sie die gespeicherte Prozedur mysql.rds_skip_transaction_with_gtid verwenden. Weitere Informationen über das Arbeiten mit der GTID-basierten Replikation finden Sie unter Verwenden der GTID-basierten Replikation für Amazon RDS for MySQL.

Beispiele

Bei Ausführung innerhalb einer MySQL-DB-Instance konfiguriert das folgende Beispiel diese DB-Instance für die Verwendung als Lesereplikat einer außerhalb von Amazon RDS ausgeführten MySQL-Instance. Die minimale Replikationsverzögerung wird für die MySQL-DB-Instance auf eine Stunde (3600 Sekunden) gesetzt. Eine Änderung an der MySQL-Quelldatenbankinstance, die außerhalb von Amazon RDS ausgeführt wird, wird frühestens nach einer Stunde in das Lesereplikat der MySQL-DB-Instance übernommen.

call mysql.rds_set_external_master_with_auto_position( 'Externaldb.some.com', 3306, 'repl_user', 'SomePassW0rd', 0, 3600);

mysql.rds_set_external_master_with_delay

Konfiguriert eine RDS for MySQL-DB-Instance für die Verwendung als Read Replica einer außerhalb von Amazon RDS ausgeführten MySQL-Instance und konfiguriert die verzögerte Replikation.

Wichtig

Um diese Prozedur auszuführen, muss autocommit aktiviert sein. Um dies zu aktivieren, setzen Sie den autocommit-Parameter auf 1. Weitere Informationen zum Ändern von Parametern finden Sie unter Ändern von Parametern in einer DB-Parametergruppe.

Syntax

CALL mysql.rds_set_external_master_with_delay ( host_name , host_port , replication_user_name , replication_user_password , mysql_binary_log_file_name , mysql_binary_log_file_location , ssl_encryption , delay );

Parameter

host_name

Der Hostname bzw. die IP-Adresse der außerhalb von Amazon RDS ausgeführten MySQL-Instance, die als Replikations-Master festgelegt werden soll

host_port

Der Port, der von der außerhalb von Amazon RDS ausgeführten MySQL-Instance verwendet wird, die als Quelldatenbank-Instance konfiguriert werden soll. Wenn Ihre Netzwerkkonfiguration die Replikation von SSH-Ports einschließt, welche die Portnummer konvertiert, geben Sie für diesen Parameter die von SSH offengelegte Portnummer an.

replication_user_name

Die ID eines Benutzers mit den Berechtigungen REPLICATION CLIENT 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 Quelldatenbankinstanz starten.

ssl_encryption

Ein Wert, der angibt, ob die SSL-Verschlüsselung (Secure Socket Layer) für die Replikationsverbindung verwendet wird. 1 = SSL-Verschlüsselung, 0 = keine Verschlüsselung. Der Standardwert ist 0.

Anmerkung

Die Option MASTER_SSL_VERIFY_SERVER_CERT wird nicht unterstützt. Diese Option ist auf 0 gesetzt, was bedeutet, dass die Verbindung verschlüsselt ist, aber die Zertifikate nicht überprüft werden.

Verzögerung

Die Mindestanzahl von Sekunden, um die Replikation von der Quelldatenbank-Instance zu verzögern.

Die Obergrenze für diesen Parameter beträgt einen Tag (86 400 Sekunden).

Nutzungshinweise

Die Prozedur mysql.rds_set_external_master_with_delay muss vom Hauptbenutzer ausgeführt werden. Diese Prozedur muss auf der MySQL-DB-Instance ausgeführt werden, die als Lesereplikat einer außerhalb von Amazon RDS ausgeführten MySQL-Instance konfiguriert werden soll.

Vor der Ausführung von mysql.rds_set_external_master_with_delay müssen Sie zuerst die außerhalb von Amazon RDS ausgeführte MySQL-Instance für die Verwendung als Quelldatenbank-Instance konfigurieren. Um eine Verbindung zu der außerhalb von Amazon RDS ausgeführten MySQL-Instance herzustellen, müssen Sie Werte für replication_user_name und replication_user_password angeben. Diese Werte müssen einen Replikationsbenutzer mit den Berechtigungen REPLICATION CLIENT und REPLICATION SLAVE für die externe MySQL-Instance angeben.

So konfigurieren Sie eine externe Instance von MySQL als Quelldatenbank-Instance
  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 die Lesereplikat-Konfiguration zu entfernen.

Beim Aufruf von mysql.rds_set_external_master_with_delay zeichnet Amazon RDS die Uhrzeit, den Benutzer und eine set master-Aktion in den Tabellen mysql.rds_history und mysql.rds_replication_status auf.

Für die Notfallwiederherstellung können Sie diese Prozedur mit der gespeicherten Prozedur mysql.rds_start_replication_until oder mysql.rds_start_replication_until_gtid verwenden. Um alle Änderungen bis zu einem Zeitpunkt unmittelbar vor Eintreten des Notfalls in einem verzögerten Lesereplikat wiederherzustellen, können Sie die Prozedur mysql.rds_set_external_master_with_delay ausführen. Nachdem die Prozedur mysql.rds_start_replication_until die Replikation gestoppt hat, können Sie das Lesereplikat zur neuen primären DB-Instance hochstufen (siehe die Anleitung unter Hochstufen eines Lesereplikats zur eigenständigen DB-Instance).

Um die Prozedur mysql.rds_rds_start_replication_until_gtid verwenden zu können, muss die GTID-basierte Replikation aktiviert sein. Wenn Sie eine bestimmte GTID-basierte Transaktion überspringen möchten, von der Sie wissen, dass sie einen Notfall verursacht, können Sie die gespeicherte Prozedur mysql.rds_skip_transaction_with_gtid verwenden. Weitere Informationen über das Arbeiten mit der GTID-basierten Replikation finden Sie unter Verwenden der GTID-basierten Replikation für Amazon RDS for MySQL.

Die gespeicherte Prozedur mysql.rds_set_external_master_with_delay ist für die folgenden Versionen von RDS for MySQL verfügbar:

  • MySQL 8.0.26 und höhere 8.0-Versionen

  • Alle 5.7-Versionen

Beispiele

Bei Ausführung innerhalb einer MySQL-DB-Instance konfiguriert das folgende Beispiel diese DB-Instance für die Verwendung als Lesereplikat einer außerhalb von Amazon RDS ausgeführten MySQL-Instance. Die minimale Replikationsverzögerung wird für die MySQL-DB-Instance auf eine Stunde (3600 Sekunden) gesetzt. Eine Änderung an der MySQL-Quelldatenbankinstance, die außerhalb von Amazon RDS ausgeführt wird, wird frühestens nach einer Stunde in das Lesereplikat der MySQL-DB-Instance übernommen.

call mysql.rds_set_external_master_with_delay( 'Externaldb.some.com', 3306, 'repl_user', 'SomePassW0rd', 'mysql-bin-changelog.000777', 120, 0, 3600);

mysql.rds_set_master_auto_position

Legt den Replikationsmodus als auf Binärprotokolldateipositionen oder globalen Transaktionskennungen (GTIDs) basierend fest.

Syntax

CALL mysql.rds_set_master_auto_position ( auto_position_mode );

Parameter

auto_position_mode

Ein Wert, der angibt, ob die Replikation auf Basis der Protokolldateiposition oder der GTID verwendet werden soll:

  • 0 – Verwendung der auf der Binärprotokolldateiposition basierenden Replikationsmethode. Der Standardwert 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 RDS für MySQL 5.7-Versionen und RDS für MySQL 8.0.26 und höhere 8.0-Versionen unterstützt.

mysql.rds_set_source_delay

Legt die Mindestanzahl von Sekunden fest, in der die Replikation von der Quelldatenbankinstance auf das aktuelle Lesereplikat verzögert werden soll. Verwenden Sie diese Prozedur, wenn Sie mit einem Lesereplikat verbunden sind, um die Replikation von der zugehörigen Quelldatenbankinstance zu verzögern.

Syntax

CALL mysql.rds_set_source_delay( delay );

Parameter

Verzögerung

Die Mindestanzahl von Sekunden, um die Replikation von der Quelldatenbank-Instance zu verzögern.

Die Obergrenze für diesen Parameter beträgt einen Tag (86 400 Sekunden).

Nutzungshinweise

Die Prozedur mysql.rds_set_source_delay muss vom Hauptbenutzer ausgeführt werden.

Für die Notfallwiederherstellung können Sie diese Prozedur mit der gespeicherten Prozedur mysql.rds_start_replication_until oder mysql.rds_start_replication_until_gtid verwenden. Um alle Änderungen bis zu einem Zeitpunkt unmittelbar vor Eintreten des Notfalls in einem verzögerten Lesereplikat wiederherzustellen, können Sie die Prozedur mysql.rds_set_source_delay ausführen. Nachdem die Prozedur mysql.rds_start_replication_until oder mysql.rds_start_replication_until_gtid die Replikation gestoppt hat, können Sie das Lesereplikat zur neuen primären DB-Instance hochstufen (siehe die Anleitung unter Hochstufen eines Lesereplikats zur eigenständigen DB-Instance).

Um die Prozedur mysql.rds_rds_start_replication_until_gtid verwenden zu können, muss die GTID-basierte Replikation aktiviert sein. Wenn Sie eine bestimmte GTID-basierte Transaktion überspringen möchten, von der Sie wissen, dass sie einen Notfall verursacht, können Sie die gespeicherte Prozedur mysql.rds_skip_transaction_with_gtid verwenden. Weitere Informationen zur GTID-basierten Replikation finden Sie unter Verwenden der GTID-basierten Replikation für Amazon RDS for MySQL.

Die gespeicherte Prozedur mysql.rds_set_source_delay ist für die folgenden Versionen von RDS for MySQL verfügbar:

  • MySQL 8.0.26 und höhere 8.0-Versionen

  • Alle 5.7-Versionen

Beispiele

Um die Replikation von der Quelldatenbankinstance zum aktuellen Lesereplikat um mindestens eine Stunde (3.600 Sekunden) zu verzögern, können Sie mysql.rds_set_source_delay mit dem folgenden Parameter aufrufen:

CALL mysql.rds_set_source_delay(3600);

mysql.rds_skip_transaction_with_gtid

Überspringt die Replikation einer Transaktion mit der angegebenen globalen Transaktionskennung (GTID) in einer MySQL-DB-Instance.

Sie können dieses Verfahren für die Notfallwiederherstellung verwenden, wenn eine bestimmte GTID-Transaktion bekanntermaßen ein Problem verursacht. Verwenden Sie diese gespeicherte Prozedur, um die problematische Transaktion zu überspringen. Problematisch sind beispielsweise Transaktionen, die die Replikation deaktivieren, wichtige Daten löschen oder dafür sorgen, dass die DB-Instance nicht mehr verfügbar ist.

Syntax

CALL mysql.rds_skip_transaction_with_gtid ( gtid_to_skip );

Parameter

gtid_to_skip

Die GTID der zu überspringenden Replikationstransaktion.

Nutzungshinweise

Die Prozedur mysql.rds_skip_transaction_with_gtid muss vom Hauptbenutzer ausgeführt werden.

Diese Prozedur wird für RDS für MySQL 5.7-Versionen und RDS für MySQL 8.0.26 und höhere 8.0-Versionen unterstützt.

Beispiele

Im folgenden Beispiel wird die Replikation der Transaktion mit der GTID übersprunge 3E11FA47-71CA-11E1-9E33-C80AA9429562:23.

call mysql.rds_skip_transaction_with_gtid('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');

mysql.rds_skip_repl_error

Ignoriert und löscht einen Replikationsfehler in einem MySQL-DB-Lesereplikat.

Syntax

CALL mysql.rds_skip_repl_error;

Nutzungshinweise

Der Hauptbenutzer muss die Prozedur mysql.rds_skip_repl_error auf einem Lesereplikat ausführen. Weitere Informationen zu dieser Prozedur finden Sie unter Aufrufen der Prozedur mysql.rds_skip_repl_error.

Führen Sie den MySQL-Befehl SHOW REPLICA STATUS\G aus, um festzustellen, ob Fehler aufgetreten sind. Wenn ein Replikationsfehler nicht als kritisch eingestuft, ist, können Sie mysql.rds_skip_repl_error ausführen, um den Fehler zu überspringen. Wenn mehrere Fehler aufgetreten sind, löscht mysql.rds_skip_repl_error den ersten Fehler und weist darauf hin, dass weitere Fehlermeldungen anhängig sind. In diesem Fall können Sie mithilfe von SHOW REPLICA STATUS\G die angemessene Vorgehensweise bei der Handhabung des nächsten Fehlers ermitteln. Informationen zu den zurückgegebenen Werten finden Sie unter SHOW REPLICA STATUS-Anweisung in der MySQL-Dokumentation.

Anmerkung

Frühere Versionen von MySQL verwenden SHOW SLAVE STATUS anstelle von SHOW REPLICA STATUS. Wenn Sie vor 8.0.23 eine MySQL-Version verwenden, verwenden Si SHOW SLAVE STATUS.

Weitere Informationen zur Handhabung von Replikationsfehlern mit Amazon RDS finden Sie unter Fehlerbehebung für ein Problem mit einer MySQL Read Replica.

Fehler „Replication stopped (Replikation gestoppt)“

Wenn Sie die Prozedur mysql.rds_skip_repl_error aufrufen, wird möglicherweise eine Fehlermeldung angezeigt, die besagt, dass das Replikat ausgefallen oder deaktiviert ist.

Diese Fehlermeldung wird angezeigt, wenn Sie die Prozedur auf der primären Instance statt auf dem Lesereplikat ausführen. Sie müssen diese Prozedur auf dem Lesereplikat ausführen, damit sie funktioniert.

Diese Fehlermeldung wird möglicherweise auch angezeigt, wenn Sie die Prozedur zwar auf dem Lesereplikat ausführen, die Replikation jedoch nicht neu gestartet werden kann.

Wenn Sie eine größere Anzahl von Fehlern überspringen müssen, kann die Dauer der Replikationsverzögerung den standardmäßigen Aufbewahrungszeitraum für binäre Protokolldateien (binlog) überschreiten. In diesem Fall kann es zu einem schwerwiegenden Fehler kommen, weil Binärprotokolldateien bereinigt werden, bevor ihr Inhalt in das Lesereplikat repliziert wurde. Diese Bereinigung führt zur Beendigung der Replikation, und Sie können den Befehl mysql.rds_skip_repl_error nicht mehr aufrufen, um Replikationsfehler zu überspringen und zu ignorieren.

Sie können dieses Problem verringern, indem Sie die Anzahl der Stunden erhöhen, die die Binärprotokolldateien auf Ihrer Quelldatenbankinstance aufbewahrt werden. Nachdem Sie die Aufbewahrungsdauer für binäre Protokolldateien verlängert haben, können Sie die Replikation neu starten und nach Bedarf den Befehl mysql.rds_skip_repl_error aufrufen.

Verwenden Sie zur Festlegung der Aufbewahrungszeit für Binärprotokolldateien die Prozedur mysql.rds_set_configuration und legen Sie einen Konfigurationsparameter für 'binlog retention hours' zusammen mit der Stundenanzahl für die Aufbewahrung der Binärprotokolldateien im DB-Cluster fest. Beim folgenden Beispiel wird die Aufbewahrungszeit für binäre Protokolle auf 48 Stunden festgelegt.

CALL mysql.rds_set_configuration('binlog retention hours', 48);

mysql.rds_start_replication

Startet die Replikation von einer/einem RDS-für-MySQL-DB-Instance.

Anmerkung

Sie können die gespeicherte Prozedur mysql.rds_start_replication_until oder mysql.rds_start_replication_until_gtid verwenden, um die Replikation von einer RDS-für-MySQL--DB-Instance zu initiieren und die Replikation an der angegebenen Position der Binärprotokolldatei zu stoppen.

Syntax

CALL mysql.rds_start_replication;

Nutzungshinweise

Die Prozedur mysql.rds_start_replication muss vom Hauptbenutzer ausgeführt werden.

Zum Import von Daten aus einer außerhalb von Amazon RDS ausgeführten MySQL-Instance, rufen Sie mysql.rds_start_replication für das Lesereplikat auf, um den Replikationsvorgang zu starten, nachdem Sie mysql.rds_set_external_master aufgerufen haben, um die Replikation zu konfigurieren. Weitere Informationen finden Sie unter Wiederherstellen eines Backups in einer MySQL-DB-Instance.

Zum Export von Daten in eine außerhalb von Amazon RDS ausgeführte MySQL-Instance rufen Sie mysql.rds_start_replication und mysql.rds_stop_replication für das Lesereplikat auf, um Replikationsaktionen wie das Bereinigen von Binärprotokollen zu steuern. Weitere Informationen finden Sie unter Exportieren von Daten aus einer MySQL DB-Instance mithilfe der Replikation.

Darüber hinaus können Sie mysql.rds_start_replication für das Lesereplikat aufrufen, um einen zuvor durch einen Aufruf von mysql.rds_stop_replication gestoppten Replikationsprozess wieder zu starten. Weitere Informationen finden Sie unter Arbeiten mit DB-Instance-Lesereplikaten.

mysql.rds_start_replication_until

Initiiert die Replikation von einer RDS-für-MySQL-DB-Instance und stoppt die Replikation an der angegebenen Position in der Binärprotokolldatei.

Syntax

CALL mysql.rds_start_replication_until ( replication_log_file , replication_stop_point );

Parameter

replication_log_file

Der Name des Binärprotokolls auf der Quelldatenbank-Instance, die die Replikationsinformationen enthält.

replication_stop_point

Die Position im replication_log_file-Binärprotokoll, an der die Replikation stoppt.

Nutzungshinweise

Die Prozedur mysql.rds_start_replication_until muss vom Hauptbenutzer ausgeführt werden.

Die gespeicherte Prozedur mysql.rds_start_replication_until ist für die folgenden Versionen von RDS for MySQL verfügbar:

  • MySQL 8.0.26 und höhere 8.0-Versionen

  • Alle 5.7-Versionen

Sie können diese Prozedur mit verzögerter Replikation für die Notfallwiederherstellung verwenden. Wenn Sie die verzögerte Replikation konfiguriert haben, können Sie diese Prozedur verwenden, um alle Änderungen bis zu einem Zeitpunkt unmittelbar vor Eintreten des Notfalls in einem verzögerten Lesereplikat wiederherzustellen. Nachdem diese Prozedur die Replikation gestoppt hat, können Sie das Lesereplikat zur neuen primären DB-Instance hochstufen (siehe die Anleitung unter Hochstufen eines Lesereplikats zur eigenständigen DB-Instance.

Sie können die verzögerte Replikation mit den folgenden gespeicherten Prozeduren konfigurieren:

Der für den Parameter replication_log_file angegebene Dateiname muss mit dem Binlogdateinamen der Quelldatenbankinstance übereinstimmen.

Wenn der Parameter replication_stop_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_start_replication_until_gtid

Initiiert die Replikation von einer/einem RDS-für-MySQL-DB-Instance und stoppt die Replikation unmittelbar nach der angegebenen globalen Transaktionskennung (GTID).

Syntax

CALL mysql.rds_start_replication_until_gtid(gtid);

Parameter

gtid

Die GTID, nach der die Replikation stoppen soll.

Nutzungshinweise

Die Prozedur mysql.rds_start_replication_until_gtid muss vom Hauptbenutzer ausgeführt werden.

Diese Prozedur wird für RDS für MySQL 5.7-Versionen und RDS für MySQL 8.0.26 und höhere 8.0-Versionen unterstützt.

Sie können diese Prozedur mit verzögerter Replikation für die Notfallwiederherstellung verwenden. Wenn Sie die verzögerte Replikation konfiguriert haben, können Sie diese Prozedur verwenden, um alle Änderungen bis zu einem Zeitpunkt unmittelbar vor Eintreten des Notfalls in einem verzögerten Lesereplikat wiederherzustellen. Nachdem diese Prozedur die Replikation gestoppt hat, können Sie das Lesereplikat zur neuen primären DB-Instance hochstufen (siehe die Anleitung unter Hochstufen eines Lesereplikats zur eigenständigen DB-Instance.

Sie können die verzögerte Replikation mit den folgenden gespeicherten Prozeduren konfigurieren:

Wenn der Parameter gtid eine Transaktion angibt, die bereits von dem Replikat ausgeführt wurde, wird die Replikation sofort gestoppt.

Beispiele

Das folgende Beispiel initiiert die Replikation und repliziert die Änderungen, bis die GTID erreicht wir 3E11FA47-71CA-11E1-9E33-C80AA9429562:23.

call mysql.rds_start_replication_until_gtid('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');

mysql.rds_stop_replication

Stoppt die Replikation von einer MySQL-DB-Instance.

Syntax

CALL mysql.rds_stop_replication;

Nutzungshinweise

Die Prozedur mysql.rds_stop_replication muss vom Hauptbenutzer ausgeführt werden.

Wenn Sie die Replikation für den Import von Daten aus einer außerhalb von Amazon RDS ausgeführten MySQL-Instance konfigurieren, stoppen Sie mit einem Aufruf von mysql.rds_stop_replication für das Lesereplikat den Replikationsvorgang nach Abschluss des Imports. Weitere Informationen finden Sie unter Wiederherstellen eines Backups in einer MySQL-DB-Instance.

Wenn Sie die Replikation für den Export von Daten in eine außerhalb von Amazon RDS ausgeführte MySQL-Instance konfigurieren, rufen Sie mysql.rds_start_replication und mysql.rds_stop_replication für das Lesereplikat auf, um Replikationsaktionen wie das Bereinigen von Binärprotokollen zu steuern. Weitere Informationen finden Sie unter Exportieren von Daten aus einer MySQL DB-Instance mithilfe der Replikation.

Zudem können Sie mysql.rds_stop_replication auch dazu verwenden, die Replikation zwischen zwei Amazon RDS-DB-Instances zu stoppen. In der Regel wird eine Replikation gestoppt, um eine länger dauernde Operation im Lesereplikat – zum Beispiel das Erstellen eines umfangreichen Indexes – durchzuführen. Ein gestoppter Replikationsvorgang kann durch Aufruf von mysql.rds_start_replication für das Lesereplikat wieder gestartet werden. Weitere Informationen finden Sie unter Arbeiten mit DB-Instance-Lesereplikaten.