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
- 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;
- Avant de lancer le job de migration, enregistrez les statistiques de modification de toutes les tables sans clé primaire :
Où :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: nombre de lignes inséréesn_tup_upd: nombre de lignes mises à jour (y compris les lignes mises à jour par HOT)n_tup_del: nombre de lignes supprimées
- Enregistrez ces statistiques de référence dans une table ou un fichier.
- Une fois la configuration de la migration terminée et avant de promouvoir le job de migration, exécutez à nouveau la requête.
- Comparez les statistiques initiales avec les dernières statistiques. Si
n_tup_updoun_tup_delont 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_dumpetpg_restorespécifiquement pour les tables sans clé primaire pendant le basculement de maintenance de l'application. - Option 3 : utilisez la commande PostgreSQL
COPYpour exporter et importer des données de table. Pour en savoir plus, consultez la documentation PostgreSQL.