Tous les produits
Search
Centre de documentation

ApsaraDB RDS:Présentation du rapport de vérification d'une mise à niveau majeure de la version moteur pour une instance ApsaraDB RDS for PostgreSQL

Dernière mise à jour :Sep 24, 2026

Avant le début d'une mise à niveau majeure de la version moteur, ApsaraDB RDS for PostgreSQL exécute une vérification et génère un rapport. Le résultat de cette vérification détermine si la mise à niveau peut se poursuivre :

  • Les erreurs bloquent la mise à niveau : résolvez toutes les erreurs avant de relancer la procédure.

  • Les avertissements ne bloquent pas la mise à niveau, mais peuvent prolonger la durée en lecture seule ou entraîner un échec si les ressources sont insuffisantes.

Pour consulter le rapport de vérification, accédez à la page Major Version Upgrade dans la console, cliquez sur l'onglet Upgrade Check, puis cliquez sur View Information pour le rapport cible.

Le tableau suivant récapitule tous les modules de vérification et leur impact sur l'éligibilité à la mise à niveau.

Module de vérification Portée Impact en cas de déclenchement
Avertissements Tous les modes de mise à niveau Ne bloque pas ; peut prolonger la durée en lecture seule ou provoquer un échec en cas de contraintes de ressources
Erreurs Tous les modes de mise à niveau Bloque la mise à niveau ; doit être résolu avant de réessayer
Journal des erreurs pg_upgrade Tous les modes de mise à niveau Inclus lorsque des erreurs sont détectées ; répertorie les extensions et mots-clés incompatibles
Incompatibilités de réplication logique Mode zéro temps d'arrêt uniquement Bloque le mode zéro temps d'arrêt si des objets incompatibles sont présents

Rubriques connexes

Avertissements

Les avertissements signalent des contraintes de ressources ou des conditions susceptibles de prolonger la durée en lecture seule ou de provoquer l'échec de la mise à niveau. Bien que la mise à niveau ne soit pas bloquée, il est recommandé de traiter les avertissements avant de commencer.

Contenu de la vérification

Le nombre d'objets de base de données influe sur la durée pendant laquelle l'instance reste en lecture seule durant la mise à niveau et détermine la mémoire et le stockage requis. Lorsque la vérification détecte un risque de pénurie de ressources, elle indique la Recommended memory capacity, la Recommended minimum memory capacity et la Recommended disk size dans l'onglet Upgrade Check.

Pour les mises à niveau zero-downtime, la vérification compte également les séquences, car la réplication logique ne peut pas synchroniser automatiquement les séquences ; elles nécessitent un bref basculement à la fin de la mise à niveau.

Recommended memory capacity Lorsque la mémoire de l'instance atteint ou dépasse cette valeur, le système met à niveau toutes les bases de données simultanément, ce qui minimise la durée en lecture seule.

Recommended minimum memory capacity Lorsque la mémoire de l'instance atteint ou dépasse cette valeur, la mise à niveau n'échouera pas par manque de mémoire. Toutefois, le système met à niveau les bases de données séquentiellement, ce qui prolonge la durée en lecture seule.

Recommended disk size Pendant la mise à niveau, le système duplique temporairement toutes les définitions d'objets, ce qui double approximativement la consommation d'inodes. Si l'espace de stockage disponible tombe en dessous de cette valeur, la mise à niveau risque d'échouer.

Vérification du nombre de tables de séquence (mode zéro temps d'arrêt uniquement) La réplication logique ne synchronise pas les séquences. Plus l'instance contient de séquences, plus le basculement prendra de temps à la fin d'une mise à niveau en mode zéro temps d'arrêt.

Avertissements et solutions

Avertissement relatif au disque

Format de l'avertissement : Total disk space: {*} GB; Used disk: {*} GB; Used inodes: {*}; bytes-per-nodes: {*}; Minimum disk space required for upgrade: {*} GB

Cause : L'instance contient trop d'objets ; le stockage actuel est insuffisant pour la mise à niveau.

Solution :

  • Mode de déploiement bleu-vert : Définissez la capacité de stockage de la nouvelle instance sur une valeur supérieure ou égale à l'espace disque minimal requis pour la mise à niveau.

  • Mode de mise à niveau locale : Augmentez la capacité de stockage de l'instance à une valeur supérieure ou égale à l'espace disque minimal requis pour la mise à niveau avant de commencer la procédure. Pour plus d'informations, consultez la rubrique Modifier la configuration.

Avertissement relatif à la mémoire

Format de l'avertissement : Current memory: {*} GB; Recommended memory: {*} GB; Minimum memory: {*} GB

Cause : L'instance contient trop d'objets ; la mémoire actuelle est insuffisante pour minimiser la durée en lecture seule pendant la mise à niveau.

Solution :

  • Mode de déploiement bleu-vert : Définissez la spécification de la nouvelle instance de sorte que sa mémoire atteigne ou dépasse l'exigence minimale de mémoire.

  • Mode de mise à niveau locale : Mettez à niveau la spécification de l'instance si la mémoire actuelle est inférieure à la capacité de mémoire recommandée. Pour plus d'informations, consultez la rubrique Modifier la configuration.

Avertissement relatif à l'abonnement

Format de l'avertissement : The instance has replication slot subscribers. To prevent subscription data inconsistency, see the Alibaba Cloud documentation

Cause : L'instance possède des abonnés aux slots de réplication. Exécutez la requête suivante pour vérifier :

SELECT * FROM pg_subscription;

Solution : Suivez les étapes décrites dans la rubrique Mettre à niveau la version majeure de la base de données pour gérer les abonnés aux slots de réplication.

Avertissement relatif aux séquences (mode zéro temps d'arrêt uniquement)

Format de l'avertissement : Total Sequence tables: {0}. Too many Sequence tables will extend the switchover time for logical replication major version upgrade.

Cause : L'instance contient des séquences. Exécutez la requête suivante pour les lister :

SELECT * FROM pg_sequences;

Solution : Si l'instance contient un grand nombre de séquences, clonez l'instance et effectuez une mise à niveau test pour mesurer le temps de basculement réel avant de mettre à niveau l'environnement de production.

Erreurs

Les erreurs bloquent la mise à niveau. Résolvez toutes les erreurs avant de relancer la vérification de mise à niveau.

Contenu de la vérification

Le système vérifie les conditions suivantes :

  • Comptes superutilisateur inutiles ou méthodes de chiffrement non valides configurées pour les comptes standard

  • Extensions ou mots-clés incompatibles avec la version majeure du moteur cible (enregistrés dans le journal des erreurs pg_upgrade)

  • Extension pgcrypto installée dans le schéma pg_catalog

  • (Mode zéro temps d'arrêt uniquement) Version mineure du moteur antérieure à 20250228

  • (Mode zéro temps d'arrêt uniquement) Objets de base de données incompatibles avec la réplication logique

Erreurs et solutions

Erreur de compte

Format de l'erreur : Invalid superuser account: {*}; Invalid account: {*}; Please see the Alibaba Cloud documentation

Cause : L'instance possède des comptes superutilisateur redondants ou des comptes standard avec des configurations de chiffrement non valides.

Solution :

  • Comptes superutilisateur redondants : Soumettez un ticket pour demander la suppression.

  • Comptes standard non valides : Réinitialisez les mots de passe des comptes concernés.

Erreur de pré-vérification

Format de l'erreur : pg_upgrade pre-check task failed, need to check [pg_upgrade error log] and [pg_upgrade-related files and errors]

Cause : La tâche de pré-vérification pg_upgrade a échoué.

Solution : Consultez la section du journal des erreurs pg_upgrade dans le rapport de vérification pour identifier et résoudre le problème spécifique.

Erreur d'extension pgcrypto

Format de l'erreur : The pg_crypto extension is installed in schema: pg_catalog in database: {*}, please see the Alibaba Cloud documentation

Cause : L'extension pgcrypto crée des fonctions dans pg_catalog qui n'existent que dans les versions ultérieures de PostgreSQL. Cela entraîne l'échec de la mise à niveau majeure de la version moteur.

Solution : Dans chaque base de données concernée, supprimez l'extension pgcrypto et recréez-la dans un schéma autre que pg_catalog.

Erreur de version mineure (mode zéro temps d'arrêt uniquement)

Format de l'erreur : Zero-downtime major version upgrade requires minimum minor version 20250228

Cause : La version mineure du moteur de l'instance est antérieure à 20250228.

Solution : Mettre à niveau la version mineure du moteur vers la version 20250228 ou ultérieure.

Journal des erreurs pg_upgrade

Contenu de la vérification

Le journal des erreurs pg_upgrade enregistre les extensions et les mots-clés SQL incompatibles avec la version majeure du moteur cible.

Erreurs courantes

loadable_libraries.txt : extensions incompatibles

Le fichier loadable_libraries.txt répertorie les fichiers de bibliothèque qui ne peuvent pas être chargés par la version cible de PostgreSQL. Chaque bibliothèque correspond généralement à une extension.

Cause : Une ou plusieurs extensions installées sont incompatibles avec la version majeure du moteur cible.

Solution : Vérifiez les extensions listées dans loadable_libraries.txt. Pour chaque extension, vérifiez si votre application en dépend, puis décidez s'il convient de la supprimer avant la mise à niveau. Pour la liste des extensions prises en charge dans chaque version, consultez la rubrique Extensions prises en charge.

Les sections suivantes décrivent les extensions incompatibles les plus courantes.

pgrouting

Cause : L'extension pgrouting est incompatible avec la version majeure du moteur cible.

Solution : Supprimez l'extension avant la mise à niveau si votre application n'en a plus besoin. Confirmez que l'instance fonctionne correctement sans pgrouting avant de poursuivre.

Important

Si pgrouting (ou PostGIS, ou postgis_topology) est installé, les limites de mise à niveau de version suivantes s'appliquent :

  • PostgreSQL 9.4 ne peut être mis à niveau que vers PostgreSQL 10 ou PostgreSQL 11.

  • PostgreSQL 10 ne peut être mis à niveau que vers PostgreSQL 11.

  • PostgreSQL 11, 12 ou 13 ne peut pas être mis à niveau.

jsonbx

Cause : L'extension jsonbx a été introduite dans PostgreSQL 9.4 pour fournir des opérations sur le type de données JSON non disponibles dans cette version. PostgreSQL 10 et versions ultérieures prennent en charge ces opérations nativement, rendant l'extension inutile.

Solution : Examinez les fonctions jsonbx utilisées par votre application, puis vérifiez le comportement de ces fonctions dans la version cible. Si les différences de comportement sont acceptables, supprimez l'extension avant la mise à niveau.

Le tableau suivant montre comment le comportement des fonctions jsonbx diffère entre PostgreSQL 9.4 et PostgreSQL 10+ :

Utilisation de la fonction Résultat PostgreSQL 9.4 Résultat PostgreSQL 10+
select '{"a":1, "b":2, "c":3}'::jsonb - 2; {"a": 1, "b": 2} ERROR: cannot delete from object using integer index
select jsonb_delete('{"a":1, "b":2, "c":3}'::jsonb, '{b}'::text[]); {"a": 1, "c": 3} ERROR: function jsonb_delete(jsonb, text[]) does not exist
select '{"a":{"c":1, "d":2}, "b":3}'::jsonb - '{a, c}'::text[]; {"a": {"d": 2}, "b": 3} {"b": 3}

PostGIS et postgis_topology

Cause : La version installée de PostGIS est incompatible avec les dépendances de bibliothèque de la version majeure du moteur cible.

Important

Le comportement d'analyse de PostGIS pour le format Well-Known Text (WKT) diffère selon les versions majeures. Avant de mettre à niveau l'extension en production, clonez l'instance et testez la compatibilité sur l'instance clonée. Pour les étapes de clonage, consultez les rubriques Sauvegarder les données PostgreSQL et Restaurer les données PostgreSQL.

Solution :

  1. Mettre à niveau la version mineure du moteur.

  2. Mettez à jour l'extension PostGIS. Pour plus d'informations, consultez la rubrique Mise à niveau de l'extension PostGIS.

  3. Vérifiez que la version de PostGIS est au moins 3.3.2 :

    \dx
  4. Relancez la vérification de mise à niveau.

Important

Si PostGIS, postgis_topology ou pgrouting est installé, des limites de mise à niveau de version s'appliquent. Consultez la section pgrouting pour plus de détails.

tables_with_oids.txt : tables avec OIDs

Le fichier tables_with_oids.txt répertorie les tables créées avec la déclaration WITH OIDS . PostgreSQL 12 et versions ultérieures ne prennent pas en charge WITH OIDS .

Cause : Une ou plusieurs tables utilisent la déclaration WITH OIDS , qui n'est pas prise en charge dans la version cible.

Solution :

  • Option 1 (recommandée) : Mettez à niveau vers PostgreSQL 11, qui prend toujours en charge WITH OIDS .

  • Option 2 : Examinez les tables listées dans tables_with_oids.txt et confirmez que votre application ne dépend pas des valeurs OID. Exécutez ensuite l'instruction suivante pour chaque table concernée :

    ALTER TABLE {table_name} SET WITHOUT OIDS;

Incompatibilités de réplication logique (mode zéro temps d'arrêt uniquement)

Les mises à niveau majeures de la version moteur en mode zéro temps d'arrêt utilisent la réplication logique pour synchroniser les données de l'instance source vers l'instance cible. Certains objets de base de données ne sont pas pris en charge par la réplication logique. Si la vérification détecte l'un des éléments suivants, l'instance ne peut pas utiliser le mode zéro temps d'arrêt.

Contenu de la vérification

Le système vérifie :

  • Tables étrangères

  • Tables sans clé primaire ou unique

  • Vues matérialisées

  • Grands objets

  • Extensions interdites avec la réplication logique

  • Valeurs de paramètres ne répondant pas aux exigences de la réplication logique

Incompatibilités et solutions

Tables étrangères

Format de l'erreur : Foreign tables in database: {0}. Total databases: {1}

Cause : L'instance contient des tables étrangères, que la réplication logique ne peut pas répliquer.

Solution : Supprimez toutes les tables étrangères.

  1. Dans chaque base de données, identifiez les tables étrangères :

    SELECT COUNT(*) AS count, relkind
    FROM pg_class
    WHERE relkind IN ('f')
    GROUP BY relkind;
  2. Supprimez les tables étrangères :

    DROP FOREIGN TABLE [ IF EXISTS ] name [ CASCADE | RESTRICT ];

Pour plus d'informations, consultez la documentation PostgreSQL sur DROP FOREIGN TABLE.

Tables sans clé primaire ou unique

Format de l'erreur : Tables without primary key or unique key in database: {0}. Total databases: {1}

Cause : La réplication logique nécessite que chaque table dispose d'une clé primaire, d'une clé unique ou de REPLICA IDENTITY FULL pour identifier les lignes lors de la réplication.

Solution : Ajoutez une clé primaire ou unique à chaque table concernée, ou définissez REPLICA IDENTITY FULL .

  1. Dans chaque base de données, identifiez les tables sans clé primaire ou unique :

    SELECT COUNT(*) AS count
    FROM information_schema.tables t
    LEFT JOIN information_schema.table_constraints tc
        ON t.table_name = tc.table_name
        AND t.table_schema = tc.table_schema
        AND (tc.constraint_type = 'PRIMARY KEY' OR tc.constraint_type = 'UNIQUE')
    JOIN pg_class c
        ON t.table_name = c.relname
    JOIN pg_namespace ns
        ON c.relnamespace = ns.oid
        AND ns.nspname = t.table_schema
    WHERE t.table_type = 'BASE TABLE'
        AND tc.constraint_type IS NULL
        AND t.table_schema NOT IN ('pg_catalog', 'information_schema')
        AND c.relreplident != 'f';
  2. Définissez REPLICA IDENTITY FULL sur la table (si l'ajout d'une clé n'est pas réalisable) :

    ALTER TABLE name REPLICA IDENTITY FULL;
  3. Ou ajoutez une clé primaire ou unique :

    -- Primary key
    ALTER TABLE name
        ADD CONSTRAINT constraint_name PRIMARY KEY (column_name);
    
    -- Unique key
    ALTER TABLE name
        ADD CONSTRAINT constraint_name UNIQUE (column_name);

Pour plus d'informations, consultez la documentation PostgreSQL sur les contraintes uniques.

Vues matérialisées

Format de l'erreur : Materialized views in database: {0}. Total databases: {1}

Cause : La réplication logique ne peut pas répliquer les vues matérialisées.

Solution : Supprimez toutes les vues matérialisées.

  1. Dans chaque base de données, identifiez les vues matérialisées :

    SELECT COUNT(*) AS count, relkind
    FROM pg_class
    WHERE relkind IN ('m')
    GROUP BY relkind;
  2. Supprimez les vues matérialisées :

    DROP MATERIALIZED VIEW IF EXISTS name;

Grands objets

Format de l'erreur : Large objects in database: {0}. Total databases: {1}

Cause : La réplication logique ne peut pas répliquer les grands objets stockés dans pg_largeobject .

Solution : Supprimez les grands objets.

Avertissement

La suppression des grands objets est irréversible. Avant d'exécuter l'instruction de suppression, vérifiez qu'aucune application ne référence ces objets. Effectuez cette opération pendant une fenêtre de maintenance et testez-la d'abord sur une instance hors production.

  1. Dans chaque base de données, comptez les grands objets :

    SELECT COUNT(*) AS count
    FROM pg_largeobject_metadata;
  2. Supprimez chaque grand objet :

    SELECT lo_unlink(largeobject_oid);

Extensions interdites

Format de l'erreur : Logical replication prohibited extensions in database: {0}. Total databases: {1}

Cause : Les extensions suivantes sont incompatibles avec la réplication logique et ne doivent pas être présentes lors d'une mise à niveau en mode zéro temps d'arrêt : pg_partman , pg_cron , pg_active et pglogical .

Solution : Supprimez temporairement les extensions incompatibles.

  1. Dans chaque base de données, vérifiez si des extensions interdites sont installées :

    SELECT COUNT(*) AS count
    FROM pg_extension
    WHERE extname IN ('pg_partman', 'pg_cron', 'pg_active', 'pglogical');
  2. Supprimez chaque extension interdite :

    DROP EXTENSION extension_name;

Exigences de paramètres non satisfaites

Format de l'erreur : Logical replication requires wal_level to be logical, max_wal_sender and max_replication_slots to be at least {0}, instance wal_level is: {1}, max_wal_sender is: {2}, max_replication_slots is: {3}

Cause : Un ou plusieurs des paramètres suivants ne répondent pas aux exigences de la réplication logique : wal_level , max_wal_sender ou max_replication_slots .

Solution : Mettez à jour les valeurs des paramètres. Certaines modifications nécessitent un redémarrage pour prendre effet. Pour plus d'informations, consultez la rubrique Définir les paramètres d'une instance.