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 der Database Migration Service in Standardmigrationen die Migration des ersten Snapshots und der INSERT-Anweisungen während der CDC-Phase (Change Data Capture). UPDATE- und DELETE-Anweisungen werden jedoch bei Standardmigrationen nicht automatisch für Tabellen ohne Primärschlüssel repliziert. Bei Schnellstart-Migrationen wird die Replikation von UPDATE- und DELETE-Vorgängen unterstützt, wenn Sie REPLICA IDENTITY konfigurieren.
Führen Sie die Verfahren in den folgenden Abschnitten aus, um fehlende UPDATE- und DELETE-Vorgänge in Standardmigrationen zu erkennen und manuell zu synchronisieren.
Fehlende Daten zwischen Quelle und AlloyDB for PostgreSQL-Zielcluster erkennen
- Ermitteln Sie, welche Tabellen in Ihrer Quelldatenbank 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;
- Bevor Sie den Migrationsjob starten, erfassen Sie für alle Tabellen ohne Primärschlüssel die Änderungsstatistiken:
Wobei: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 Referenzstatistiken in einer Tabelle oder Datei.
- Führen Sie die Abfrage nach Abschluss der Migrationseinrichtung und vor dem Hochstufen des Migrationsjobs noch einmal aus.
- Vergleichen Sie die ursprünglichen Statistiken mit den neuesten Statistiken. Wenn sich
n_tup_updodern_tup_delwährend der Migration geändert hat, wurden Aktualisierungen oder Löschungen an der Quelle vorgenommen, die nicht von CDC erfasst wurden.
Daten manuell von der Quelle zum AlloyDB for PostgreSQL-Zielcluster migrieren
Wenn Sie Abweichungen in Tabellen ohne Primärschlüssel feststellen, können Sie die Daten mit einer der folgenden Optionen synchronisieren:
- Option 1: Vergleichen Sie die Daten zwischen der Quelldatenbank und dem AlloyDB for PostgreSQL-Zielcluster manuell mithilfe von Prüfsummenabfragen oder Delta-Skripts und führen Sie entsprechende SQL-Updates für abweichende Datensätze aus.
- Option 2: Führen Sie
pg_dumpundpg_restorewährend der Umstellung für die Anwendungswartung speziell für die Tabellen ohne Primärschlüssel aus. - Option 3: Verwenden Sie den PostgreSQL-Befehl
COPY, um Tabellendaten zu exportieren und zu importieren. Weitere Informationen finden Sie in der PostgreSQL-Dokumentation.