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) dans les migrations standards. Toutefois, les instructions UPDATE et DELETE ne sont pas automatiquement répliquées pour les tables sans clé primaire dans les migrations standards (les migrations de démarrage rapide permettent de répliquer les opérations UPDATE et DELETE lorsque vous configurez REPLICA IDENTITY).

Pour détecter et synchroniser manuellement les opérations UPDATE et DELETE manquantes dans les migrations standards, suivez les procédures décrites dans les sections suivantes.

Détecter les données manquantes entre la source et le cluster de destination AlloyDB pour PostgreSQL

  1. Identifiez les tables de votre base de données source 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 lancer le job de migration, enregistrez les statistiques de modification de toutes les tables sans clé primaire :
    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 statistiques de référence dans une table ou un fichier.
  4. Une fois la configuration de la migration terminée et avant de promouvoir le job de migration, exécutez à nouveau la requête.
  5. Comparez les statistiques initiales avec les dernières statistiques. Si n_tup_upd ou n_tup_del ont changé pendant la migration, des mises à jour ou des suppressions ont eu lieu sur la source, mais n'ont pas été capturées par la CDC.

Migrer manuellement des données d'un cluster AlloyDB pour PostgreSQL source vers un cluster de destination

Si vous détectez des écarts dans des tables sans clé primaire, vous pouvez synchroniser les données à l'aide de l'une des options suivantes :

  • Option 1 : comparez manuellement les données entre la base de données source et le cluster AlloyDB pour PostgreSQL de destination à l'aide de requêtes de somme de contrôle ou de scripts delta, puis exécutez les mises à jour SQL appropriées pour les enregistrements divergents.
  • Option 2 : Exécutez pg_dump et pg_restore spécifiquement pour les tables sans clé primaire pendant le basculement de maintenance de l'application.
  • Option 3 : utilisez la commande PostgreSQL COPY pour exporter et importer des données de table. Pour en savoir plus, consultez la documentation PostgreSQL.