Debugging und andere Tools

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

  1. 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;
  2. Bevor Sie den Migrationsjob starten, erfassen Sie für alle Tabellen ohne Primärschlüssel die Änderungsstatistiken:
    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');
    Wobei:
    • n_tup_ins: Anzahl der eingefügten Zeilen
    • n_tup_upd: Anzahl der aktualisierten Zeilen (einschließlich HOT-aktualisierter Zeilen)
    • n_tup_del: Anzahl der gelöschten Zeilen
  3. Speichern Sie diese Referenzstatistiken in einer Tabelle oder Datei.
  4. Führen Sie die Abfrage nach Abschluss der Migrationseinrichtung und vor dem Hochstufen des Migrationsjobs noch einmal aus.
  5. Vergleichen Sie die ursprünglichen Statistiken mit den neuesten Statistiken. Wenn sich n_tup_upd oder n_tup_del wä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_dump und pg_restore wä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.