Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Wie kann ich eine unverschlüsselte Amazon RDS DB-Instance für MySQL oder MariaDB mit minimalen Ausfallzeiten verschlüsseln?
Ich habe versucht, eine verschlüsselte Read Replica meiner unverschlüsselten Amazon Relational Database Service (Amazon RDS) -Instance für MySQL oder MariaDB zu erstellen. Ich habe jedoch eine Fehlermeldung erhalten.
Kurzbeschreibung
Amazon RDS hat die folgenden Einschränkungen für verschlüsselte DB-Instances:
- Sie können eine bestehende unverschlüsselte Amazon RDS-DB-Instance nicht ändern, um die Instance zu verschlüsseln.
- Sie können keine verschlüsselte Read Replica aus einer unverschlüsselten Instance erstellen.
Da Sie eine bestehende Amazon RDS-Instance nicht verschlüsseln können, müssen Sie eine neue verschlüsselte Instance erstellen. Andernfalls erhalten Sie beim Erstellen einer verschlüsselten Read Replica einer unverschlüsselten Amazon RDS for MySQL-Instance die folgende Fehlermeldung:
„Sie können keine verschlüsselte Read Replica aus einer unverschlüsselten Instance erstellen. (Service: AmazonRDS; Statuscode: 400; Fehlercode: InvalidParameterCombination; Anfrage-ID:)“
Gehen Sie wie folgt vor, um eine unverschlüsselte DB-Instance mit minimaler Ausfallzeit zu verschlüsseln:
- Verschlüsseln Sie einen unverschlüsselten Snapshot, den Sie aus einer unverschlüsselten Read Replica der DB-Instance erstellen.
- Stellen Sie eine neue DB-Instance aus dem verschlüsselten Snapshot wieder her, um eine neue verschlüsselte DB-Instance bereitzustellen.
- Verwenden Sie die MySQL-Replikation, um Änderungen von der Quelle zur neuen verschlüsselten DB-Instance zu synchronisieren.
- Stellen Sie sicher, dass die neue, verschlüsselte DB-Instance mit der Quell-DB-Instance synchronisiert ist.
- Wechseln Sie Ihre Verbindungen und leiten Sie dann Ihren Traffic an die neue DB-Instance weiter.
Lösung
Verschlüsseln eines unverschlüsselten Snapshots
Befolgen Sie die folgenden Schritte, um einen unverschlüsselten Snapshot zu verschlüsseln, den Sie aus einer unverschlüsselten Read Replica erstellen:
-
Erstellen Sie eine temporäre Read Replica für die unverschlüsselte Amazon RDS-DB-Instance als Quelle. In diesem Beispiel heißt die unverschlüsselte Quell-DB-Instance QUELLE-EU und die temporäre Read Replica heißt TEMP-RR.
-
Stellen Sie eine Verbindung zu TEMP-RR her und beobachten Sie die Replikatverzögerung, bis Seconds_Behind_Master stabil auf dem Wert 0 ist. Der stabile Wert zeigt an, dass TEMP-RR mit SOURCE-EU synchronisiert ist.
mysql> SHOW SLAVE STATUS \G Seconds_Behind_Master: 0
-
Stoppen Sie den Replikations-Prozess auf TEMP-RR:
MySQL > call mysql.rds_stop_replication; +---------------------------+ | Message | +---------------------------+ | Slave is down or disabled | +---------------------------+
-
Notieren Sie sich die Werte für Relay_Master_Log_File und Exec_Master_Log_Pos von TEMP-RR:
mysql> SHOW SLAVE STATUS \G Relay_Master_Log_File: mysql-bin-changelog.000012 Exec_Master_Log_Pos: 123
-
Stellen Sie in QUELLE-EU den Parameter Binlog-Aufbewahrungszeiten ein, um Binärprotokolle für die Zeit aufzubewahren, die für den Abschluss des Vorgangs erforderlich ist. Im folgenden Beispiel sind die Binlog-Aufbewahrungszeiten auf 24 Stunden festgelegt:
mysql> call mysql.rds_set_configuration('binlog retention hours', 24);
-
Machen Sie einen Snapshot von TEMP-RR. Löschen Sie optional TEMP-RR, nachdem Sie den Snapshot erstellt haben.
-
Kopieren Sie den Snapshot von TEMP-RR und setzen Sie Enable Encryption auf Ja.
Eine neue DB-Instance aus dem verschlüsselten Snapshot wiederherstellen
Gehen Sie wie folgt vor, um eine neue DB-Instance aus dem verschlüsselten Snapshot wiederherzustellen:
- Stellen Sie eine neue DB-Instance aus dem kopierten Snapshot wieder her, für den die Verschlüsselung aktiviert ist. In diesem Beispiel heißt die neue verschlüsselte DB-Instance NEU-RR-EN.
- Ändern Sie die eingehenden Regeln in der Sicherheitsgruppe QUELLE-EU, um den Datenverkehr von NEU-RR-EN zuzulassen. Wenn Sie dieselbe Sicherheitsgruppe auf beiden DB-Instances verwenden, können Sie dieselbe Sicherheitsgruppen-ID-Referenz wie QUELLE-EU verwenden.
Hinweis: Achten Sie darauf, ausgehenden Datenverkehr von NEU-RR-EN nach QUELLE-EU zuzulassen.
Synchronisieren Sie Änderungen von der Quell-Instance mit der neuen verschlüsselten Instance
Gehen Sie wie folgt vor, um mithilfe der MySQL-Replikation Änderungen von der Quelle auf die neue verschlüsselte DB-Instance zu synchronisieren:
- Loggen Sie sich bei SOURCE-EU ein.
- Richten Sie einen Replikationsbenutzer ein und gewähren Sie dem Benutzer dann die erforderlichen Berechtigungen:
Hinweis: Ersetzen Sie repl_user durch Ihren eigenen Replikationsbenutzernamen und password123 durch Ihr eigenes Passwort.mysql> create user 'repl_user'@'%' identified by 'password123'; mysql> grant replication slave, replication client on *.* to 'repl_user'@'%'; mysql> show grants for 'repl_user'@'%';
- Stellen Sie eine Verbindung zu NEU-RR-EN her und stellen Sie eine Replikationsverbindung zu QUELLE-EU her:
Hinweis: Ersetzen Sie den rds-Endpunkt mit dem DB-Instance-Endpunkt für QUELLE-EU. Ersetzen Sie repl\ _user und password123 durch den Benutzernamen und das Passwort, die Sie erstellt haben. Verwenden Sie die Werte Relay\ _Master\ _Log\ _File und Exec\ _Master\ _Log\ _Pos, um die Replikation mit der mysql.rds\ _set\ _external\ _master-Prozedur einzurichten. Wenn QUELLE-EUöffentlich zugänglich ist und NEU-RR-EN auf „privat“ gesetzt ist, verwenden Sie die private IP-Adresse (von QUELLE-EU) anstelle des rds-Endpunkts.mysql> CALL mysql.rds_set_external_master ( 'rds-endpoint' , 3306 , 'repl_user' , 'password123' , 'mysql-bin.000012' , 123 , 0 );
- Starten Sie von NEU-RR-EN aus die Replikation:
mysql > CALL mysql.rds_start_replication;
Sicherstellen, dass die verschlüsselte Instance mit der Quell-Instance synchronisiert ist
Befolgen Sie die folgenden Schritte, um zu überprüfen, ob die neue verschlüsselte DB-Instance mit der Quell-DB-Instance synchronisiert ist:
-
Vergewissern Sie sich von NEU-RR-EN aus, dass die Replikation erfolgreich und synchron zwischen QUELLE-EU und NEU-RR-EN war:
mysql> SHOW SLAVE STATUS \G
Wenn Ihre Verbindung zwischen der Quell-DB-Instance und der Read Replica erfolgreich ist, sieht Ihre Ausgabe ähnlich der folgenden aus:
Slave_IO_State: Waiting for master to send eventSeconds Behind master: 0
-
Nachdem Seconds_Behind_Master stabil auf dem Wert 0 ist, stoppen Sie den Datenverkehr und schließen Sie die Verbindungen auf QUELLE-EU.
**Hinweis:**Stoppen Sie alle Anwendungsserver und Clients, die eine Verbindung zu QUELLE-EU herstellen, um sicherzustellen, dass keine neuen Änderungen an QUELLE-EU vorgenommen werden. Optional können Sie die von QUELLE-EU verwendete Sicherheitsgruppe vorübergehend sperren. Dadurch wird eingehender Datenverkehr von jeder Anwendung oder jedem Client verhindert, mit Ausnahme von NEU-RR-EN und dem Host, von dem aus der Benutzer diese Aktionen ausführt.
Wechseln Sie Ihre Verbindungen und leiten Sie Ihren Traffic an die neue DB-Instance weiter
Befolgen Sie folgende Schritte, um Ihre Verbindungen zu wechseln und Ihren Datenverkehr auf die neue DB-Instance umzuleiten:
-
Stellen Sie als Datenbank-Leader-Benutzer eine Verbindung zu NEU-RR-EN her und beenden Sie dann die Replikation:
MySQL > call mysql.rds_stop_replication;
**Wichtig:**Nachdem Sie diesen Befehl ausgeführt haben, repliziert NEU-RR-EN keine Daten mehr aus QUELLE-EU.
-
Machen Sie NEU-RR-EN zu einem eigenständigen Server, indem Sie die Replikationsbeziehung zwischen QUELLE-EU und NEU-RR-EN beenden:
MySQL > call mysql.rds_reset_external_master;
-
Verweisen Sie alle Anwendungen, Clients und Datenbankverbindungen auf NEU-RR-EN, indem Sie den DNS-Endpunkt NEU-RR-EN in allen Verbindungszeichenfolgen angeben. Oder benennen Sie QUELLE-EU um und ändern Sie dann NEU-RR-EN, sodass es denselben Namen verwendet, den QUELLE-EU verwendet.
-
Vergewissern Sie sich, dass die Sicherheitsgruppenregeln auf NEU-RR-EN eingehenden Datenverkehr von den entsprechenden Anwendungen und Clients zulassen.
-
Löschen Sie SOURCE-EU.
Hinweis: Es hat sich bewährt, diesen Vorgang auf einer Test-Instance zu testen, bevor dieser Vorgang in einer Produktionsumgebung angewendet wird
Weitere Informationen
Arbeiten mit Read Replicas von DB-Instances
Wie verschlüssele ich Amazon RDS-Snapshots mit einem KMS-Schlüssel?
Problembehandlung bei der Replikation auf der MySQL-Website
Konfiguration der Positionsreplikation von binären Logdateien mit einer externen Quell-Instance

Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 5 Jahren
- AWS OFFICIALAktualisiert vor 3 Jahren