Konfigurieren einer GTID-basierten Replikation in einer Amazon RDS MariaDB-DB-Instance - Amazon Relational Database Service

Konfigurieren einer GTID-basierten Replikation in einer Amazon RDS MariaDB-DB-Instance

Sie können eine GTID-basierte Replikation aus einer externen MariaDB-Instance der Version 10.0.24 oder höher in einer Amazon RDS MariaDB-DB-Instance einrichten. Achten Sie darauf, diese Hinweise zu befolgen, wenn Sie eine externe Quellinstance und ein Replikat auf Amazon RDS einrichten:

  • Überwachen Sie Failover-Ereignisse für die Amazon RDS MariaDB-DB-Instance, die Ihr Replikat ist. Tritt ein Failover auf, kann die DB-Instance, die Ihr Replikat ist, auf einem neuen Host mit einer anderen Netzwerkadresse wiederhergestellt werden. Weitere Informationen zum Überwachen von Failover-Ereignissen finden Sie unter Verwenden von Amazon RDS-Ereignisbenachrichtigungen.

  • Bewahren Sie die Binärprotokolle auf Ihrer Quell-Instance auf, bis Sie sichergestellt haben, dass sie auf das Replikat angewendet wurden. Durch das Aufbewahren können Sie sicherstellen, dass Sie Ihre Quell-Instance im Fall eines Ausfalls wiederherstellen können.

  • Schalten Sie automatische Backups in Ihrer MariaDB-DB-Instance auf Amazon RDS ein. Das Einschalten automatischer Backups stellt sicher, dass Sie Ihr Replikat zu einem bestimmten Zeitpunkt wiederherstellen können, wenn Sie den Master und das Replikat neu synchronisieren müssen. Weitere Informationen zu Backups und zur zeitbezogenen Wiederherstellung finden Sie unter Sichern und Wiederherstellen einer Amazon RDS-DB-Instance.

Anmerkung

Die erforderlichen Berechtigungen für das Starten einer Replikation in einer Amazon RDS-MariaDB-DB-instance sind beschränkt und für die Amazon RDS-Hauptbenutzer nicht verfügbar. Aus diesem Grund müssen Sie die Amazon RDS-Befehle mysql.rds_set_external_master_gtid und mysql.rds_start_replication verwenden, um eine Replikation zwischen der Live-Datenbank und der Amazon RDS-MariaDB-Datenbank einzurichten.

Um die Replikation zwischen einer externen Quell-Instance und einer MariaDB DB-Instance auf Amazon RDS zu starten, gehen Sie wie folgt vor.

So starten Sie eine Replikation:

  1. Legen Sie die Quell-MariaDB-Instance als schreibgeschützt fest:

    mysql> FLUSH TABLES WITH READ LOCK; mysql> SET GLOBAL read_only = ON;
  2. Rufen Sie die aktuelle GTID der externen MariaDB-Instance ab. Sie können dies mithilfe von mysql oder mithilfe des Query Editors Ihrer Wahl tun, um SELECT @@gtid_current_pos; auszuführen.

    Das GTID-Format sieht folgendermaßen aus: <domain-id>-<server-id>-<sequence-id>. Eine GTID sieht typischerweise so aus 0-1234510749-1728. Weitere Informationen zu GTIDs und ihren Komponententeilen finden Sie unter Global Transaction ID in der MariaDB-Dokumentation.

  3. Kopieren Sie die Datenbank mithilfe von mysqldump von der externen MariaDB-Instance in die Amazon RDS-MariaDB-DB-Instance. Für große Datenbanken empfiehlt es sich, die Prozedur in Importieren von Daten in eine Amazon RDS-MySQL oder MariaDB-DB-Instance mit reduzierter Ausfallzeit zu verwenden.

    Anmerkung

    Stellen Sie sicher, dass es kein Leezeichen zwischen der Option -p und dem eingegebenen Passwort gibt.

    Für Linux, macOS oder Unix:

    mysqldump \ --databases <database_name> \ --single-transaction \ --compress \ --order-by-primary \ -u <local_user> \ -p<local_password> | mysql \ --host=hostname \ --port=3306 \ -u <RDS_user_name> \ -p <RDS_password>

    Für Windows:

    mysqldump ^ --databases <database_name> ^ --single-transaction ^ --compress ^ --order-by-primary \ -u <local_user> \ -p<local_password> | mysql ^ --host=hostname ^ --port=3306 ^ -u <RDS_user_name> ^ -p <RDS_password>

    Verwenden Sie die Optionen --host, --user (-u), --port und -p im Befehl mysql, um Hostnamen, Benutzernamen, Port und Passwort für die Verbindung mit Ihrer Amazon RDS-MariaDB-DB-Instance festzulegen. Der Hostname ist der DNS-Name aus dem Endpunkt der Amazon RDS-MariaDB-DB-Instance, z. B. myinstance.123456789012.us-east-1.rds.amazonaws.com. Sie finden den Endpunktwert in den Instance-Details in der Amazon RDS-Managementkonsole.

  4. Legen Sie die Quell-MariaDB-Instance als wieder beschreibbar fest:

    mysql> SET GLOBAL read_only = OFF; mysql> UNLOCK TABLES;
  5. Fügen Sie in der Amazon RDS-Managementkonsole die IP-Adresse des Servers, der die externe MariaDB-Datenbank hostet, zu der VPC-Sicherheitsgruppe dieser Amazon RDS-MariaDB-DB-Instance hinzu. Weitere Informationen zum Modifizieren einer VPC-Sicherheitsgruppe finden Sie unter Sicherheitsgruppen für Ihre VPC im Amazon Virtual Private Cloud-Benutzerhandbuch.

    Die IP-Adresse kann sich ändern, wenn die folgenden Bedingungen erfüllt sind:

    • Sie verwenden eine öffentliche IP-Adresse für die Kommunikation zwischen der externen Quell-Instance und der DB-Instance.

    • Die externe Quell-Instance wurde gestoppt und neu gestartet.

    Wenn diese Bedingungen erfüllt sind, überprüfen Sie die IP-Adresse, bevor Sie sie hinzufügen.

    Es könnte sein, dass Sie Ihr lokales Netzwerk so konfigurieren müssen, dass es Verbindungen von der IP-Adresse Ihrer Amazon RDS MariaDB-DB-Instance zulässt, damit es mit Ihrer externen MariaDB-Instance kommunizieren kann. Verwenden Sie den Befehl host, um die IP-Adresse Ihrer Amazon RDS-MariaDB-DB-Instance zu herauszufinden:

    host <RDS_MariaDB_DB_host_name>

    Der Host-Name ist der DNS-Name aus dem Endpunkt der Amazon RDS MariaDB-DB-Instance.

  6. Verbinden Sie sich mithilfe eines Clients Ihrer Wahl mit der externen MariaDB-Instance und erstellen Sie einen MariaDB-Benutzer, der für die Replikation verwendet werden soll. Dieses Konto wird ausschließlich für die Replikation verwendet und muss auf Ihre Domäne beschränkt sein, um die Sicherheit zu erhöhen. Im Folgenden wird ein Beispiel gezeigt:

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY '<password>';
  7. Erteilen Sie für die externe MariaDB-Instance die Berechtigungen REPLICATION CLIENT und REPLICATION SLAVE für Ihren Replikationsbenutzer. Erteilen Sie beispielsweise die Sonderrechte REPLICATION CLIENT und REPLICATION SLAVE in allen Datenbanken für den repl_user-Benutzer für Ihre Domäne, mit dem folgenden Befehl:

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY '<password>';
  8. Machen Sie die Amazon RDS MariaDB-DB-Instance zum Replikat. Verbinden Sie sich als Masterbenutzer mit der Amazon RDS-MariaDB-DB-Instance und bestimmen Sie die externe MariaDB-Datenbank mithilfe des Befehls mysql.rds_set_external_master_gtid als Quell-Instance. Verwenden Sie die GTID, die Sie in Schritt 2 festgelegt haben. Im Folgenden wird ein Beispiel gezeigt:

    CALL mysql.rds_set_external_master_gtid ('mymasterserver.mydomain.com', 3306, 'repl_user', '<password>', '<GTID>', 0);
  9. Verwenden Sie auf der Amazon RDS-MariaDB-DB-Instance den Befehl mysql.rds_start_replication, um die Replikation zu starten:

    CALL mysql.rds_start_replication;