Débogage et autres outils

Cette page contient des scripts qui facilitent le débogage et l'utilisation de PostgreSQL.

Migrer les opérations UPDATE et DELETE pour les tables sans clé primaire

Pour les tables qui ne possèdent pas de clés primaires, Database Migration Service permet de migrer l'instantané initial ainsi que les instructions INSERT pendant la phase de capture des données modifiées (CDC, Change Data Capture).

Pour mettre à jour les processus UPDATE et DELETE manquants, consultez les sections suivantes de ce document.

Détecter les données manquantes entre les instances source et Cloud SQL de destination

  1. Identifiez les tables qui n'ont pas de clé primaire :
    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. Avant de commencer la migration, vérifiez s'il existe des mises à jour ou des suppressions pour toutes les tables sans clé primaire à l'aide de cette requête :
    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');
    Où :
    • n_tup_ins : nombre de lignes insérées
    • n_tup_upd : nombre de lignes mises à jour (y compris les lignes mises à jour par HOT)
    • n_tup_del : nombre de lignes supprimées
  3. Enregistrez ces résultats dans une table distincte ou dans un fichier.
  4. Une fois la configuration de la migration terminée, exécutez à nouveau la requête.
  5. Comparez les résultats avec ceux de l'étape 3.

Si les valeurs de n_tup_upd ou n_tup_del diffèrent sur la source pendant la migration, il peut y avoir des mises à jour ou des suppressions sur la source.

Migrer manuellement les données de la source vers les instances Cloud SQL de destination

Si vous détectez des écarts entre l'instance source et l'instance de destination Cloud SQL, vous pouvez migrer les données à l'aide de l'une des options suivantes :

  • Option 1 : comparez manuellement les données entre la source et la destination Cloud SQL, puis exécutez les requêtes SQL appropriées pour ne mettre à jour que les données qui diffèrent entre la source et l'instance répliquée.

  • Option 2 : exécutez pg_dump et pg_restore pour les tables sans clé primaire. Pour en savoir plus, consultez Exporter des données à partir d'un serveur PostgreSQL sur site à l'aide de pg_dump.

  • Option 3 : Utilisez la commande PostgreSQL COPY pour migrer vos données. Pour en savoir plus, consultez la documentation PostgreSQL. Notez que cette étape nécessite que la VM d'instance répliquée puisse se connecter à la VM source.