Übersicht
Diese Seite enthält Skripts, die beim Debuggen und Verwenden von PostgreSQL helfen.
UPDATE- und DELETE-Vorgänge für Tabellen ohne Primärschlüssel migrieren
Bei Tabellen ohne Primärschlüssel unterstützt Database Migration Service die Migration des ersten Snapshots und der INSERT-Anweisungen während der CDC-Phase (Change Data Capture).
Informationen zum Aktualisieren der fehlenden UPDATE- und DELETE-Prozesse finden Sie in den späteren Abschnitten dieses Dokuments.
Fehlende Daten zwischen der Quell- und der Cloud SQL-Zielinstanz erkennen
- Ermitteln Sie, welche Tabellen keine Primärschlüssel haben:
select tab.table_schema, tab.table_name from information_schema.tables tab left join information_schema.table_constraints tco on tab.table_schema = tco.table_schema and tab.table_name = tco.table_name and tco.constraint_type = 'PRIMARY KEY' where tab.table_type = 'BASE TABLE' and tab.table_schema not in ('pg_catalog', 'information_schema', 'pglogical') and tco.constraint_name is null order by table_schema, table_name; - Prüfen Sie vor Beginn der Migration für alle Tabellen ohne Primärschlüssel mit dieser Abfrage, ob es Aktualisierungen oder Löschvorgänge gibt:
Dabei gilt:SELECT schemaname, relname, n_tup_ins, n_tup_upd, n_tup_del FROM pg_stat_user_tables WHERE schemaname NOT IN ('pglogical', 'pg_catalog', 'information_schema');n_tup_ins: Anzahl der eingefügten Zeilenn_tup_upd: Anzahl der aktualisierten Zeilen (einschließlich HOT-aktualisierter Zeilen)n_tup_del: Anzahl der gelöschten Zeilen
- Speichern Sie diese Ergebnisse entweder in einer separaten Tabelle oder in einer Datei.
- Führen Sie die Abfrage nach Abschluss der Migrationseinrichtung noch einmal aus.
- Vergleichen Sie die Ergebnisse mit den Ergebnissen aus Schritt 3.
Wenn es während der Migration Unterschiede bei den Werten von n_tup_upd oder n_tup_del in der Quelle gibt, sind möglicherweise einige Aktualisierungen oder Löschvorgänge in der Quelle vorhanden.
Daten manuell von der Quelle zu den Cloud SQL-Zielinstanzen migrieren
Wenn Sie feststellen, dass es Abweichungen zwischen der Quell- und der Cloud SQL-Zielinstanz gibt, können Sie die Daten mit einer der folgenden Optionen migrieren:
Option 1: Vergleichen Sie die Daten manuell zwischen der Quelle und dem Cloud SQL-Ziel und führen Sie entsprechende SQL-Abfragen aus, um nur die Daten zu aktualisieren, die sich zwischen der Quelle und dem Replikat unterscheiden.
Option 2: Führen Sie
pg_dumpundpg_restorefür die Tabellen ohne Primärschlüssel aus. Weitere Informationen finden Sie unter Daten mit pg_dump von einem lokalen PostgreSQL-Server exportieren.Option 3: Verwenden Sie den Postgres
COPYBefehl, um Ihre Daten zu migrieren. Weitere Informationen finden Sie in der PostgreSQL-Dokumentation. Beachten Sie, dass für diesen Schritt eine Verbindung zwischen der Replikat-VM und der Quell-VM erforderlich ist.