Wie migriere ich meine Amazon-RDS-for-MySQL-DB-Instance mithilfe einer benutzerdefinierten Startzeit?
Ich möchte meinen Amazon-Relational-Database-Service-for-MySQL-DB-Instance (Amazon RDS) mithilfe einer benutzerdefinierten Startzeit auf eine andere MySQL-DB-Instance migrieren. Wie kann ich vorgehen?
Kurzbeschreibung
Um Daten von Amazon RDS for MySQL auf eine andere MySQL-DB-Instance zu migrieren, können Sie eine der folgenden Methoden verwenden:
- Binlog-basierte Replikation
Hinweis: Wenn Sie Version MySQL Version 8.0.17 verwenden, druckt das Modul möglicherweise nicht die Position und den letzten Dateinamen der Binlog-Datei während einer Crash-Wiederherstellung aus. Infolgedessen können Sie den Ansatz der Binlog-Replikation nicht verwenden, um Ihre Daten zu migrieren. Auf der MySQL-Website finden Sie dieses bekannte Problem. - AWS DMS
Auflösung
Binlog-Replikation
Voraussetzungen:
- Die Binlog-Replikation verwendet Binlog-Dateien, die auf der Quelle generiert werden, um laufende Änderungen aufzuzeichnen. Setzen Sie den Parameter binlog_format auf das binäre Protokollierungsformat Ihrer Wahl (ROW, STATEMENT oder MIXED).
- Erhöhen Sie den Parameter Binlog-Aufbewahrungszeiten auf einen höheren als Ihren aktuellen Wert. Auf diese Weise verbleiben Binlogs, die noch nicht ausgeliefert wurden, auf der Amazon-RDS-for-MySQL-Quell-Instance.
- Stellen Sie sicher, dass die Amazon-RDS-for-MySQL-Instance vom Ziel-Host aus erreichbar ist.
Gehen Sie wie folgt vor, um Daten von Amazon RDS for MySQL mithilfe der Binlog-Replikation auf eine andere MySQL-DB-Instance zu migrieren:
1. Führen Sie eine Point-in-Time-Wiederherstellung von der Amazon RDS-Quell-DB-Instance mit einer benutzerdefinierten Startzeit (oder einem Point-in-Time-Wert) durch.
2. Erstellen Sie ein Backup der Point-in-Time-Wiederherstellungs-RDS-Instance.
Zum Beispiel können Sie mysqldump verwenden, um diese Aufgabe auszuführen:
mysqldump -h rdsendpoint -u username -p dbname > backupfile.sql
3. Überprüfen Sie die Fehlerprotokolldatei der Point-in-Time-Wiederherstellungs-RDS-Instance und notieren Sie die Meldung, die sich auf die zuletzt angewendete Binlog-Datei und -Position bezieht.
Hier ist eine Beispiel-Protokolldateimeldung:
[Note] InnoDB: Last MySQL binlog file position 0 456, file name mysql-bin-changelog.152707
Hinweis: Sie müssen zur Replikation auf die Datensatz-Binlog-Datei und alle nachfolgenden Binlog-Dateien zugreifen. Die Replikation von der Quell-RDS-Instance kann nur mit diesen Dateien durchgeführt werden. Die maximale Binlog-Aufbewahrungsdauer in RDS MySQL kann auf nur sieben Tage festgelegt werden, und der Standardwert ist „NULL“. (Weitere Informationen finden Sie unter mysql.rds_set_configuration.) Behalten Sie daher diese Binlog-Dateien auf der Quell-Instance bei, um sie in späteren Schritten abzuschließen.
4. Richten Sie einen Replikationsbenutzer ein und erteilen Sie dem Benutzer die erforderlichen Berechtigungen für die Quell-Instance von Amazon RDS for MySQL:
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@'%';
5. Übertragen Sie die Sicherungsdatei auf den lokalen Zielserver, indem Sie sich bei MySQL-target anmelden. Erstellen Sie eine neue Datenbank und stellen Sie die Datenbank mithilfe von dumpfile in der neuen externen DB-Instance wieder her:
$ mysql -h hostname -u username -p dbname < backupfile.sql
6. Stoppen Sie das Ziel MySQL Engine:
$ service mysqld stop
- Ändern Sie die Dateiparameter my.cnf so, dass sie auf Ihre eindeutige Server-ID und die Datenbank verweisen, die Sie replizieren möchten.
Beispiel:
server_id=2 replicate-do-db=testdb
Wenn Sie mehrere Datenbanken replizieren, können Sie die Option replicate-do-db mehrmals verwenden und diese Datenbanken in separaten Zeilen wie folgt angeben:
replicate-do-db=<db_name_1> replicate-do-db=<db_name_2> replicate-do-db=<db_name_N>
Weitere Informationen zum Erstellen eines Replikationsfilters mit dem Datenbanknamen finden Sie unter replicate-do-db auf der MySQL-Website.
8. Speichern Sie die Datei und starten Sie die MySQL-DB-Engine auf der MySQL-DB-Ziel-Instance neu.
Wenn Sie beispielsweise auf einem Linux-System sind, können Sie die folgende Syntax verwenden:
service mysqld restart
9. Stellen Sie eine Verbindung zur Quell-RDS-for-MySQL-DB-Instance her.
Beispiel:
mysql> change master to master_host='rds-endpoint',master_user='repl_user', master_password='password', master_log_file='mysql-bin.152707', master_log_pos= 456;
master_host: Endpunkt der Amazon-RDS-for-MySQL-Quell-Instance.
master_user: Name des Replikationsbenutzers (erstellt in Schritt 4).
master_password: Passwort des Replikationsbenutzers.
master_log_file: Der in Schritt 3 aufgezeichnete Binlog-Dateiname. (In Schritt 3 gab die Beispielausgabe „mysql-bin-changelog.152707" als binlog-Dateiname an.)
master_log_pos: Die in Schritt 3 aufgezeichnete Binlog-Position. (In Schritt 3 gab die Beispielausgabe „456" als Position der Binlog-Datei an.)
- Melden Sie sich bei der Ziel-RDS-for-MySQL-DB-Instance an und beginnen Sie die Replikation mit dem folgenden Befehl:
mysql> start slave;
11. Vergewissern Sie sich, dass die Replikation zwischen dem Quell-RDS-for-MySQL-DB-Instance und der Ziel-MySQL-DB-Instance synchronisiert wird:
mysql> show slave status\G
AWS DMS
Bevor Sie die Replikation mithilfe des AWS Database Migration Service (AWS DMS) einrichten, überprüfen Sie die folgenden Ressourcen:
- Um ein Backup von der wiederhergestellten Point-in-Time-Instance zu erstellen, lesen Sie die Schritte 1-5 im Abschnitt Binlog-Replikation. Es ist eine bewährte Methode, diese Schritte zu befolgen, da die benutzerdefinierte Startzeit zu jedem (vergangenen) Zeitpunkt innerhalb Ihres Aufbewahrungszeitraums für Backups erfolgen kann. Nachdem Sie die Sicherung von der Ziel-DB-Instance wiederhergestellt haben, notieren Sie die Checkpoint-Log-Sequenznummer (LSN), die während des DB-Wiederherstellungsprozesses generiert wird. Sie müssen auf das LSN verweisen, um eine Startzeit für die Änderungsdatenerfassung (CDC) festzulegen. Um den Checkpoint LSN zu erhalten, überprüfen Sie die Fehlerprotokolldatei der wiederhergestellten RDS-MySQL-Instance unmittelbar nach Abschluss des Point-in-Time-Wiederherstellungsprozesses. Beispiel:
[Note] InnoDB: Log scan progressed past the checkpoint lsn 44326835524
-
Um die CDC von einem benutzerdefinierten Startpunkt aus zu starten, kann der Benutzer den Befehl Master-Status anzeigen ausführen, um einen Binlog-Dateinamen, eine Position und mehrere andere Werte zurückzugeben. Weitere Informationen zum Starten der CDC von einem benutzerdefinierten Startpunkt aus finden Sie unter Durchführen der Replikation ab einem CDC-Startpunkt.
-
Informationen zum Einrichten einer MySQL-Datenbank als Quelle für die AWS-DMS-Replikation finden Sie unter Verwenden einer MySQL-kompatiblen Datenbank als Quelle für AWS DMS.
-
Informationen zum Einrichten einer MySQL-Datenbank als Ziel für die AWS-DMS-Replikation finden Sie unter Verwenden einer MySQL-kompatiblen Datenbank als Ziel für den AWS Database Migration Service.
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 3 Jahren
- AWS OFFICIALAktualisiert vor 3 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 3 Jahren