In diesem Dokument wird beschrieben, wie Sie Ihre Datenbank zu Spanner migrieren. Wir beschreiben die Migrationsphasen und die Tools, die wir für jede Phase empfehlen, je nach Quelldatenbank und anderen Faktoren. Zu den empfohlenen Tools gehören Google Cloud-Produkte sowie kommerzielle und Open-Source-Tools von Drittanbietern. Mit diesen Tools können Sie und Risiken zu reduzieren.
Jede Spanner-Migration umfasst die folgenden Hauptphasen:
- Bewerten Sie die Komplexität der Migration.
- Migrieren Sie Ihr Schema.
- Laden Sie Beispieldaten.
- Migrieren Sie Ihre Anwendung.
- Leistung testen und optimieren
- Migrieren Sie die Daten.
- Validieren Sie die Migration.
- Umstellungs- und Failover-Mechanismen konfigurieren
In diesen Phasen kann Ihr Migrationsplan je nach Faktoren erheblich variieren. z. B. die Quelle und Größe Ihrer Datenbank, die Anforderungen an Ausfallzeiten, den Anwendungscode Komplexität, Fragmentierungsschema, benutzerdefinierte Funktionen oder Transformationen und Failover und Replikationsstrategie.
Migrationstools
Wir empfehlen die Verwendung der folgenden Tools, um Sie in verschiedenen Phasen der Migration zu unterstützen, je nach Ihrer Quelldatenbank und anderen Faktoren. Einige Tools unterstützen nur bestimmte Quelldatenbanken. Für einige Schritte des Prozesses ist kein Tool verfügbar. Diese Schritte müssen Sie daher manuell ausführen.
Spanner-Migrationstool (SMT) ist ein Open-Source-Tool, das grundlegende Bewertungen, Schemakonvertierungen und Datenmigrationen.
Bewertung der Datenbankmigration (DMA) bietet eine grundlegende Bewertung für die Migration von PostgreSQL zu Spanner.
Datastream ist ein Google Cloud-Dienst mit dem Sie Change-Data-Capture-Ereignisse (CDC) und Bulk-Daten aus einem Quelldatenbank und in ein angegebenes Ziel schreiben.
Dataflow ist ein Google Cloud-Dienst, der eine große Datenmenge in Spanner schreiben, effizient mit Vorlagen arbeiten.
Bulk-Datenmigration ist eine Dataflow-Vorlage, mit der Sie große MySQL-Datenmengen direkt in Spanner migrieren können.
Bei der Migration mit minimaler Ausfallzeit werden Datastream und Dataflow verwendet, um Folgendes zu migrieren:
- Vorhandene Daten in Ihrer Quelldatenbank
- Stream von Änderungen, die während der Migration an der Quelldatenbank vorgenommen werden.
Das Data Validation Tool (DVT) ist eine standardisierte Methode zur Datenvalidierung, die von Google entwickelt und von der Open-Source-Community unterstützt wird. Sie können DVT in bestehende Google Cloud-Produkte
Migrationstools für MySQL-Quelldatenbanken
Wenn Ihre Quelldatenbank MySQL ist, können Sie einen Teil der anfänglichen Migration ausführen mit MySQL-Dumpdateien. Sie müssen eine direkte Verbindung zu Ihrer laufenden MySQL-Quelldatenbank herstellen, um eine Produktionsmigration abzuschließen.
In der folgenden Tabelle werden Migrationstools empfohlen, die auf der Migrationsphase und darauf basieren, ob Sie mit einer Dumpdatei arbeiten oder eine direkte Verbindung zu Ihrer Quelldatenbank herstellen:
Migrationsphase | Dumpdatei | Direkte Verbindung zur Quelldatenbank |
---|---|---|
Bewertung | Verwenden Sie SMT mit mysqldump . |
Verwenden Sie SMT mit mysqldump . |
Schemakonvertierung | Verwenden Sie SMT mit mysqldump . |
Verwenden Sie SMT, um das Schema zu konfigurieren und zu konvertieren. |
Laden von Beispieldaten |
|
Führen Sie eine Bulk-Migration durch. |
Datenmigration | Nicht zutreffend | Führen Sie eine Bulk-Migration und dann eine Migration mit minimaler Ausfallzeit durch. |
Datenvalidierung | Nicht zutreffend | Verwende DVT. |
Failover-Konfiguration | Nicht zutreffend | Verwenden Sie SMT für die umgekehrte Replikation. |
Migrationstools für PostgreSQL-Quelldatenbanken
Wenn Ihre Quelldatenbank PostgreSQL verwendet, können Sie einige die Migrationsphasen mithilfe einer PostgreSQL-Dumpdatei. Sie müssen eine direkte Verbindung zu Ihrer laufenden PostgreSQL-Quellinstanz herstellen, um die Migration abzuschließen.
In der folgenden Tabelle werden Migrationstools empfohlen, die auf der Migrationsphase und darauf basieren, ob Sie mit einer Dumpdatei arbeiten oder eine direkte Verbindung von Ihrer Quelldatenbank herstellen:
Migrationsphase | Dumpdatei | Direkte Verbindung zur Quelldatenbank |
---|---|---|
Bewertung | Verwenden Sie SMT mit pg_dump . |
Verwenden Sie DMA. |
Schemakonvertierung | Verwenden Sie SMT mit pg_dump . |
Verwenden Sie SMT, um das Schema zu konfigurieren und zu konvertieren. |
Beispieldaten laden |
|
Führen Sie eine Migration mit minimaler Ausfallzeit durch. |
Datenmigration | Nicht zutreffend | Führen Sie eine Migration mit minimaler Ausfallzeit durch. |
Datenvalidierung | Nicht zutreffend | Verwenden Sie DVT. |
Failover | Nicht zutreffend | Nicht zutreffend |
Komplexität der Migration bewerten
Um den Umfang und die Komplexität der Migration zu beurteilen und Ihren Ansatz zu planen, müssen Sie Daten zu Ihrer Quelldatenbank erfassen, darunter:
- Abfragemuster
- Umfang der Anwendungslogik, die von Datenbankfunktionen wie gespeicherten Prozeduren und Triggern abhängt
- Hardwareanforderungen
- Gesamtbetriebskosten (TCO)
Schema migrieren
Bevor Sie ein Schema zu einem Spanner-Schema migrieren, sollten Sie die Kompatibilität der Schemas prüfen und Ihr Schema für Spanner optimieren. Sie können beispielsweise Schlüssel ändern, löschen oder oder Spalten vorhandener Tabellen hinzufügen oder entfernen. So optimieren Sie Ihr Schema für Spanner finden Sie unter Best Practices für Schemadesign und Empfohlen Primärschlüssel-Migrationsstrategien.
Das Spanner-Migrationstool ist ein Open-Source-Tool, das von Google-Entwicklern erstellt und von der Community gepflegt wird. Es erstellt automatisch ein Spanner-Schema aus dem Schema Ihrer Quelldatenbank. Sie können das Schema mit dem Schemaassistenten des Spanner-Migrationstools anpassen.
Das Spanner-Migrationstool nimmt Schema und Daten an einem der folgenden Speicherorte auf:
- Eine Dumpdatei von einem lokalen Speicherort oder aus Cloud Storage (MySQL, PostgreSQL, CSV)
- Direkt aus der Quelldatenbank (MySQL, PostgreSQL)
Das Spanner-Migrationstool führt die folgenden Funktionen für Schemabewertungen, Empfehlungen und Migrationen aus:
- Prüfung und Empfehlungen zur Datentypkompatibilität
- Primärschlüssel bearbeiten und Empfehlungen
- Bearbeitung und Empfehlungen für sekundäre Indexe
- Tabellenbearbeitung und Empfehlungen überlappen
- Allgemeine Empfehlungen zum Schemadesign von Spanner
- Schemaversionierung
- Collaborative Schema-Änderung
Weitere Informationen zu Schemamigrationen mit dem Spanner-Migrationstool finden Sie in der
README.md
-Datei des Spanner-Migrationstools.
Sie verwenden auch das Spanner-Migrationstool für die Datenmigration.
Beispieldaten laden
Nachdem Sie ein Spanner-kompatibles Schema erstellt haben, können Sie Ihre Datenbank für den Test mit Beispieldaten vorbereiten. Sie können die Umgekehrter ETL-Workflow in BigQuery um die Beispieldaten zu laden. Weitere Informationen finden Sie unter Beispieldaten laden.
Anwendung migrieren
Für eine Datenbankmigration sind verschiedene Treiber und Bibliotheken sowie Vergütung für Funktionen, die Spanner nicht unterstützt. Bis Spanner-Stärken zu optimieren, müssen Sie möglicherweise Ihren Code, Ihre Anwendungsabläufe und Ihre Architektur ändern.
Hier sind einige der Änderungen, die für die Migration Ihrer Anwendung zu Spanner:
- Spanner unterstützt nicht das Ausführen von Nutzercode auf Datenbankebene. Sie müssen alle auf Datenbankebene gespeicherten Prozeduren und Trigger verschieben in die Anwendung ein.
- Verwenden Sie Spanner-Clientbibliotheken und objektrelationale Mapper (ORMs). Weitere Informationen finden Sie unter Übersicht über APIs, Clientbibliotheken und ORM-Treiber.
- Wenn Sie Suchanfragen übersetzen müssen, können Sie dies manuell tun oder andere Tools von Drittanbietern verwenden.
- Beachten Sie die partitionierte DML. schreibgeschützte Transaktionen, Commit-Zeitstempel, Lesezeitstempel und wie sie die Anwendungsleistung optimieren können.
Möglicherweise müssen Sie auch Änderungen an der Transaktionsabwicklung vornehmen. Es gibt keine Tools, die Ihnen dabei helfen können. Sie müssen diesen Schritt daher manuell ausführen. Beachten Sie Folgendes:
- Das Limit für Mutationen pro Commit ist 40.000. Jeder sekundäre Index einer Tabelle ist eine zusätzliche Mutation pro Zeile. Informationen zum Ändern von Daten mithilfe von Mutationen finden Sie unter Daten mithilfe von Mutationen einfügen, aktualisieren und löschen. Verwenden Sie partitionierte DML, um eine große Datenmenge zu ändern.
- Auf Transaktionsisolationsebene ist keine Verarbeitung erforderlich, Spanner-Transaktionen sind isolierter.
- Da Spanner linearisierbar ist, handhabt er Konsistenz und ist standardmäßig gesperrt.
Schema und Anwendungsleistung testen und optimieren
Die Leistungsoptimierung ist ein iterativer Prozess, bei dem Sie Messwerte wie die CPU-Auslastung und die Latenz anhand einer Teilmenge Ihrer Daten bewerten, Ihr Schema und Ihre Anwendung zur Leistungssteigerung anpassen und noch einmal testen.
Sie können beispielsweise in Ihrem Schema einen Index hinzufügen oder ändern oder einen Primärschlüssel ändern. In Ihrer Anwendung können Sie Batch-Schreibvorgänge ausführen oder Abfragen zusammenführen oder ändern.
Insbesondere für den Produktionstraffic ist die Leistungsoptimierung wichtig, um Überraschungen zu vermeiden. Die Leistungsoptimierung ist umso effektiver, je näher die Konfiguration am Durchsatz und den Datenmengen des Live-Produktivtraffics liegt.
So testen und optimieren Sie das Schema und die Anwendungsleistung:
- Laden Sie einen Teil Ihrer Daten in eine Spanner-Datenbank hoch. Für Weitere Informationen finden Sie unter Daten migrieren.
- Verweisen Sie die Anwendung auf Spanner.
- Prüfen Sie die Richtigkeit, indem Sie nach grundlegenden Aufrufabfolgen suchen.
- Prüfen, ob die Leistung Ihren Erwartungen entspricht, indem Sie Lasttests durchführen
in Ihrer Anwendung. Für die Identifizierung und Optimierung der
bei teuren Suchanfragen
Erkennen Sie mit Query Insights Probleme mit der Abfrageleistung.
Insbesondere die folgenden Faktoren können zu einer suboptimalen Abfrageleistung beitragen:
- Ineffiziente Abfragen: Informationen zum Schreiben effizienter Abfragen finden Sie unter Siehe Best Practices für SQL.
- Hohe CPU-Auslastung: Weitere Informationen finden Sie unter Prüfen Sie die hohe CPU-Auslastung.
- Sperren: Informationen zum Reduzieren von Engpässen durch Transaktionssperren finden Sie unter Transaktionen identifizieren, die zu hohen Latenzen führen können.
- Ineffizientes Schemadesign: Wenn das Schema nicht gut konzipiert ist, nicht wirklich nützlich ist.
- Hotspots: Hotspots in Spanner begrenzen den Schreibdurchsatz, insbesondere bei Anwendungen mit hoher QPS. Um Hotspots oder Anti-Patterns, überprüfen Sie den Schlüssel Visualizer Statistiken aus der Google Cloud Console abrufen. Weitere Informationen zum Vermeiden von Hotspots finden Sie unter Primärschlüssel zur Vermeidung von Hotspots auswählen.
- Wiederholen Sie bei Änderungen des Schemas oder der Indexe die Richtigkeit und Leistung. bis Sie zufriedenstellende Ergebnisse erzielt haben.
Weitere Informationen zur Feinabstimmung Ihrer Datenbankleistung erhalten Sie bei Spanner-Unterstützung.
Daten migrieren
Nachdem Sie das Spanner-Schema optimiert und verschieben Sie Ihre Daten in eine leere Produktionsgröße Spanner-Datenbank und wechseln Sie dann Spanner-Datenbank.
Je nach Quelldatenbank können Sie Ihre Datenbank möglicherweise migrieren. mit minimalen Ausfallzeiten oder längere Ausfallzeiten benötigen.
Sowohl für Migrationen mit minimaler Ausfallzeit als auch für Migrationen mit längerer Ausfallzeit empfehlen wir die Verwendung von Dataflow und dem Spanner-Migrationstool.
In der folgenden Tabelle sind die Unterschiede zwischen Migrationen mit minimaler und Migrationen mit längerer Ausfallzeit aufgeführt, einschließlich unterstützter Quellen, Formate, Größe und Durchsatz.
Migration mit minimaler Ausfallzeit | Migration mit Ausfallzeiten | |
---|---|---|
Unterstützte Quellen | MySQL, PostgreSQL | Jede Datenbank, die in CSV oder Avro exportiert werden kann |
Unterstützte Datenformate | Direkt kommunizieren Siehe Direkt Verbindung zu einer MySQL-Datenbank herstellen | MySQL, PostgreSQL, CSV, Avro |
Unterstützte Datenbankgrößen | Kein Limit | Kein Limit |
Maximaler Durchsatz | 45 GB pro Stunde | 200 GB pro Stunde |
Migration mit minimaler Ausfallzeit
Spanner unterstützt Migrationen mit minimaler Ausfallzeit von MySQL-, PostgreSQL- und Oracle-Datenbanken. Eine Migration mit minimaler Ausfallzeit besteht aus zwei Komponenten:
- Ein konsistenter Snapshot aller Daten in der Datenbank
- Den Stream der Änderungen (Einfügungen und Aktualisierungen) seit diesem Snapshot, als Change Data Capture (CDC) bezeichnet.
Migrationen mit minimaler Ausfallzeit tragen zwar zum Schutz Ihrer Daten bei, stellen Sie aber vor Herausforderungen, darunter:
- CDC-Daten während der Migration des Snapshots speichern.
- CDC-Daten beim Erfassen der eingehenden Daten in Spanner schreiben CDC-Stream
- Die Migration von CDC-Daten zu Spanner muss schneller sein als der eingehende CDC-Stream.
Um eine Migration mit minimalen Ausfallzeiten zu ermöglichen, orchestriert das Spanner-Migrationstool die folgenden Prozesse für Sie:
- Cloud Storage-Bucket zum Speichern von CDC-Ereignissen einrichten in der Quelldatenbank während der Snapshot-Migration.
- Hiermit wird ein Datastream-Job eingerichtet, der die Bulk-Ladung von CDC-Daten verschiebt und kontinuierlich inkrementelle CDC-Daten in den Cloud Storage-Bucket streamt. Sie richten das Quellverbindungsprofil im Spanner-Migrationstool ein.
- Richtet den Dataflow-Job für die Migration der CDC ein in Spanner importieren.
Sobald Dataflow die meisten Daten kopiert hat, wird das Schreiben in die Quelldatenbank beendet und es wird gewartet, bis die Migration der Daten abgeschlossen ist. Dieses Ergebnis in einer kurzen Ausfallzeit, während Spanner die Quelle aufholt. Datenbank. Danach kann die Anwendung auf Spanner umgestellt werden.
Das folgende Diagramm zeigt diesen Vorgang.
Migration mit Ausfallzeit
Bei anderen Datenbanken als MySQL, PostgreSQL oder Oracle Database können Sie mit einer Ausfallzeit zu Spanner migrieren, wenn die Datenbank in CSV oder Avro exportiert werden kann. Wir empfehlen die Verwendung von Dataflow oder Spanner-Migrationstool.
Migrationen mit Ausfallzeiten werden nur für Testumgebungen oder Anwendungen empfohlen, die einige Stunden Ausfallzeit verkraften können. In einer Live-Datenbank Migrationen mit Ausfallzeiten können Datenverluste nach sich ziehen.
Führen Sie die folgenden allgemeinen Schritte aus, um eine Migration einer Ausfallzeit durchzuführen:
- Erstellen Sie eine Dumpdatei der Daten aus der Quelldatenbank.
- Laden Sie die Dumpdatei in einem MySQL-, PostgreSQL-, Avro- oder CSV-Dump-Format.
- Laden Sie die Dumpdatei mit Dataflow oder dem Spanner-Migrationstool in Spanner.
Wenn Sie mehrere kleine Dumpdateien generieren, können Sie schneller in Spanner schreiben, da Spanner mehrere Dumpdateien parallel lesen kann.
Beim Generieren einer Dumpdatei aus der Quelldatenbank, um eine konsistente eine Übersicht der Daten, behalten Sie Folgendes im Hinterkopf:
- Damit sich die Daten während der Generierung der Dumpdatei nicht ändern, sollten Sie vor dem Ausführen des Dumps eine Lesesperre auf die Quelldatenbank anwenden.
- Erstellen Sie die Dumpdatei mit einem Lesereplikat aus der Quelldatenbank, bei dem die Replikation deaktiviert ist.
Empfohlene Formate für die Bulk-Migration
Avro ist das bevorzugte Format für eine Bulk-Migration zu Spanner. Wenn Sie Avro verwenden, beachten Sie Folgendes:
- Verwenden Sie ein Tool wie DBeam, um einen Avro-Dump der Daten zu generieren. Weitere Informationen zum Exportieren in Avro finden Sie unter Daten aus einer nicht von Spanner stammenden Datenbank in Avro-Dateien exportieren.
- Verwenden Sie einen Dataflow-Importjob, um Avro-Daten zu importieren. Weitere Informationen finden Sie unter Avro-Dateien aus Nicht-Spanner-Datenbanken importieren in Cloud Spanner
Wenn Sie CSV verwenden, beachten Sie Folgendes:
- Um einen CSV-Dump der Daten zu generieren, verwenden Sie die CSV-Generierung, die vom Quelle. Wenn die Daten neue Zeilen enthalten, verwenden Sie ein benutzerdefiniertes Zeilentrennzeichen.
- Verwenden Sie einen Dataflow-Importjob, um CSV-Daten zu importieren. Sie können eine eigene Dataflow-Importvorlage oder eine Google Cloud Vorlage importieren. Weitere Informationen finden Sie unter Dataflow-Datenpipeline-Vorlagen.
Wenn Sie MySQL oder PostgreSQL verwenden, können Sie das Spanner-Migrationstool verwenden.
Informationen zum Laden von Daten in Spanner mit benutzerdefinierten Scripts finden Sie unter Leistungsrichtlinien für das Bulk-Laden.
Datenmigration validieren
Bei der Datenvalidierung werden Daten aus der Quell- und der Zieltabelle verglichen, um sicherzustellen, dass sie übereinstimmen.
Datenvalidierungstool ist ein Open-Source-Tool, das eine Verbindung zu Datenspeichern herstellen und Prüfungen durchführen kann zwischen der Quelle und Spanner. Wir empfehlen, es zu verwenden, grundlegende Validierungen im Rahmen der Migration durchführen, z. B.:
- Prüfen Sie, ob alle Tabellen erstellt wurden und alle Schemazuordnungen korrekt sind richtig .
- Gleichen Sie die Anzahl der Zeilen für jede Tabelle ab.
- Extrahieren Sie zufällige Zeilen, um die Richtigkeit zu überprüfen.
- Validieren Sie die Spalten (
count
,sum
,avg
,min
,max
,group by
). - Vergleichen Sie alle zyklischen Redundanzprüfungen oder Hash-Funktionen auf Zeilenebene.
Wenn Sie spezifischere Validierungen durchführen möchten, können Sie während der Migration benutzerdefinierte Prüfungen erstellen.
Umstellungs- und Failover-Mechanismen konfigurieren
Migrationen sind oft zeitaufwendig und komplex. Fallbacks einbinden, um sie zu vermeiden Auswirkungen haben, falls während der Migration Fehler auftreten. mit minimaler Ausfallzeit zur Quelldatenbank zurückkehren.
Derzeit wird empfohlen, Änderungsstreams zu verwenden, um die umgekehrte Replikation auszuführen und die Daten über einen Stream wie Pub/Sub oder Cloud Storage in die Quelldatenbank zurückzuschreiben.
Die umgekehrte Replikation muss Folgendes tun:
- Sie können Änderungen an Datentypen oder -inhalten verarbeiten.
- Machen Sie alle während der Migration ausgeführten Transformationen rückgängig.
- Die Daten werden unter Berücksichtigung der Sharding-Schemata an die entsprechende Zielanwendung gesendet.