Tous les produits
Search
Centre de documentation

ApsaraDB RDS:Mise à niveau d'une version majeure avec déploiement blue-green

Dernière mise à jour :Aug 24, 2026

Le déploiement blue-green met à niveau la version majeure du moteur ApsaraDB RDS for PostgreSQL en restaurant l'instance source vers une nouvelle instance, puis en exécutant pg_upgrade pour porter la nouvelle instance à la version cible. Si vous effectuez un basculement, le point de terminaison de l'instance source bascule automatiquement vers la nouvelle instance, sans nécessiter de modification des chaînes de connexion dans votre application.

Pour comparer tous les modes de mise à niveau disponibles, consultez la rubrique Présentation des solutions de mise à niveau des versions majeures.

Prérequis

Avant de commencer, assurez-vous que :

  • L'instance exécute ApsaraDB RDS for PostgreSQL 16 ou une version antérieure.

  • L'instance n'est ni une instance en lecture seule ni une instance de cluster dédié.

  • Babelfish n'est pas activé sur l'instance (le numéro de version mineure du moteur ne se termine pas par babelfish).

Facturation

Lorsque vous lancez une mise à niveau par déploiement blue-green, le système crée une nouvelle instance basée sur l'instance source. Les deux instances sont facturées séparément jusqu'à ce que vous libériez l'instance source.

Méthode de facturation de l'instance source Méthode de facturation de la nouvelle instance
Abonnement ou paiement à l'utilisation Paiement à l'utilisation
Serverless Serverless

Une fois que vous avez confirmé la stabilité de vos services sur la nouvelle instance, convertissez celle-ci en abonnement et libérez ou résiliez l'instance source.

Important

Tenez compte des points suivants avant de libérer l'instance source :

  • Si votre instance source est sous abonnement et n'a pas expiré, la nouvelle instance ne peut pas hériter de la durée d'abonnement restante. La libération anticipée de l'instance source peut entraîner une perte financière. Pour plus d'informations sur les règles de remboursement, consultez la rubrique Politique de remboursement.

  • La nouvelle instance n'hérite d'aucune remise appliquée à l'instance source. Vérifiez le montant exact du remboursement sur la page de résiliation de l'instance avant de procéder.

  • Les remboursements pour les instances sous abonnement ne sont pas traités en temps réel. Le montant et le délai de remboursement dépendent de la facture de résiliation réelle.

Impacts potentiels

Examinez les éléments suivants avant de lancer la mise à niveau.

Interruption de service

Lors d'un déploiement blue-green avec basculement, l'instance source passe en lecture seule pendant l'opération, ce qui provoque une interruption transitoire des connexions. Effectuez la mise à niveau pendant les heures creuses. Si vous n'effectuez pas de basculement, vos services ne sont pas affectés.

  • Durée en lecture seule : elle dépend du nombre d'objets de base de données. Exécutez SELECT count(1) FROM pg_class; pour vérifier ce nombre. Avec des millions d'objets, la période en lecture seule peut durer plusieurs dizaines de minutes, voire plus.

  • Durée de l'interruption de connexion : elle est déterminée par le temps d'actualisation du cache DNS côté client. Utilisez la fonctionnalité de commutation de vSwitch pour estimer cette valeur à l'avance.

  • Durée totale de la mise à niveau : elle dépend du nombre d'objets de base de données. Suivez la progression dans le Task Hub.

Après le basculement, l'instance source reste en lecture seule par défaut. Pour autoriser à nouveau les écritures sur l'instance source, définissez le paramètre rds_force_trans_ro_non_sup sur off. Consultez la rubrique Définir les paramètres de l'instance.

Chemin de mise à niveau inter-version

Les instances PostgreSQL 9.4 et 10 utilisant des disques locaux haute performance ne peuvent être mises à niveau que vers des disques cloud, avec PostgreSQL 14 comme version cible directe maximale. Pour atteindre PostgreSQL 15 ou une version ultérieure, vous devez d'abord effectuer une mise à niveau vers une version intermédiaire :

  • PostgreSQL 9.4 : peut être mis à niveau vers les versions 10, 11, 12, 13 ou 14 comme étape intermédiaire.

  • PostgreSQL 10 : peut être mis à niveau vers les versions 11, 12, 13 ou 14 comme étape intermédiaire.

Slots de réplication

  • Si l'instance source est un éditeur avec des slots de réplication, ces slots sont perdus après la mise à niveau.

  • Si l'instance source est un abonné à un slot de réplication, la mise à niveau peut provoquer des problèmes de synchronisation des données en raison de la préemption des slots de réplication. Consultez la section FAQ pour savoir comment prévenir ce problème.

Modifications de l'adresse IP virtuelle

Après un basculement, l'adresse IP virtuelle de la nouvelle instance change. Vérifiez les configurations de pare-feu et toute configuration d'application qui référence directement l'adresse IP virtuelle. Pour éviter cette complexité, configurez votre application en utilisant l'adresse de connexion de l'instance plutôt que l'adresse IP virtuelle.

Modifications des paramètres

  • Les paramètres non pris en charge dans la version cible sont automatiquement supprimés.

  • Les paramètres dont les valeurs se situent en dehors de la plage valide pour la version cible sont réinitialisés aux valeurs par défaut du modèle de la version cible.

  • Pendant la mise à niveau, le paramètre statement_timeout est temporairement défini sur 0 et restauré à sa valeur d'origine une fois la mise à niveau terminée.

Tâches DTS

Si l'instance est une source ou une destination pour Data Transmission Service (DTS), recréez la tâche DTS après la mise à niveau.

Compatibilité des plugins

La mise à niveau met automatiquement à jour l'instance vers la dernière version mineure du moteur. Vérifiez la compatibilité des plugins avant et après la mise à niveau.

Paramètres non hérités par la nouvelle instance

La nouvelle instance n'hérite pas du nom de l'instance source, ni des tags, des règles d'alerte CloudMonitor ou des données de sauvegarde.

Étape 1 : Exécuter la vérification préalable à la mise à niveau

  1. Connectez-vous à la console ApsaraDB RDS. Dans la barre de navigation supérieure, sélectionnez la région où réside l'instance. Localisez l'instance et cliquez sur son ID.

  2. (Facultatif) Si des instances en lecture seule existent pour l'instance source, modifiez le point de terminaison de l'instance en lecture seule dans votre application pour le faire pointer vers le point de terminaison de l'instance principale pendant les heures creuses, puis supprimez l'instance en lecture seule.

    La suppression des instances en lecture seule avant la mise à niveau est nécessaire car les nœuds en lecture seule et les slots de réplication ne sont pas automatiquement transférés vers la nouvelle instance. Après la mise à niveau, créez de nouvelles instances en lecture seule sur la nouvelle instance.
  3. Dans le volet de navigation de gauche, cliquez sur Major Version Upgrade.

    Si l'option Major Version Upgrade n'est pas visible, vérifiez que votre instance respecte les prérequis listés ci-dessus.
  4. Sous l'onglet Upgrade Check, cliquez sur Create upgrade check report.

  5. Sélectionnez la version cible, définissez le paramètre Upgrade Mode sur Blue-green Deployment, puis cliquez sur OK. Le statut de l'instance passe à Maintaining Instance. Une fois la vérification terminée, le statut revient à Running.

  6. Consultez le résultat du rapport de vérification :

    • Success ou Warning : passez à l'étape 2.

    • Failed : cliquez sur View Information, corrigez les problèmes identifiés et relancez la vérification.

    Important
    • En cas de résultat Warning, corrigez tous les éléments signalés et relancez la vérification jusqu'à obtenir un résultat Success.

    • Si vous créez un plugin sur l'instance principale après une vérification réussie, relancez la vérification avant de poursuivre.

Étape 2 : Mettre à niveau la version majeure

  1. Cliquez sur l'onglet Upgrade Instance, lisez l'avertissement, sélectionnez une version sous Select upgrade version, puis cliquez sur Create Upgrade Task.

  2. Dans la boîte de dialogue, cliquez sur OK.

  3. Dans la section Create Major Engine Version Upgrade Task, confirmez que le paramètre Upgrade Mode est défini sur Blue-green Deployment, puis configurez les paramètres suivants. Exemples de calcul de l'espace de stockage :

    • Instance source : 100 Go au total, 70 Go utilisés, PL1 ESSD sélectionné. Calcul : 70 × 120 % = 84 Go → arrondi à 85 Go. Capacité minimale sélectionnable : 85 Go.

    • Instance source : 700 Go au total, 350 Go utilisés, PL2 ESSD sélectionné. Calcul : 350 × 120 % = 420 Go, ce qui est inférieur au minimum de 500 Go pour PL2. Capacité minimale sélectionnable : 500 Go.

    Paramètre Description
    Storage type La nouvelle instance prend uniquement en charge les disques SSD améliorés (ESSD) et les disques à performances premium. La classe de stockage doit correspondre à celle de l'instance source. Si l'instance source utilise un disque local haute performance, la nouvelle instance ne peut utiliser que des ESSD. Lors du changement du niveau de performance (PL) des ESSD, la capacité de stockage minimale s'ajuste automatiquement en fonction du PL sélectionné.
    Available zone, Primary instance switch, Standby instance switch Configurez les instances principale et de secours dans différentes zones selon vos besoins.
    Cutover configuration Choisissez comment le trafic bascule après la mise à niveau : No cutting — le trafic n'est pas basculé automatiquement ; généralement utilisé pour tester la compatibilité des services avant la mise à niveau officielle. Cutover — le trafic bascule automatiquement ; généralement utilisé pour la mise à niveau officielle une fois la compatibilité confirmée. Le basculement ne peut pas être annulé. Pendant le basculement, l'instance source est définie en lecture seule. Pour minimiser les risques, sélectionnez No cutting lors de votre première tentative. Après les tests, libérez la nouvelle instance, répétez la mise à niveau, puis sélectionnez Cutover pour la mise à niveau officielle.
    Storage space Sélectionnez la capacité de stockage de la nouvelle instance. La capacité minimale sélectionnable est la plus petite valeur entre : l'espace utilisé de l'instance source × 120 % (arrondi au multiple de 5 Go supérieur) ou la capacité de stockage totale de l'instance source. Cette valeur doit également respecter le stockage minimal achetable pour le niveau PL ESSD sélectionné : PL1 = 20 Go, PL2 = 500 Go, PL3 = 1 500 Go. Pour vérifier l'espace utilisé, consultez la métrique Disk Storage (MB) dans Monitoring and Alarms.
    Instance specification Sélectionnez le type d'instance pour la nouvelle instance. Pour connaître les types disponibles, consultez la liste des types d'instances principales.
  4. Cliquez sur Create now. Le statut de l'instance passe à Migration in Progress lorsque la tâche de mise à niveau démarre. Suivez la progression dans le Task Hub.

    Important
    • Une fois créée, une tâche de mise à niveau ne peut ni être modifiée ni supprimée.

    • Tant que l'instance source est au statut Migration in Progress, les opérations de maintenance (O&M) telles que la modification des paramètres, le redémarrage ou la libération de l'instance ne sont pas disponibles.

    • Si une erreur Insufficient Resources apparaît, changez la Target Primary Zone et réessayez.

  5. Vérifiez le résultat de la mise à niveau. Lorsque les instances source et nouvelle affichent toutes deux le statut Running, la mise à niveau est terminée.

    Déploiement blue-green avec basculement : le trafic bascule automatiquement vers la nouvelle instance après la mise à niveau. Déploiement blue-green sans basculement : le trafic reste sur l'instance source après la mise à niveau. Après la mise à niveau, accédez à l'onglet Upgrade History et cliquez sur View Information dans la colonne Upgrade Log pour consulter la durée en lecture seule et le détail du processus de mise à niveau. La durée en lecture seule est mesurée entre Cutover Time et Cutover End Time, sans inclure la période durant laquelle l'instance est inaccessible en raison de la propagation du cache DNS. Pour les mises à niveau sans basculement, le système enregistre toujours Cutover Time et Cutover End Time à titre de référence.
    Résultat de la mise à niveau Statut de l'instance Signification
    Running Migration in Progress La tâche de mise à niveau est en cours d'exécution
    Succeeded Running La tâche de mise à niveau a réussi

Étapes suivantes

  1. Si vous avez effectué la mise à niveau via la méthode blue-green deployment (cutover), une fois que vous avez confirmé la stabilité de vos services sur la nouvelle instance, libérez l'instance source. Convertissez la méthode de facturation de la nouvelle instance en abonnement pour réduire les coûts.

    La libération d'une instance sous abonnement avant son expiration peut entraîner une perte financière. La nouvelle instance n'hérite d'aucune remise de l'instance source. Les remboursements dépendent de la facture de résiliation réelle et ne sont pas traités en temps réel.
  2. (Facultatif) Si vous avez supprimé une instance en lecture seule avant la mise à niveau, recréez-la sur la nouvelle instance :

    1. Créez une instance en lecture seule PostgreSQL sur la nouvelle instance.

    2. Dans votre application, mettez à jour le point de terminaison pour qu'il pointe vers la nouvelle instance en lecture seule.

Référence API

Opération API Description
UpgradeDBInstanceMajorVersionPrecheck Exécute une vérification préalable à la mise à niveau d'une version majeure
DescribeUpgradeMajorVersionPrecheckTask Interroge le rapport de vérification préalable à la mise à niveau
UpgradeDBInstanceMajorVersion Met à niveau la version majeure du moteur
DescribeUpgradeMajorVersionTasks Interroge l'historique des tâches de mise à niveau des versions majeures

Références

FAQ

Puis-je modifier l'instance pendant une mise à niveau de version majeure ?

Non. L'instance ne peut pas être modifiée tant qu'une mise à niveau est en cours. Les modifications ne sont possibles qu'une fois la mise à niveau terminée.

Les mises à niveau automatiques de version majeure sont-elles prises en charge ?

Non. Les mises à niveau de version majeure doivent être déclenchées manuellement.

Les rétrogradations de version majeure sont-elles prises en charge ?

Non. La rétrogradation n'est pas prise en charge après une mise à niveau de version majeure. Pour exécuter une version inférieure, achetez une nouvelle instance avec cette version et utilisez Data Transmission Service (DTS) pour migrer vos données.

Après une mise à niveau de version majeure, j'obtiens un conflit raster_overviews lors de la création d'une vue sur la nouvelle instance. Comment résoudre ce problème ?

Ce problème survient lorsque la version de PostGIS est antérieure à la 2.5.2 et que vous effectuez une mise à niveau de PostgreSQL 10 ou 11 vers PostgreSQL 12 sans avoir d'abord mis à niveau le plugin PostGIS.

Étape 1 : Mettre à niveau le plugin PostGIS sur l'instance source.

Exécutez la commande suivante deux fois pour vous assurer que la mise à niveau se termine avec succès :

SELECT PostGIS_Extensions_Upgrade();
SELECT PostGIS_Extensions_Upgrade();

Étape 2 : Choisir la correction en fonction de l'utilisation ou non du plugin PostGIS Raster.

Si le plugin PostGIS Raster est utilisé :

  1. Sur l'instance source, détachez la vue raster_overviews de l'extension et remplacez-la par un espace réservé :

    ALTER EXTENSION PostGIS_Raster DROP VIEW raster_overviews;
    CREATE OR REPLACE VIEW raster_overviews AS SELECT 1;
  2. Mettez à niveau l'instance PostgreSQL vers PostgreSQL 12 au minimum.

  3. Après la mise à niveau, recréez la vue sur la nouvelle instance :

    CREATE
    OR REPLACE VIEW raster_overviews AS
    SELECT
      current_database() AS o_table_catalog,
      n.nspname AS o_table_schema,
      c.relname AS o_table_name,
      a.attname AS o_raster_column,
      current_database() AS r_table_catalog,
      split_part(
        split_part(s.consrc, '''::name', 1),
        '''',
        2
      )::name AS r_table_schema,
      split_part(
        split_part(s.consrc, '''::name', 2),
        '''',
        2
      )::name AS r_table_name,
      split_part(
        split_part(s.consrc, '''::name', 3),
        '''',
        2
      )::name AS r_raster_column,
      trim(
        both
        from
          split_part(s.consrc, ',', 2)
      )::integer AS overview_factor
    FROM
      pg_class c,
      pg_attribute a,
      pg_type t,
      pg_namespace n,
      (
        SELECT
          connamespace,
          conrelid,
          conkey,
          pg_get_constraintdef(oid) As consrc
        FROM
          pg_constraint
      ) AS s
    WHERE
      t.typname = 'raster'::name
      AND a.attisdropped = false
      AND a.atttypid = t.oid
      AND a.attrelid = c.oid
      AND c.relnamespace = n.oid
      AND c.relkind = ANY(
        ARRAY[ 'r'::char, 'v'::char, 'm'::char,
        'f'::char ]
      )
      AND s.connamespace = n.oid
      AND s.conrelid = c.oid
      AND s.consrc LIKE '%_overview_constraint(%'
      AND NOT pg_is_other_temp_schema(c.relnamespace)
      AND has_table_privilege(c.oid, 'SELECT'::text);
    
    ALTER EXTENSION PostGIS_Raster ADD VIEW raster_overviews;

Si le plugin PostGIS Raster n'est pas utilisé :

  1. Supprimez le plugin sur l'instance source :

    DROP EXTENSION PostGIS_Raster;
  2. Mettez à niveau l'instance PostgreSQL vers PostgreSQL 12 au minimum.

Comment prévenir l'incohérence des données causée par la préemption des slots de réplication lors d'une mise à niveau ?

Si l'instance source est un abonné à un slot de réplication, le slot de réplication peut être préempté par la nouvelle instance pendant la mise à niveau, ce qui peut entraîner une incohérence des données.

Pour conserver les données d'abonnement sur l'instance source (version inférieure) : assurez-vous que l'instance source ne tombe pas en panne en raison d'une charge excessive pendant la mise à niveau afin d'éviter la préemption du slot de réplication. Une fois la mise à niveau terminée, désactivez l'abonnement sur la nouvelle instance :

\c your_database
ALTER SUBSCRIPTION your_subscription_name DISABLE;

Pour préserver les données d'abonnement sur la nouvelle instance (version supérieure) : désactivez l'abonnement sur l'instance source avant de démarrer la mise à niveau, puis activez-le sur la nouvelle instance une fois la mise à niveau terminée.

Désactivation sur l'instance source :

\c your_database
ALTER SUBSCRIPTION your_subscription_name DISABLE;

Activation sur la nouvelle instance :

\c your_database
ALTER SUBSCRIPTION your_subscription_name ENABLE;

Pour plus d'informations, consultez les rubriques Logical Subscription et Change Tracking.

Comment gérer l'incohérence des données d'abonnement après une mise à niveau ?

Si une incohérence s'est déjà produite, utilisez l'approche suivante pour la reconcilier :

  1. Sur la nouvelle instance, supprimez les données de la table concernée, puis recréez l'abonnement avec copy_data=true. Pour plus de détails, consultez la documentation ALTER SUBSCRIPTION.

  2. Utilisez ON CONFLICT pour importer les données depuis l'instance source. L'exemple suivant montre comment gérer différents scénarios de conflit :

    CREATE TABLE my_tbl(id INT PRIMARY KEY, t TIMESTAMP, val TEXT);
    
    INSERT INTO my_tbl VALUES (1, CURRENT_TIMESTAMP, 'a');
    INSERT INTO my_tbl VALUES (2, CURRENT_TIMESTAMP, 'b');
    INSERT INTO my_tbl VALUES (3, CURRENT_TIMESTAMP, 'c');
    
    -- Newer timestamp: update the existing row
    INSERT INTO my_tbl VALUES (1, CURRENT_TIMESTAMP, 'd') ON CONFLICT(id) DO UPDATE
        SET t = excluded.t,
            val = excluded.val
        WHERE my_tbl.t < excluded.t;
    
    -- Older timestamp: keep the existing row
    INSERT INTO my_tbl VALUES (2, CURRENT_TIMESTAMP - '10 hours'::interval, 'e') ON CONFLICT(id) DO UPDATE
        SET t = excluded.t,
            val = excluded.val
        WHERE my_tbl.t < excluded.t;
    
    -- New row: insert directly
    INSERT INTO my_tbl VALUES (5, CURRENT_TIMESTAMP - '10 hours'::interval, 'f') ON CONFLICT(id) DO UPDATE
        SET t = excluded.t,
            val = excluded.val
        WHERE my_tbl.t < excluded.t;

Pourquoi dois-je supprimer les instances en lecture seule avant la mise à niveau ?

Les nœuds en lecture seule et les slots de réplication de l'instance source ne sont pas automatiquement transférés vers la nouvelle instance après la mise à niveau. La suppression de l'instance en lecture seule avant la mise à niveau évite les conflits de points de terminaison et garantit un basculement propre. Après la mise à niveau, créez une nouvelle instance en lecture seule sur la nouvelle instance et mettez à jour le point de terminaison de votre application en conséquence.