Wie kann ich Binärprotokolle aus einer aktiven Amazon RDS für MySQL-DB-Instance verwenden, um sie auf eine lokale Standby-Instance zu replizieren?

Lesedauer: 4 Minute
0

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

Kurzbeschreibung

Um Daten von Amazon RDS for MySQL auf einen lokalen Datenbankserver zu migrieren, erstellen Sie zunächst ein Lesereplikat auf AWS. Wechseln Sie dann das Replikationsziel vom Amazon RDS für MySQL-Lesereplikat auf den lokalen Server.

Wenn Sie die GTID-basierte Replikation verwenden, finden Sie weitere Informationen unter Konfiguration der Positionsreplikation von binären Logdateien mit einer externen Quell-Instance.

Lösung

1.Vergewissern Sie sich, dass automatische Backups für die DB-Instance aktiviert sind, die Sie replizieren möchten. In diesem Beispiel ist die DB-Instance RDS-active.
Hinweis: Die Mindestaufbewahrungsdauer für Backups beträgt einen Tag.

2.Erstellen Sie ein Lesereplikat der DB-Instance mit derselben Konfiguration. In diesem Beispiel ist das Replikat RDS-Standby.

3.Melden Sie sich bei der RDS-Standby-DB-Instance an und vergewissern Sie sich, dass das Replikat den Status RDS-active erreicht hat:

mysql> show slave status \G

Hinweis: Die seconds_behind_master müssen 0 sein, was bedeutet, dass es keine Replikatverzögerung gibt.

4.Stoppen Sie die Replikation bei RDS-standby:

mysql> call mysql.rds_stop_replication;

5.Zeichnen Sie Daten aus dem Replikat auf und notieren Sie sich dann die Parameter -log_file und -log_position:

mysql> show slave status \G

Hinweis: Die -log_file ist der Wert von Relay_Master_Log_File und -log_position ist der Wert von Exec_Master_Log_Pos.

6.Verlassen Sie das Terminal und verwenden Sie mysqldump (oder ein ähnliches Hilfsprogramm), um eine Sicherungskopie von RDS-standby zu erstellen, die auf den Zielserver repliziert wird. In diesem Beispiel ist der lokale Zielserver MySQL-target.

$ mysqldump -h hostname -u username -p dbname > backup_file_name.sql

7.Nachdem Sie das Backup erstellt haben, übertragen Sie die Sicherungsdatei auf den lokalen Zielserver, indem Sie sich bei MySQL-target anmelden.

8.Erstellen Sie eine neue Datenbank und stellen Sie die Datenbank dann mithilfe von dumpfile auf der neuen externen DB-Instance wieder her:

$ mysql -h hostname -u username -p dbname < backup_file_name.sql

9.Melden Sie sich bei der RDS-active-DB-Instance an, richten Sie einen Replikationsbenutzer ein und gewähren Sie dem Benutzer dann die erforderlichen Rechte. Stellen Sie sicher, dass Sie repl\ _user durch Ihren eigenen Replikationsbenutzernamen ersetzen.

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: Weitere Informationen finden Sie unter Replikation zwischen Aurora und MySQL oder Replikation zwischen Aurora und einem anderen Aurora-DB-Cluster (binäre Protokollreplikation).

10.Melden Sie sich bei der Ziel-DB-Instance an und beenden Sie dann den MySQL-Server.

11.Ändern Sie die Parameter der Datei my.cnf so, dass sie auf Ihre eindeutige Server-ID und den Namen der Datenbank verweisen, die Sie aus der DB-Instance replizieren möchten. Zum Beispiel server_id=2 und replicate-do-db=test.

12.Speichern Sie die Datei.

13.Starten Sie den MySQL-Server auf MySQL-target neu.

14.Stellen Sie eine Verbindung zur RDS-active-DB-Instance her. Führen Sie dazu den folgenden Befehl auf ** MySQL-target** aus:

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;

15.Bestätigen Sie, dass MySQL-target eine Verbindung zu RDS-active herstellen kann.

Hinweis: Wenn Sie Amazon Elastic Compute Cloud (Amazon EC2) als externe MySQL-Instance verwenden, lassen Sie Verbindungen von der Sicherheitsgruppe oder IP-Adresse in der Sicherheitsgruppe der RDS-active-DB-Instance zu. Wenn Sie einen externen MySQL-Server verwenden, führen Sie telnet aus, um die Konnektivität zu testen. Weitere Informationen finden Sie unter Wie löse ich Probleme bei der Verbindung mit meiner Amazon RDS-DB-Instance?

Der RDS-Endpunkt ist der Endpunkt für die RDS-active-DB-Instance. Der Benutzername und das Passwort sind derselbe Benutzername und dasselbe Passwort, den bzw. das Sie in Schritt 9 erstellt haben. Die Werte MASTER_LOG_FILE und MASTER_LOG_POS sind die in Schritt 5 angegebenen Werte.

16.Melden Sie sich bei MySQL-target an und starten Sie die Replikation:

mysql> start slave;

Überprüfen Sie, ob die Replikation zwischen RDS-active und MySQL-target synchronisiert wird:

mysql> Show slave status\G

17.Wenn die Sekunden hinter dem Master Null sind, können Sie die RDS-standby-DB-Instance löschen.

Verwandte Informationen

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

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