Direkt zum Inhalt

Wie verwende ich Binärprotokolle aus einer aktiven Amazon RDS für MySQL-DB-Instance, um sie auf einen lokalen Standby-Server zu replizieren?

Lesedauer: 5 Minute
0

Ich möchte eine Amazon Relational Database Service (Amazon RDS) für MySQL-DB-Instance auf einen lokalen Standby-Server replizieren.

Kurzbeschreibung

Um Daten von einer Amazon RDS für MySQL-DB-Instance auf einen lokalen Server zu migrieren, erstelle ein Lesereplikat auf AWS. Wechsle dann das Replikationsziel vom Amazon RDS für MySQL-Lesereplikat auf den lokalen Server.

Wenn du eine auf Global Transaction Identifier (GTID) basierende Replikation verwendest, findest du weitere Informationen unter Konfiguration der Positionsreplikation von binären Protokolldateien mit einer externen Quell-Instance.

Lösung

Lesereplikat der aktiven DB-Instance erstellen

Führe die folgenden Schritte aus:

  1. Vergewissere dich, dass du automatische Backups für die aktive DB-Instance aktiviert hast, die du replizieren möchtest.
    Hinweis: Die Mindestaufbewahrungsdauer für Backups beträgt einen Tag. Wenn du deine Daten sicherst, fallen zusätzliche Kosten an. Weitere Informationen findest du unter Amazon RDS – Preise.

  2. Erstelle ein Lesereplikat der aktiven DB-Instance mit derselben Konfiguration.

  3. Melde dich bei der Lesereplikat-DB-Instance an.

  4. Führe den folgenden Befehl aus, um zu bestätigen, dass die Lesereplikat-DB-Instance deiner aktiven DB-Instance entspricht.
    Für MySQL-Version 8.0.23 und höher:

    mysql> show replica status \G

    Für MySQL-Versionen vor 8.0.23:

    mysql> show slave status \G

    Hinweis: Wenn die Replikat-Instance nicht hinter deiner DB-Instance zurückbleibt, wird der Parameter Seconds_Behind_Master als 0 angezeigt.

  5. Führe den folgenden Befehl aus, um die Replikation auf der Lesereplikat-DB-Instance zu beenden:

    mysql> call mysql.rds_stop_replication;
  6. Um die Parameter -log_file und -log_position aufzuzeichnen, führe den folgenden Befehl auf der Lesereplikat-DB-Instance aus.
    Für MySQL-Version 8.0.23 und höher:

    mysql> show replica status \G

    Für MySQL-Versionen vor 8.0.23:

    mysql> show slave status \G

    Hinweis: Die -log_file ist der Wert von relay_source_log_file und -log_position ist der Wert von exec_source_log_pos.

Dump-Datei der Lesereplikat-DB-Instance erstellen

Führe die folgenden Schritte aus:

  1. Führe den folgenden Befehl im mysqldump-Client oder einem ähnlichen Hilfsprogramm aus, um ein Backup der Lesereplikat-DB-Instance zu erstellen:

    mysqldump -h hostname -u username -p dbname > backup_file_name.sql
  2. Melde dich bei deinem lokalen Server an und übertrage dann die Dump-Datei auf den Server.

Dump-Datei in der neuen DB-Instance wieder herstellen

Führe die folgenden Schritte aus:

  1. Erstelle eine neue externe DB-Instance auf dem lokalen Server.

  2. Führe den folgenden Befehl aus, um die Dump-Datei auf der neuen externen DB-Instance wiederherzustellen:

    mysql -h hostname -u username -p dbname < backup_file_name.sql
  3. Melde dich bei deiner aktiven DB-Instance an.

  4. Führe den folgenden Befehl aus, um einen Replikationsbenutzer zu konfigurieren und dem Benutzer die erforderlichen Berechtigungen zu gewähren:

    mysql> create user repl_user@'%' identified by 'repl_user';     
    mysql> grant replication slave, replication client on *.* to repl_user@'%';  
    mysql> show grants for repl_user@'%';

    Hinweis: Ersetze repl_user durch deinen Replikationsbenutzernamen.

  5. Melde dich bei der neuen externen DB-Instance an und beende dann den lokalen Server.

  6. Ändere die my.cnf-Dateiparameter so, dass sie auf deine eindeutige Server-ID und den Datenbanknamen verweisen, die du replizieren möchtest. Zum Beispiel server_id=2 und replicate-do-db=test.

  7. Speichere die Datei.

  8. Starte den lokalen Server neu.

Bestätige, dass die neue externe DB-Instance eine Verbindung zur aktiven DB-Instance herstellen kann

Wenn du Amazon Elastic Compute Cloud (Amazon EC2) als externe MySQL-Instance verwendest, aktualisiere deine Instance, um Verbindungen aus der Sicherheitsgruppe zuzulassen. Oder erlaube Verbindungen von der IP-Adresse in der Sicherheitsgruppe deiner aktiven DB-Instance. Wenn du einen externen MySQL-Server verwendest, führe telnet aus, um die Konnektivität zu testen. Weitere Informationen findest du unter Warum kann ich keine Verbindung zu meiner Amazon RDS-DB-Instance herstellen?

Führe die folgenden Schritte aus:

  1. Um die Parameter zu ändern, die der Replikat-Server für die Verbindung mit der Quelle verwendet, führe den folgenden Befehl auf der neuen externen DB-Instance aus.
    Für MySQL-Version 8.0.23 und höher:
    mysql> change replication source to source_host='rds-endpoint', source_user='repl_user', source_password='password', source_log_file='mysql-bin.000001', source_log_pos=107;
    Für MySQL-Versionen vor 8.0.23:
    mysql> change master to master_host='rds-endpoint', master_user='repl_user', master_password='password', master_log_file='mysql-bin.000001', master_log_pos=107;  
    
    Hinweis: Ersetze rds-endpoint durch den Endpunkt deiner aktiven DB-Instance. Verwende den Benutzernamen und das Passwort, die du beim Wiederherstellen der Dump-Datei in der neuen Datenbank erstellt hast. Ersetze die Werte relay_source_file und exec_source_log_pos mit den Werten -log_file und -log_position des Lesereplikats.
  2. Vergewissere dich, dass der lokale Server eine Verbindung zu deiner aktiven DB-Instance herstellen kann.

Replikation starten

Führe die folgenden Schritte aus:

  1. Melde dich beim lokalen Server an.

  2. Führe den folgenden Befehl aus, um die Replikation zu starten:
    Für MySQL-Version 8.0.23 und höher:

    mysql> start replica;

    Für MySQL-Versionen vor 8.0.23:

    mysql> start slave;
  3. Führe den folgenden Befehl aus, um zu überprüfen, ob die Replikation zwischen deiner aktiven DB-Instance und dem lokalen Server synchronisiert wird:
    Für MySQL-Version 8.0.23 und höher:

    mysql> show replica status\G

    Für MySQL-Versionen vor 8.0.23:

    mysql> show slave status\G
  4. Wenn der Parameter Seconds_Behind_Master gleich 0 ist, lösche die Lesereplikat-DB-Instance.

Ähnliche Informationen

Wie migriere ich zu einer Amazon RDS- oder Amazon Aurora DB-Instance mit AWS DMS?

Daten aus einer MySQL-DB-Instance mithilfe von Replikation exportieren

Replikation zwischen Aurora und MySQL oder zwischen Aurora und einem anderen Aurora-DB-Cluster (Replikation binärer Protokolle)