Migration auf Databases for Redis
Wenn eine Datenmigration erforderlich ist
Wenn Sie Ihre persistierten Daten unbedingt beibehalten müssen, wenn Sie auf die nächste Hauptversion von Databases for Redis aktualisieren, ergreifen Sie Maßnahmen, um alle Ihre Daten erfolgreich zu migrieren. Kopieren Sie alle Schlüssel/Wert-Paare in die neue Implementierung. Führen Sie diesen Schritt von Ihrer alten Instanz auf Ihre neue Bereitstellung mithilfe der für Ihren Anwendungsfall entsprechenden Methode aus.
Databases for Redis bietet ein nicht unterstütztes Beispielskript, um diesen Prozess zu vereinfachen.
Das Migrationsscript
Warnung! Dieses Script wird nicht unterstützt und dient als Beispiel für den Aufbau eines Scripts, mit dem Sie Databases for Redis-Daten im Zuge eines Upgrades auf eine neue Version von einer Instanz auf eine andere Instanz verschieben können. Der gesamte Quellcode und die Binärdateien, die diesem Dokument beigefügt sind, werden hier als "das Programm" bezeichnet. IBM stellt keine Programmservices jeglicher Art für das Programm bereit. Das Programm wird von IBM ohne Wartung (auf "as-is"-Basis) und ohne jegliche Gewährleistung zur Verfügung gestellt. IBM haftet nicht für tatsächliche, unmittelbare und mittelbare Schäden oder Folgeschäden (entgangenen Gewinn, entgangene Einsparungen und Umsätze oder Datenverlust), selbst wenn IBM oder Vertriebspartner von IBM auf die Möglichkeit solcher Schäden hingewiesen wurden.
Das Kopieren von Daten aus Ihrer alten Databases for Redis Bereitstellung in eine neue Version beinhaltet die Ausführung eines einfachen Python , das auf GitHub verfügbar ist. Das Script kopiert alle Schlüssel aus Ihrer Quellendatenbank in Ihre neue Databases for Redis-Bereitstellung. Laden Sie das Script herunter und stellen Sie sicher, dass
Sie Python 3.x installiert haben. Unter macOS, verwenden Sie ' homebrew, um es zu installieren, und führen den Befehl ' brew install python3 aus, der Ihnen die neueste Version liefert.
Als Nächstes erstellen Sie ein Migrationsfenster, um Ihre Benutzer darüber zu informieren, dass Sie einige Wartungsarbeiten durchführen. Auf diese Weise haben Sie Zeit, alle Ihre Daten auf Ihre neue Databases for Redis Bereitstellung zu migrieren. Wenn Sie Redis als Key-Value-Store mit Verfallszeiten für Schlüssel verwenden, werden diese Verfallszeiten in Ihre neue Datenbank kopiert. In unserem Beispiel betrifft dies 10 Millionen Schlüssel in unserer Datenbank, was abhängig von Ihrer Bandbreite nicht viel Zeit für die Migration erfordert.
Berechtigungsnachweise für Ziel- und Quellendatenbank abrufen
Berechtigungsnachweise für Ziel-und Quellendatenbank in der Benutzerschnittstelle abrufen
Nun haben Sie die Anmeldeinformationen der alten Quelldatenbank und der neuen Databases for Redis Bereitstellung. Rufen Sie die Berechtigungsnachweise für Databases for Redis-Bereitstellungen ab, indem Sie die Datenbanken auf der Seite 'Ressourcen' auswählen. Klicken Sie anschließend auf den Link Serviceberechtigungsnachweise . Erstellen Sie dort eine neue Berechtigung für die Zieldatenbank, indem Sie auf Neue Berechtigung klicken. Verwenden Sie alle Berechtigungsnachweise, die Sie für die Quelle erstellen.
Berechtigungsnachweise für Ziel-und Quellendatenbank in der CLI abrufen
Rufen Sie die Berechtigungsnachweise für die Ziel-und Quellendatenbank mit Cloud Databases-CLI-Plug-inab.
Führen Sie einen Befehl wie den folgenden aus:
ibmcloud cdb deployment-connections <INSTANCE_NAME_OR_CRN>
Sie erhalten so Ihren Databases for Redis-Verbindungs-URI, der den Hostnamen und den Port einschließt. Um das decodierte CA-Zertifikat für die Datenbank zu erhalten, führen Sie folgenden Befehl aus:
ibmcloud cdb deployment-cacert <INSTANCE_NAME_OR_CRN>
Nachdem das CA-Zertifikat entschlüsselt wurde, speichern Sie es in einer Datei, um später eine Verbindung zur Datenbank herzustellen. Wenn Sie das Kennwort für Ihren Einsatz nicht kennen, holen Sie es sich entweder von Ihren generierten Dienstanmeldeinformationen oder erstellen Sie ein neues Kennwort, indem Sie den Befehl ausführen:
ibmcloud cdb deployment-user-password <INSTANCE_NAME_OR_CRN> admin <NEW PASSWORD>
Nun haben Sie alle erforderlichen Informationen für die Ziel- und Quellendatenbank.
Führen Sie das Script aus und migrieren Sie Ihre Daten.
Da Sie alle Anmeldeinformationen für beide Datenbanken (Quelle und neues Databases for Redis Ziel) haben, können Sie das Skript " pymigration.py ausführen. Führen Sie den Code von Ihrem Terminal aus, indem Sie die Berechtigungsnachweise
aus den vorherigen Schritten verwenden:
python pymigration.py <SOURCE HOST> <SOURCE PASSWORD> <SOURCE PORT>
<DESTINATION HOST> <DESTINATION_USERNAME:DESTINATION_PASSWORD> <DESTINATION PORT>
<DESTINATION CA CERTIFICATE PATH> --sslsrc --ssldst
Für neuere Versionen von Redis als Quelle, verwenden Sie ' <SOURCE USER:SOURCE PASSWORD>.
Da Sie Daten aus einer Quelle außerhalb der Databases for Redis kopieren, fügen Sie das Flag ' --sslsrc hinzu, wenn Ihre Databases for Redis SSL/TLS aktiviert ist. Wenn dies nicht der Fall ist, dann fügen Sie das Flag nicht hinzu.
Das Flag stellt sicher, dass Redis eine Verbindung zu einer Datenbank herstellt, für die SSL/TLS aktiviert ist. Fügen Sie außerdem --ssldst hinzu, da die Zieldatenbank Ihre neue Databases for Redis-Bereitstellung ist, die auch
SSL/TLS-fähig ist.
Ergänzende Flags, die Sie hinzufügen können, sind --db und --flush. --db gibt die Datenbank an, aus der Ihre Schlüssel kopiert werden. Dies ist die Datenbank, in die sie in Ihrer neuen Implementierung
kopiert wurden.
Mit dem Flag " --flush wird die Zieldatenbank geleert, bevor die Schlüssel aus der Quelldatenbank importiert werden. Wenn Sie in Ihrem neuen Einsatz alles frisch halten wollen, löscht " --flush alle Schlüssel
und importiert dann die neuen Schlüssel aus Ihrer Quelldatenbank.
Wenn Sie das Skript ausführen, das " OldDB als Quelle für die Datenmigration und " NewDB als Ziel für die migrierten Daten verwendet, erhalten Sie die folgende Ausgabe:
python pymigration.py OldDB.databases.appdomain.cloud OldDBpassword1 88888 NewDB.databases.appdomain.cloud NewDBpassword1 99999 ~/NewDBCA --sslsrc --ssldst 10000000 keys: 100% |###################################################| Time: 0:00:00 Keys disappeared on source during scan: 0 Keys already existing on destination: 0
Dieses Script hat 10 Millionen Schlüssel aus OldDB in NewDB kopiert. Es wurden keine Schlüssel in der Datenbank OldDB gelöscht. Wenn Sie der Bereitstellung " OldDB einen neuen Schlüssel
hinzufügen und versuchen, die Daten erneut zu migrieren, stellen Sie fest, dass sich die Anzahl der Schlüssel am Zielort auf 10000000 ändert, da die ursprünglichen 10 Millionen Schlüssel bereits in dieser Datenbank vorhanden sind.
10000000 keys: 100% |###################################################| Time: 0:00:00
Keys disappeared on source during scan: 0
Keys already existing on destination: 10000000
Nächste Schritte
Tauschen Sie nach der Datenmigration die Datenbankverbindungszeichenfolgen Ihrer Anwendung gegen die neuen Verbindungszeichenfolgen und Anmeldeinformationen aus.