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 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 folgenden Abschnitten dieses Dokuments.

Fehlende Daten zwischen der Quell- und der Cloud SQL-Zielinstanz erkennen

  1. Finden Sie heraus, 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;
  2. Prüfen Sie vor Beginn der Migration für alle Tabellen ohne Primärschlüssel, ob Aktualisierungen oder Löschungen vorhanden sind. Verwenden Sie dazu diese Abfrage:
    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 Ergebnisse entweder in einer separaten Tabelle oder in einer Datei.
  4. Führen Sie die Abfrage nach Abschluss der Migrationseinrichtung noch einmal aus.
  5. Vergleichen Sie die Ergebnisse mit denen 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, wurden möglicherweise einige Aktualisierungen oder Löschungen in der Quelle vorgenommen.

Daten manuell von der Quelle zu den Cloud SQL-Zielinstanzen migrieren

Wenn Sie Abweichungen zwischen der Quelle und der Cloud SQL-Zielinstanz feststellen, können Sie die Daten mit einer der folgenden Optionen migrieren:

  • Option 1: Vergleichen Sie die Daten zwischen der Quelle und dem Cloud SQL-Ziel manuell 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_dump und pg_restore fü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 PostgreSQL-Befehl COPY, um Ihre Daten zu migrieren. Weitere Informationen finden Sie in der PostgreSQL-Dokumentation. Für diesen Schritt muss die Replikat-VM eine Verbindung zur Quell-VM herstellen können.