Cette page explique comment effectuer une mise à niveau sur place de la version majeure d'une base de données 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 sur place de la version majeure de la base de données, consultez Présentation de la mise à niveau sur place de la version majeure de la base de données.
Planifier une mise à niveau de version majeure de la base de données
Pour planifier la mise à niveau d'une version majeure de la base de données, procédez comme suit :
Recherchez la version majeure actuelle de votre base de données.
Console
Dans la console Google Cloud , accédez à la page Clusters.
Sélectionnez un cluster dans la liste. La page Vue d'ensemble s'affiche.
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 Installer la gcloud CLI. Pour en savoir plus sur le démarrage de Cloud Shell, consultez 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 : emplacement ou région 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 : emplacement ou région du cluster
Pour envoyer votre demande, 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" \ "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
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 concernant les versions.
Version majeure de la source Version(s) majeure(s) cible(s) acceptée(s) POSTGRES_14 - POSTGRES_15
- POSTGRES_16
POSTGRES_15 - POSTGRES_16
Examinez les fonctionnalités proposées dans chaque version majeure de la base de données.
Identifiez les éventuelles incompatibilités à 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.
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 pour une mise à niveau de version majeure
Pour vous connecter à la base de données, utilisez l'une des options suivantes :
Supprimez ou promouvez vos instances dupliquées interrégionales. Les mises à niveau sur place des versions majeures de bases de données ne sont pas compatibles avec les répliques interrégionales. Pour en savoir plus, consultez Réplication interrégionale.
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 pourrez réactiver les abonnements et recréer les emplacements de réplication logique 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 les emplacements de réplication logique, procédez comme suit :
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ètreimmediate
surtrue
. Par défaut, la valeur estfalse
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;
Supprimez tous les emplacements de réplication logique sur l'instance principale AlloyDB en exécutant la commande suivante :
SELECT pg_drop_replication_slot(REPLICATION_SLOT_NAME) FROM pg_replication_slots WHERE slot_type = 'logical';
Remplacez
REPLICATION_SLOT_NAME
dans la requête par le nom de l'emplacement de réplication.
Gérez vos extensions PostgreSQL. Pour en savoir plus, consultez Configurer des extensions de base de données.
Les vérifications préalables à la mise à niveau détectent les incompatibilités d'extension et signalent ces violations dans les journaux, ainsi que les actions suggérées. Pour en savoir plus, consultez Afficher les échecs de la vérification préalable à la mise à niveau.
Vous devrez peut-être procéder comme suit :
- Supprimez toutes les extensions qui ne sont plus compatibles dans la version cible.
Mettez à niveau PostGIS et les extensions associées (
address_standardizer
,address_standardizer_data_us
,postgis_raster
,postgis_sfcgal
,postgis_tiger_geocoder
etpostgis_topology
) vers une version compatible dans la version PostgreSQL cible. Pour en savoir plus, consultez Extensions PostGIS. Le tableau suivant répertorie les versions minimales de l'extension PostGIS compatibles avec chaque version majeure de PostgreSQL :Version de PostgreSQL Version minimale de PostGIS compatible PG14 3.1 PG15 3.2 PG16 3.4 Par exemple, si votre version de PostGIS est 3.1.x et que vous souhaitez passer de POSTGRES 14 à POSTGRES 16, utilisez la commande suivante pour mettre à niveau l'extension PostGIS :
ALTER EXTENSION postgis UPDATE TO '3.4.0'; SELECT PostGIS_Version();
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 champdatallowconn
pour chaque base de données :SELECT datname,datallowconn from pg_database;
Une valeur
t
dans le champdatallowconn
signifie que la connexion est autorisée. Une valeurf
indique qu'une connexion ne peut pas être établie. La base de donnéestemplate0
ne doit pas autoriser les connexions.Pour autoriser les connexions à une base de données, exécutez la commande suivante :
ALTER DATABASE DATABASE_NAME WITH ALLOW_CONNECTIONS = true;
Vérifiez que
template1
est une base de données de modèle en exécutant la commande suivante :SELECT datname, datistemplate FROM pg_database WHERE datname = 'template1';
Si
datistemplate
est défini surf
, définissez-le surtrue
en exécutant la commande suivante :ALTER DATABASE template1 WITH IS_TEMPLATE true;
Mettre à niveau la version majeure du cluster sur place
La mise à niveau sur place de la version majeure de la base de données peut prendre entre 40 minutes et 48 heures, selon des 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 de 20 minutes à 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 Résoudre les problèmes liés à la mise à niveau d'une version majeure sur place.
Pour mettre à niveau la version majeure de la base de données sur place, procédez comme suit :
Console
Dans la console Google Cloud , accédez à la page Clusters.
Sélectionnez un cluster dans la liste. La page Vue d'ensemble s'affiche.
Cliquez sur Mettre à niveau pour lancer le processus de mise à niveau de la version majeure de la base de données.
À 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.
Cliquez sur Continuer.
À l'étape Mettre à niveau le cluster, dans le champ ID du cluster, saisissez le nom du cluster.
Cliquez sur Lancer 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 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 clusters upgrade CLUSTER_ID --region=REGION --version=DATABASE_VERSION --async
Voici un exemple de commande :
gcloud alloydb clusters upgrade my-cluster --region=us-central1 --version=POSTGRES_16 --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 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_16"
}
Terraform
Pour mettre à niveau une instance de votre cluster de bases de données vers une version PostgreSQL, utilisez une ressource Terraform et définissez database_version
sur une version majeure cible compatible.
resource "google_alloydb_instance" "default" {
cluster = google_alloydb_cluster.default.name
instance_id = "alloydb-instance"
instance_type = "PRIMARY"
machine_config {
cpu_count = 2
}
depends_on = [google_service_networking_connection.vpc_connection]
}
resource "google_alloydb_cluster" "default" {
cluster_id = "alloydb-cluster"
location = "us-central1"
network_config {
network = google_compute_network.default.id
}
database_version = "POSTGRES_16"
initial_user {
password = "alloydb-cluster"
}
}
data "google_project" "project" {}
resource "google_compute_network" "default" {
name = "alloydb-network"
}
resource "google_compute_global_address" "private_ip_alloc" {
name = "alloydb-cluster"
address_type = "INTERNAL"
purpose = "VPC_PEERING"
prefix_length = 16
network = google_compute_network.default.id
}
resource "google_service_networking_connection" "vpc_connection" {
network = google_compute_network.default.id
service = "servicenetworking.googleapis.com"
reserved_peering_ranges = [google_compute_global_address.private_ip_alloc.name]
}
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez Commandes Terraform de base.
Surveiller la mise à niveau de la version majeure du cluster
Une fois la mise à niveau sur place de la version majeure de la base de données lancée, vous pouvez surveiller son état à l'aide de la console Google Cloud , de la gcloud CLI ou de l'API REST.
Console
Pour vérifier l'état de la mise à niveau dans la console Google Cloud :
Dans la console Google Cloud , accédez à la page Clusters.
Sélectionnez le cluster en cours de mise à niveau. La page Vue d'ensemble s'affiche.
Ouvrez la page Vue d'ensemble.
Cliquez sur État de la mise à niveau. La page État de la mise à niveau s'affiche. Vous pouvez y vérifier l'état de la mise à niveau.
gcloud
Pour vérifier l'état de la mise à niveau dans gcloud CLI, procédez comme suit :
Obtenez l'ID d'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 gcloud CLI 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 commandegcloud 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
Surveillez l'état de la mise à niveau en exécutant la commande
gcloud alloydb operations describe
:gcloud alloydb operations describe OPERATION_ID --region=REGION
REST v1beta
Pour vérifier l'état de la mise à niveau dans l'API REST, procédez comme suit :
Obtenez l'ID d'opération de la mise à niveau.
Utilisez la requête
GET
suivante avec la méthodeoperations.list
pour lister toutes les opérations de mise à niveau et trouver celle correspondant 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.
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 : emplacement ou région 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 Réponse de l'opération de mise à niveau.
Réponse de 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 sontSUCCESS
,FAILED
etPARTIAL_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 en cours de mise à niveau. Ce champ est un tableau. AlloyDB n'autorise qu'une seule mise à niveau de cluster. Il ne comporte donc qu'une seule entrée.name
: nom complet du cluster.upgradeStatus
: état de la mise à niveau du cluster. Les valeurs possibles sontSUCCESS
,FAILED
etPARTIAL_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 clusterPRIMARY
. Ce type doit toujours êtrePRIMARY
.databaseVersion
: version actuelle de la base de données du cluster.stageInfo
: informations sur les étapes de mise à niveau du cœur.status
:SUCCESS
ouFAILED
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 sur la mise à niveau pour toutes les instances du cluster.name
: nom complet de l'instanceupgradeStatus
:SUCCESS
ouFAILED
instanceType
:PRIMARY
ouREAD_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_16", "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
AlloyDB publie tous les journaux de mise à niveau dans le nom de journal postgres_upgrade
.
Pour afficher les journaux liés à la mise à niveau, procédez comme suit :
-
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.
Sélectionnez
alloydb.googleapis.com/postgres_upgrade
comme nom de journal. Cela se traduit par la requête"logName="projects/PROJECT_ID/logs/alloydb.googleapis.com%2Fpostgres_upgrade"
.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
etPG_UPGRADE
.OPERATION_NAME
Nom complet de l'opération de mise à niveau. FILE_NAME
Renseigné uniquement pour les journaux pg_upgrade_check
etpg_upgrade
, et correspond aux fichiers journaux générés par l'utilitairepg_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 Présentation de la mise à niveau sur place de la version majeure de la base de données.
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 :
-
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.
Interrogez les journaux de vérification préalable AlloyDB pour votre cluster.
logName="projects/PROJECT_ID/logs/alloydb.googleapis.com%2Fpostgres_upgrade" labels.LOG_TYPE="ALLOYDB_PRECHECK" resource.labels.cluster_id=CLUSTER_ID
Recherchez le
Operation_ID
à partir du libellé de journalOPERATION_NAME
.Dans l'exemple suivant,
Operation_ID
deOPERATION_NAME
estoperation-1728225968201-623cff6ed1e02-e34b7191-3cd92013
.labels.OPERATION_NAME="projects/myproject/locations/us-central1/operations/operation-1728225968201-623cff6ed1e02-e34b7191-3cd92013"
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 depuis la console Google Cloud , la gcloud CLI ou 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 point.
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 sur place, procédez comme suit :
Console
Dans la console Google Cloud , accédez à la page Clusters.
Sélectionnez un cluster dans la liste. La page Vue d'ensemble s'affiche.
Cliquez sur État de la mise à niveau.
Cliquez sur Annuler la mise à niveau. 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 UpgradeClusterStatus
affiche cancellable
comme false
dans le résultat 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 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, 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 défini sur 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 :
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 de la 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 votre cluster mis à niveau, procédez comme suit :
Si vous avez précédemment désactivé
pglogical
, réactivez la réplicationpglogical
. L'activation de la réplicationpglogical
crée automatiquement l'emplacement de réplication requis.Supprimez l'abonnement
pglogical
sur l'instance répliqué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. Recreate the `pglogical` subscription on the destination or replica by providing the following connection information to the AlloyDB primary instance: ```sql SELECT pglogical.create_subscription( subscription_name :='test_sub',<br> provider_dsn := 'host=primary-ip port=5432 dbname=postgres user=replication_user password=replicapassword' ); ``` 1. Check the status of the subscription by using the following command: ```sql SELECT * FROM pglogical.show_subscription_status('test_sub'); ``` 1. Test the replication by performing write transactions and verifying that the changes are visible on the destination.
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.Exécutez des tests de validation pour vous assurer que le système mis à niveau fonctionne comme prévu.
Vérifiez que la version majeure de la base de données mise à niveau sur place 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 antérieur à la mise à niveau. Pour ce faire, restaurez une sauvegarde préalable à la mise à niveau (celle qu'AlloyDB crée automatiquement pendant le processus de mise à niveau ou une sauvegarde préalable à la mise à niveau existante) afin de créer un cluster avec l'état préalable à la mise à niveau.
Pour restaurer un état antérieur à la mise à niveau, procédez comme suit :
Identifiez une sauvegarde préalable à la mise à niveau à partir de laquelle effectuer la restauration. Lors de la mise à niveau, AlloyDB crée automatiquement une sauvegarde préalable avec le préfixe
pre-upgrade-bkp
. Pour en savoir plus, consultez Afficher la liste des sauvegardes.Lancez une restauration à partir de la sauvegarde préalable à la mise à niveau, ce qui crée un cluster avec la version précédente de PostgreSQL. Pour en savoir plus, consultez Restaurer un cluster à partir d'une sauvegarde stockée.
Connectez votre application. Mettez à jour votre application avec les détails du cluster restauré et de ses instances répliqué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 antérieur à la mise à niveau. Pour en savoir plus, consultez Utiliser la récupération à un moment précis (PITR).
Limites
Les limites suivantes affectent les mises à niveau de versions majeures sur place pour 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
. Siselect 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 mise à niveau ou avant la fin des sauvegardes après mise à niveau, en particulier lorsque vous disposez d'une grande base de données avec moins d'objets de schéma.
- Un court délai peut s'écouler entre le moment où les écritures reprennent sur l'instance mise à niveau et celui où la sauvegarde post-migration est créée. Cela signifie que le contenu des sauvegardes après la mise à niveau peut ne pas correspondre au contenu de la base de données avant la mise à niveau de la version majeure.
- Des sauvegardes avant mise à niveau peuvent toujours être créées en cas d'échec d'une mise à niveau sur place d'une version majeure.
- Étant donné que les sauvegardes automatiques de mise à niveau 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 supprimées. Vous pouvez également utiliser la gcloud CLI pour supprimer manuellement les sauvegardes. Pour en savoir plus, consultez Restrictions concernant la suppression des sauvegardes.
Étapes suivantes
- En savoir plus sur les mises à niveau sur place des versions majeures de bases de données
- Résoudre les problèmes liés à la mise à niveau sur place d'une version majeure
- En savoir plus sur les erreurs de mise à niveau de version majeure sur place de la base de données