mysql.rds_set_external_master_with_delay - Amazon Relational Database Service

mysql.rds_set_external_master_with_delay

Konfiguriert eine Amazon RDS-MySQL-DB-Instance für die Verwendung als Lesereplikat 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 der für den Parameter replication_user_name angegebenen Benutzer-Kennung 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.

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 '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' IDENTIFIED BY 'SomePassW0rd'

Weitere Informationen finden Sie unter Replikation mit einer MySQL oder MariaDB-Instance, die außerhalb von Amazon RDS ausgeführt wird.

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

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

  • MySQL 5.6.40 und höhere 5.6-Versionen

  • MySQL 5.7.22 und höhere 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, dieauß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);