Mettre à niveau la version majeure d'une base de données sur place

Cette page explique comment effectuer une mise à niveau de version majeure de la base de données sur place d'un cluster AlloyDB pour PostgreSQL. Pour en savoir plus sur les cas d'utilisation, le workflow et les sauvegardes automatiques de la mise à niveau de la version majeure de la base de données sur place, consultez la page Présentation de la mise à niveau de la version majeure de la base de données sur place.

Planifier une mise à niveau de version majeure de la base de données

Pour planifier une mise à niveau de version majeure de la base de données, procédez comme suit:

  1. Recherchez la version majeure actuelle de votre base de données.

    Console

    1. Dans la console Google Cloud, accédez à la page Clusters.

      accéder aux clusters

    2. Sélectionnez un cluster dans la liste. La page Overview (Présentation) s'affiche.

    3. Recherchez la version majeure de la base de données dans le champ Version.

    gcloud

    Pour en savoir plus sur l'installation et le démarrage avec la gcloud CLI, consultez la page Installer la gcloud CLI. Pour en savoir plus sur le démarrage de Cloud Shell, consultez la page Utiliser Cloud Shell.

    Exécutez la commande suivante pour obtenir les détails du cluster, y compris la version majeure actuelle:

    gcloud alloydb clusters describe CLUSTER_ID --region=REGION

    Effectuez les remplacements suivants :

    • CLUSTER_ID: ID du cluster
    • REGION: région ou emplacement du cluster

    REST v1beta

    Exécutez la requête suivante pour obtenir les détails du cluster, y compris la version majeure actuelle:

    GET https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID

    Effectuez les remplacements suivants :

    • CLUSTER_ID: ID du cluster
    • PROJECT_ID : ID du projet
    • REGION: région ou emplacement du cluster

    Pour envoyer votre requête, utilisez l'une des options suivantes:

    curl (Linux, macOS ou Cloud Shell)

    Exécutez la commande suivante :

       curl -X GET \
             -H "Authorization: Bearer $(gcloud auth print-access-token)" \
             -H "Content-Type: application/json; charset=utf-8" \
             -d @request.json \
             "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID"
       

    PowerShell (Windows)

    Exécutez la commande suivante :

       $cred = gcloud auth print-access-token
       $headers = @{ "Authorization" = "Bearer $cred" }
    
       Invoke-WebRequest `
         -Method GET `
         -Headers $headers `
         -Uri "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID| Select-Object -Expand Content
       
  2. Identifiez une version majeure de base de données cible dans le tableau suivant. Pour obtenir la liste complète des versions de bases de données compatibles avec AlloyDB, consultez Versions de bases de données et règles de version.

    Version majeure de la source Version(s) majeure(s) cible(s) compatible(s)
    POSTGRES_14 POSTGRES_15
  3. Examinez les fonctionnalités proposées dans chaque version majeure de la base de données.

  4. Identifiez les incompatibilités que vous devez résoudre. Les nouvelles versions majeures peuvent présenter des modifications incompatibles qui peuvent vous obliger à modifier le code de l'application, le schéma ou les paramètres de la base de données.

  5. Avant de commencer la mise à niveau de la version majeure sur votre cluster de production, nous vous recommandons de cloner votre cluster et de tester la mise à niveau de la version majeure sur le cluster cloné.

    En plus de vérifier que la mise à niveau a abouti, exécutez des tests pour vous assurer que l'application se comporte comme prévu sur le cluster mis à niveau.

Préparer le cluster à une mise à niveau de version majeure

Pour effectuer les étapes qui nécessitent de vous connecter à la base de données, utilisez AlloyDB Studio, psql ou d'autres méthodes de connexion.

  1. Supprimez ou promouvez vos instances dupliquées interrégionales. Les mises à niveau de version majeures in situ de la base de données ne sont pas compatibles avec les réplications interrégionales. Pour en savoir plus, consultez la section Réplication interrégionale.
  2. Assurez-vous que les paramètres d'encodage et de paramètres régionaux des bases de données postgres et template1 sont identiques à ceux de la base de données template0.

    Exécutez la commande suivante :

    SELECT pg_encoding_to_char(encoding), datcollate, datctype
    FROM pg_database
    WHERE datname IN ('postgres', 'template1', 'template0');
    

    Si les valeurs des bases de données postgres ou template1 sont différentes de celles de la base de données template0, la mise à niveau échoue. Pour résoudre ce problème, procédez comme suit :

    1. Videz l'autre base de données (pas template0). Pour en savoir plus, consultez la section Exporter des données.

    2. Supprimez la base de données en exécutantDROP DATABASE <database_name>;

    3. Recréez la base de données avec les mêmes paramètres d'encodage et de paramètres régionaux que la base de données template0 en exécutant la commande suivante:

      CREATE DATABASE <database_name>
      ENCODING = '<template0_encoding>'
      LC_COLLATE = '<template0_datcollate>'
      LC_CTYPE = '<template0_datctype>';
      
    4. Rechargez vos données. Pour en savoir plus, consultez la section Importer des données.

  3. Si votre cluster AlloyDB est une source de réplication logique, désactivez les abonnements en aval et supprimez tous les emplacements de réplication logique. Vous pouvez réactiver les abonnements et recréer les emplacements de réplication logiques après la mise à niveau. Si l'instance AlloyDB n'est qu'une cible de réplication logique, ces étapes ne sont pas obligatoires. Pour désactiver les abonnements et supprimer des emplacements de réplication logique, procédez comme suit:

    1. Désactivez chaque abonnement en aval sur l'abonné ou la cible de réplication en aval. Ne désactivez pas les abonnements en aval sur l'instance AlloyDB en cours de mise à niveau:

      • Si vous utilisez pglogical, exécutez la commande suivante:

        SELECT * FROM
        pglogical.alter_subscription_disable(subscription_name, immediate);
        

        Remplacez subscription_name dans la requête par le nom de l'abonnement existant. Si l'abonnement doit être désactivé immédiatement, définissez la valeur du paramètre immediate sur true. Par défaut, la valeur est false et l'abonnement n'est désactivé qu'à la fin de la transaction en cours.

        Exemple :

        postgres=> SELECT * FROM pglogical.alter_subscription_disable('test_sub',true);
        alter_subscription_disable
        ----------------------------
        t
        (1 row)
        
      • Si vous utilisez une extension autre que pglogical, exécutez la commande suivante:

        ALTER SUBSCRIPTION <subscription_name> DISABLE;
        
    2. Supprimez tous les emplacements de réplication logiques sur l'instance principale AlloyDB en exécutant la commande suivante:

      SELECT pg_drop_replication_slot(slot_name) FROM pg_replication_slots WHERE slot_type = 'logical';
      
  4. Gérez vos extensions PostgreSQL. Pour en savoir plus, consultez la section Configurer des extensions de base de données.

    Les vérifications préalables à la mise à niveau détectent les incompatibilités des extensions et signalent ces cas de non-respect dans les journaux, avec des suggestions d'actions. Pour en savoir plus, consultez la section Afficher les échecs de la vérification préalable à la mise à niveau.

    Vous devrez peut-être procéder comme suit:

    1. Supprimez toutes les extensions qui ne sont plus compatibles dans la version cible.
    2. Mettez à niveau PostGIS et les extensions associées (address_standardizer, address_standardizer_data_us, postgis_raster, postgis_sfcgal, postgis_tiger_geocoder et postgis_topology) vers une version compatible de la version PostgreSQL cible. Pour en savoir plus, consultez la section Extensions PostGIS. Le tableau suivant répertorie les versions minimales de l'extension PostGIS compatibles pour chaque version majeure de PostgreSQL:

      Version PostgreSQL Version minimale compatible de PostGIS
      PG14 3.1
      PG15 3.2

      Par exemple, si votre version de PostGIS est 3.1.x et que vous souhaitez passer de POSTGRES 14 à POSTGRES 15, utilisez la commande suivante pour mettre à niveau l'extension PostGIS:

      ALTER EXTENSION postgis UPDATE TO '3.2.3';
      SELECT PostGIS_Version();
      
  5. Vérifiez que les connexions sont autorisées pour chaque base de données, à l'exception de template0, en exécutant la requête suivante et en vérifiant le champ datallowconn pour chaque base de données:

    SELECT datname,datallowconn from pg_database;
    

    Une valeur t dans le champ datallowconn signifie que la connexion est autorisée. Une valeur f indique qu'une connexion ne peut pas être établie. La base de données template0 ne doit pas autoriser les connexions.

    Pour autoriser les connexions à une base de données, exécutez la commande suivante:

    ALTER DATABASE <database> WITH ALLOW_CONNECTIONS = true;
    

Mettre à niveau la version majeure du cluster sur place

La mise à niveau de la version majeure de la base de données sur place peut prendre entre 40 minutes et 48 heures, en fonction de facteurs tels que la taille de la base de données, la taille du schéma et le nombre d'instances de pool de lecture dans le cluster. Le temps d'arrêt de l'instance principale est généralement compris entre 20 minutes et une heure, et dépend principalement du schéma de votre base de données.

Lorsque vous placez une demande de mise à niveau de version majeure sur place, AlloyDB commence par effectuer des vérifications préalables à la mise à niveau. Si AlloyDB détermine que votre cluster n'est pas prêt pour une mise à niveau de version majeure, la requête échoue. Pour en savoir plus, consultez la section Résoudre les problèmes liés à la mise à niveau d'une version majeure.

Pour mettre à niveau la version majeure de la base de données sur place, procédez comme suit:

Console

  1. Dans la console Google Cloud, accédez à la page Clusters.

    accéder aux clusters

  2. Sélectionnez un cluster dans la liste. La page Overview (Présentation) s'affiche.

  3. Cliquez sur Mettre à niveau pour lancer le processus de mise à niveau de la version majeure de la base de données.

  4. À l'étape Choisir une version de base de données, sélectionnez l'une des versions majeures de base de données disponibles comme version majeure cible.

  5. Cliquez sur Continuer.

  6. À l'étape Mettre à niveau le cluster, dans le champ ID du cluster, saisissez le nom du cluster.

  7. Cliquez sur Démarrer la mise à niveau. Vous êtes redirigé vers l'étape État de la mise à niveau, où vous pouvez vérifier l'état de la mise à niveau. Pour en savoir plus, consultez la page Surveiller la mise à niveau de la version majeure de la base de données.

gcloud

Démarrez la mise à niveau de version majeure sur place en exécutant la commande suivante:

gcloud alloydb beta clusters upgrade CLUSTER_ID --region=REGION --version=DATABASE_VERSION --async

Voici un exemple de commande:

gcloud alloydb beta clusters upgrade my-cluster --region=us-central1 --version=POSTGRES_15 --async

REST v1beta

Démarrez la mise à niveau de version majeure sur place en exécutant la commande suivante:

PATCH https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:upgrade

Corps JSON de la requête :

{
  "version": "DATABASE_VERSION"
}

Remplacez-le par l'énumération de la version majeure de la base de données cible, qui doit être postérieure à la version actuelle.

Exemple de corps de requête JSON:

{
"version": "POSTGRES_15"
}

Surveiller la mise à niveau de la version majeure du cluster

Une fois la mise à niveau majeure de la base de données en place lancée, vous pouvez surveiller son état à l'aide de la console Google Cloud, de gcloud CLI ou de l'API REST.

Console

Pour vérifier l'état de la mise à niveau dans la console Google Cloud, procédez comme suit:

  1. Dans la console Google Cloud, accédez à la page Clusters.

    accéder aux clusters

  2. Sélectionnez le cluster en cours de mise à niveau. La page Overview (Présentation) s'affiche.

  3. Ouvrez la page Vue d'ensemble.

  4. Cliquez sur État de la mise à niveau. La page Upgrade Status (État de la mise à niveau) s'affiche, où vous pouvez vérifier l'état de la mise à niveau.

gcloud

Pour vérifier l'état de la mise à niveau dans la gcloud CLI:

  1. Obtenez l'ID de l'opération de mise à niveau en exécutant la commande suivante. Avant d'exécuter la commande, remplacez la variable CLUSTER_ID par le nom du cluster:

    gcloud alloydb operations list --cluster=CLUSTER_ID --region=REGION_ID --filter=metadata.verb:upgrade

    Appel de la CLI gcloud utilisé pour déclencher une mise à niveau de version majeure. alloydb beta clusters upgrade, renvoie l'ID de l'opération en tant que réponse synchrone. Vous pouvez également utiliser la commande gcloud alloydb operations list avec l'option --cluster.

    Voici un exemple de commande:

    gcloud alloydb operations list --cluster=my-cluster --region=us-central1 --filter=metadata.verb:upgrade
  2. Surveillez l'état de la mise à niveau en exécutant la commande suivante:

    gcloud alloydb operations describe OPERATION_ID
    --region=REGION
    https://cloud.google.com/sdk/gcloud/reference/alloydb/operations/describe

REST v1beta

Pour vérifier l'état de la mise à niveau dans l'API REST, procédez comme suit:

  1. Obtenez l'ID de l'opération de mise à niveau.

    Utilisez la requête GET suivante avec la méthode operations.list pour répertorier toutes les opérations de mise à niveau et trouver celle qui correspond au cluster cible:

    GET https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/operations/filter=metadata.verb:upgrade

    L'appel d'API REST renvoie l'ID de l'opération en tant que réponse synchrone.

  2. Surveillez l'état de la mise à niveau.

    Exécutez une requête GET avec la méthode operations.get:

      GET https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID

    Effectuez les remplacements suivants :

    • PROJECT_ID : ID du projet
    • REGION: région ou emplacement du cluster
    • OPERATION_ID: ID de l'opération de mise à niveau, récupéré à l'étape précédente.

    Voici un exemple de réponse lorsque l'opération est en cours:

    {
    "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
    "metadata": {
    "@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata",
    "createTime": "2024-09-16T23:17:39.727319438Z",
    "target": "projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID",
    "verb": "upgrade",
    "requestedCancellation": false,
    "apiVersion": "v1",
    "upgradeClusterStatus": {
       "state": "IN_PROGRESS",
       "cancellable": true,
       "stages": [
        {
          "stage": "ALLOYDB_PRECHECK",
          "state": "IN_PROGRESS"
        },
        {
          "stage": "PG_UPGRADE_CHECK",
          "state": "IN_PROGRESS"
        },
        {
          "stage": "PREPARE_FOR_UPGRADE",
          "state": "NOT_STARTED"
        },
        {
          "stage": "PRIMARY_INSTANCE_UPGRADE",
          "state": "NOT_STARTED"
        },
        {
          "stage": "CLEANUP",
          "state": "NOT_STARTED"
        }
       ]
     }
    },
    "done":false
    }
    

    Voici un exemple de réponse lorsque l'opération est terminée:

    {
    "operations": [
    {
     "metadata": {
     "@type": "type.googleapis.com/google.cloud.alloydb.v1betaalpha.OperationMetadata",
     "createTime": "2024-09-16T21:52:17.303861317Z",
     "endTime": "2024-09-16T22:29:13.947527949Z",
     "target": "projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID",
     "verb": "upgrade",
     "requestedCancellation": false,
     "apiVersion": "v1beta",
     "upgradeClusterStatus": {
      "state": "SUCCESS",
      "stages": [
        {
          "stage": "ALLOYDB_PRECHECK",
          "state": "SUCCESS"
        },
        {
          "stage": "PG_UPGRADE_CHECK",
          "state": "SUCCESS"
        },
        {
          "stage": "PREPARE_FOR_UPGRADE",
          "state": "SUCCESS"
        },
        {
          "stage": "PRIMARY_INSTANCE_UPGRADE",
          "state": "SUCCESS"
        },
        {
          "stage": "CLEANUP",
          "state": SUCCESS"
        }
       ]
     }
    },
    "response": {
         …
    },
    "name":  "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
    "done": true
    }
    ]
    }
    

    Pour en savoir plus sur la structure response, consultez la section Réponse à l'opération de mise à niveau.

Réponse à l'opération de mise à niveau

La réponse de l'opération UpgradeCluster inclut les éléments suivants:

  • status: état de l'opération de mise à niveau globale. Les valeurs possibles sont SUCCESS, FAILED et PARTIAL_SUCCESS..
  • message: fournit un bref résumé du résultat de l'opération de mise à niveau.
  • clusterUpgradeDetails: détails de la mise à niveau pour les clusters mis à niveau. Ce champ est un tableau. AlloyDB n'autorise qu'une seule mise à niveau de cluster. Il ne doit donc contenir qu'une seule entrée.
    • name: nom complet du cluster.
    • upgradeStatus: état de la mise à niveau du cluster. Les valeurs possibles sont SUCCESS, FAILED et PARTIAL_SUCCESS. PARTIAL_SUCCESS signifie qu'une ou plusieurs instances de pool de lecture ne peuvent pas être mises à niveau.
    • clusterType: type de cluster. AlloyDB ne vous permet de mettre à niveau qu'un seul cluster PRIMARY. Ce type doit toujours être PRIMARY.
    • databaseVersion: version actuelle de la base de données du cluster.
    • stageInfo: informations sur les principales étapes de la mise à niveau.
      • status : SUCCESS ou FAILED
      • logs_url: lien vers les journaux générés par l'étape. Vide pour les étapes qui ne génèrent pas de journaux.
    • instanceUpgradeDetails: informations de mise à niveau pour toutes les instances du cluster.
      • name: nom complet de l'instance
      • upgradeStatus : SUCCESS ou FAILED
      • instanceType : PRIMARY ou READ_POOL

Voici un exemple de réponse à une opération de mise à niveau:

"response": {
  "@type": "type.googleapis.com/google.cloud.alloydb.v1alpha.UpgradeClusterResponse",
  "status": "SUCCESS",
  "message": "Cluster upgraded successfully.",
  "clusterUpgradeDetails": [
    {
      "name": "projects/1234/locations/us-central1/clusters/abc",
      "upgradeStatus": "SUCCESS",
      "clusterType": "PRIMARY",
      "databaseVersion": "POSTGRES_15",
      "stageInfo": [
        {
          "stage": "ALLOYDB_PRECHECK", 
          "status": "SUCCESS",
          "logsUrl": "https://console.cloud.google.com/logs/query..."
        },
        {
          "stage": "PG_UPGRADE_CHECK",
          "status": "SUCCESS",
          "logsUrl": "https://console.cloud.google.com/logs/query..."
        },
        {
          "stage": "PRIMARY_INSTANCE_UPGRADE",
          "status": "SUCCESS",
          "logsUrl": "https://console.cloud.google.com/logs/query..."
        },
        {
          "stage": "READ_POOL_INSTANCES_UPGRADE",
          "status": "SUCCESS",
        }
      ],
      "instanceUpgradeDetails": [
        {
          "name": "projects/1234/locations/us-central1/clusters/abc/instances/primary",
          "upgradeStatus": "SUCCESS",
          "instanceType": "PRIMARY",
        },
        {
          "name": "projects/1234/locations/us-central1/clusters/abc/instances/read1",
          "upgradeStatus": "SUCCESS",
          "instanceType": "READ_POOL",
        },
        {
          "name": "projects/1234/locations/us-central1/clusters/abc/instances/read2",
          "upgradeStatus": "SUCCESS",
          "instanceType": "READ_POOL",
        }
      ]
    }
  ]
}

Afficher les journaux de mise à niveau

AlloyDB publie tous les journaux de mise à niveau sous le nom de journal postgres_upgrade.

Pour afficher les journaux liés à la mise à niveau, procédez comme suit:

  1. Dans la console Google Cloud, accédez à la page Explorateur de journaux.

    Accéder à l'explorateur de journaux

    Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Logging.

  2. Sélectionnez alloydb.googleapis.com/postgres_upgrade comme nom du journal. Cela se traduit par la requête "logName="projects/PROJECT_ID/logs/alloydb.googleapis.com%2Fpostgres_upgrade".

  3. Utilisez les libellés suivants pour filtrer les journaux:

    Label Description

    LOG_TYPE

    Étape de mise à niveau ayant généré le journal. Les valeurs possibles sont ALLOYDB_PRECHECK, PG_UPGRADE_CHECK et PG_UPGRADE.

    OPERATION_NAME

    Nom complet de l'opération de mise à niveau.

    FILE_NAME

    Renseigné uniquement pour les journaux pg_upgrade_check et pg_upgrade, et correspond aux fichiers journaux générés par l'utilitaire pg_upgrade.

Voici un exemple de requête qui renvoie les journaux de prévérification de la mise à niveau d'AlloyDB pour une opération donnée:

logName="projects/project1234/logs/alloydb.googleapis.com%2Fpostgres_upgrade"
labels.LOG_TYPE="ALLOYDB_PRECHECK"
labels.OPERATION_NAME="projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID"

Pour en savoir plus sur les vérifications de mise à niveau, consultez la page Présentation de la mise à niveau de la version majeure de la base de données sur place.

Afficher les journaux de mise à niveau d'un cluster

Pour afficher les journaux de mise à niveau d'un cluster lorsque vous ne connaissez pas l'ID de l'opération et que l'opération a expiré, procédez comme suit:

  1. Interrogez les journaux de vérification préalable AlloyDB de votre cluster.

    logName="projects/PROJECT_ID/logs/alloydb.googleapis.com%2Fpostgres_upgrade"
    labels.LOG_TYPE="ALLOYDB_PRECHECK"
    resource.labels.cluster_id=CLUSTER_ID
    
  2. Recherchez le Operation_ID à partir du libellé de journal OPERATION_NAME.

    Dans l'exemple suivant, Operation_ID de OPERATION_NAME est operation-1728225968201-623cff6ed1e02-e34b7191-3cd92013.

    labels.OPERATION_NAME="projects/myproject/locations/us-central1/operations/operation-1728225968201-623cff6ed1e02-e34b7191-3cd92013"
    
  3. Interrogez tous les journaux postgres_upgrade pour une opération spécifique.

    logName="projects/production-1/logs/alloydb.googleapis.com%2Fpostgres_upgrade"
    labels.OPERATION_NAME="operation-1728225968201-623cff6ed1e02-e34b7191-3cd92013"
    

Annuler la mise à niveau de version majeure sur place de la base de données

Vous pouvez annuler une opération de mise à niveau de version majeure en cours à partir de la console Google Cloud, de la gcloud CLI ou de l'API REST.

Trouver l'ID de l'opération

Pour annuler l'opération de mise à niveau de la version majeure à l'aide de la gcloud CLI ou de l'API REST, vous avez besoin de l'ID de l'opération. Vous devez spécifier cet ID dans la commande gcloud CLI ou de l'API REST afin qu'AlloyDB sache quelle opération annuler.

Vous ne pouvez pas annuler la mise à niveau une fois qu'elle a atteint un certain stade.

Lorsque vous démarrez la mise à niveau de version majeure sur place, l'ID d'opération est renvoyé dans le champ name de la réponse. Consultez l'exemple de réponse.

Vous pouvez également trouver l'ID d'opération en effectuant un appel operations.list sur le cluster AlloyDB.

Annuler la mise à niveau

Pour annuler une mise à niveau de version majeure en place, procédez comme suit:

Console

  1. Dans la console Google Cloud, accédez à la page Clusters.

    accéder aux clusters

  2. Sélectionnez un cluster dans la liste. La page Overview (Présentation) s'affiche.

  3. Cliquez sur État de la mise à niveau.

  4. Cliquez sur Annuler. Si la mise à niveau ne peut pas être annulée, ce bouton est grisé.

gcloud

Utilisez la commande gcloud alloydb operations cancel pour annuler l'opération:

gcloud alloydb operations cancel OPERATION_ID

Remplacez la variable OPERATION_ID par l'ID de l'opération.

Si cancellable dans UpgradeClusterStatus est false dans la sortie de la commande gcloud alloydb operations cancel, AlloyDB ignore la demande d'annulation et poursuit la mise à niveau. Dans ce cas, l'API ne génère pas d'erreur et renvoie une réponse vide. Pour en savoir plus sur l'état de la mise à niveau, consultez la section Surveiller la mise à niveau de la version majeure du cluster.

REST v1beta

Exécutez la commande suivante :

POST https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/operations/OPERATION_ID:cancel

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants:

  • PROJECT_ID : ID du projet.
  • OPERATION_ID: ID de l'opération d'importation ou d'exportation.

Si cancellable dans UpgradeClusterStatus est false, vous ne pouvez pas annuler la mise à niveau.

Pour envoyer votre demande, utilisez l'une des options suivantes:

curl (Linux, macOS ou Cloud Shell)

Exécutez la commande suivante :

       curl -X POST \
             -H "Authorization: Bearer $(gcloud auth print-access-token)" \
             -H "Content-Type: application/json; charset=utf-8" \
             -d "" \
            "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID/cancel"
  

PowerShell (Windows)

Exécutez la commande suivante :

       $cred = gcloud auth print-access-token
       $headers = @{ "Authorization" = "Bearer $cred" }

       Invoke-WebRequest `
         -Method POST `
         -Headers $headers `
         -Uri "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/operations/OPERATION_ID/cancel"| Select-Object -Expand Content
    

Vous devriez recevoir une réponse JSON de ce type :

Response (Réponse)

Cet appel d'API REST ne renvoie aucune réponse.

Terminer la mise à niveau de version majeure sur place

Pour effectuer la mise à niveau vers une version majeure, connectez-vous à une instance AlloyDB à l'aide d'AlloyDB Studio, de psql ou d'autres méthodes de connexion.

Si vous utilisez un système autre qu'AlloyDB, consultez la documentation de votre système pour obtenir des instructions de connexion.

Une fois la mise à niveau de votre cluster terminée, procédez comme suit:

  1. Si vous avez précédemment désactivé pglogical, réactivez la réplication pglogical. L'activation de la réplication pglogical crée automatiquement l'emplacement de réplication requis.

    1. Supprimez l'abonnement pglogical sur l'instance dupliquée de destination à l'aide de la commande suivante:

      select pglogical.drop_subscription(subscription_name name);
      

      Remplacez name par le nom de l'abonnement existant. Exemple :

      postgres=> select pglogical.drop_subscription(subscription_name:= 'test_sub');
      -[ RECORD 1 ]-----+--
      drop_subscription |1
      
    1. Recréez l'abonnement pglogical sur la destination ou la réplique en fournissant les informations de connexion suivantes à l'instance principale AlloyDB:

      SELECT pglogical.create_subscription(
       subscription_name :='test_sub',<br>
       provider_dsn := 'host=primary-ip port=5432 dbname=postgres user=replication_user password=replicapassword'
      );
      
    2. Vérifiez l'état de l'abonnement à l'aide de la commande suivante :

      SELECT * FROM pglogical.show_subscription_status('test_sub');
      
    3. Testez la réplication en effectuant des transactions d'écriture et en vérifiant que les modifications sont visibles sur la destination.

  1. Actualisez les statistiques de la base de données.

    Une fois la mise à niveau terminée, exécutez ANALYZE sur votre cluster principal pour mettre à jour les statistiques système. Les statistiques précises garantissent que le planificateur de requêtes PostgreSQL traite les requêtes de manière optimale. Des statistiques manquantes peuvent entraîner des plans de requête inexacts, ce qui peut dégrader les performances et entraîner une utilisation excessive de mémoire.

  2. Exécutez des tests de validation pour vous assurer que le système mis à niveau fonctionne comme prévu.

  3. Vérifiez que la version majeure de la base de données mise à niveau sur site apparaît sur la page Présentation du cluster dans la console Google Cloud.

Restaurer la version majeure précédente

Si votre système de base de données mis à niveau ne fonctionne pas comme prévu, vous devrez peut-être revenir à l'état d'avant la mise à niveau. Pour ce faire, effectuez une restauration à partir d'une sauvegarde préalable à la mise à niveau (celle créée automatiquement par AlloyDB pendant le processus de mise à niveau ou une sauvegarde préalable à la mise à niveau existante) afin de créer un nouveau cluster avec l'état d'avant la mise à niveau.

Pour restaurer un état antérieur à la mise à niveau, procédez comme suit:

  1. Identifiez une sauvegarde préalable à la mise à niveau à partir de laquelle effectuer la restauration. Au cours du processus de mise à niveau, AlloyDB crée automatiquement une sauvegarde avant la mise à niveau avec le préfixe pre-upgrade-bkp. Pour en savoir plus, consultez la section Afficher la liste des sauvegardes.

  2. Lancez une restauration à partir de la sauvegarde effectuée avant la mise à niveau, ce qui crée un nouveau cluster avec la version PostgreSQL précédente. Pour en savoir plus, consultez la section Restaurer un cluster à partir d'une sauvegarde stockée.

  3. Connectez votre application. Mettez à jour votre application avec les détails du cluster restauré et de ses instances dupliquées avec accès en lecture. Vous pouvez reprendre la diffusion du trafic sur le cluster restauré.

Vous pouvez également effectuer une récupération à un moment précis avant la mise à niveau. Pour en savoir plus, consultez la section Utiliser la récupération à un moment précis (PITR).

Limites

Les limites suivantes affectent les mises à niveau de versions majeures sur place d'AlloyDB:

  • Vous ne pouvez pas effectuer de mise à niveau de version majeure sur place sur un cluster secondaire.
  • La mise à niveau d'instances comportant plus de 1 000 bases de données d'une version à une autre peut prendre beaucoup de temps et expirer.
  • AlloyDB n'est pas compatible avec la mise à niveau des clusters qui utilisent pg_largeobject_metadata. Si select count(*) from pg_largeobject_metadata; est différent de zéro, la mise à niveau échoue.
  • L'opération de mise à niveau de la version majeure sur place peut se terminer avant la sauvegarde avant la mise à niveau ou les sauvegardes après la mise à niveau, en particulier lorsque vous disposez d'une grande base de données avec moins d'objets.
  • Un court délai peut être nécessaire entre le moment où les écritures reprennent sur l'instance mise à niveau et la création de la sauvegarde post-mise à niveau. Cela signifie que le contenu de la sauvegarde post-mise à niveau peut ne pas correspondre au contenu de la base de données avant la mise à niveau de la version majeure.
  • Des sauvegardes préalables à la mise à niveau peuvent toujours être créées lorsqu'une mise à niveau majeure sur place échoue.
  • Étant donné que les sauvegardes de mise à niveau automatique sont continues, vous ne pouvez pas les supprimer tant qu'elles n'ont pas atteint la durée de conservation maximale des sauvegardes et de la récupération continues. Lorsque la durée de conservation maximale est atteinte, les sauvegardes sont collectées. Vous pouvez également utiliser la gcloud CLI pour supprimer manuellement les sauvegardes. Pour en savoir plus, consultez la section Restrictions concernant la suppression de sauvegardes.

Étape suivante