Wie migriere ich meine Amazon-RDS-for-MySQL-DB-Instance mithilfe einer benutzerdefinierten Startzeit?

Lesedauer: 5 Minute
0

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
  1. Ä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.)

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

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 3 Jahren