Maintenance en libre-service

Cette page décrit la maintenance en libre-service, qui vous permet d'accepter une mise à jour de maintenance sur votre instance en dehors du flux normal de maintenance planifiée.

Aperçu

Cloud SQL publie régulièrement des améliorations logicielles, telles que des correctifs pour les failles connues, via de nouvelles versions de maintenance. Bien que Cloud SQL planifie les mises à jour de maintenance tous les deux ou trois mois pour vous assurer que vous disposez de la dernière version de maintenance, la maintenance en libre-service peut être utile dans les cas suivants :

  • Vous aurez besoin d'une mise à jour avant votre prochain événement de maintenance programmé.
  • Vous souhaitez rattraper la dernière version de maintenance après avoir ignoré votre événement de maintenance programmé le plus récent.

Vous n'êtes pas obligé de passer manuellement à la dernière version. Vous pouvez autoriser Cloud SQL à mettre à jour automatiquement votre version de maintenance lors de votre prochain événement de maintenance programmé.

Gérer la maintenance sur toutes les instances répliquées avec accès en lecture d'une instance principale

Lorsque vous effectuez une maintenance en libre-service sur une instance principale comportant des instances répliquées avec accès en lecture, Cloud SQL applique automatiquement la mise à jour de maintenance à toutes ses instances répliquées avec accès en lecture. Si vous disposez de plus de trois instances répliquées avec accès en lecture, elles sont divisées en groupes et mises à jour en parallèle. La dernière étape consiste à appliquer la mise à jour de maintenance à l'instance principale.

Si nécessaire, vous pouvez toujours effectuer la maintenance en libre-service sur une seule instance répliquée avec accès en lecture. Toutefois, pour vous assurer que toutes les instances répliquées avec accès en lecture et l'instance principale fonctionnent sur la même version de maintenance, nous vous recommandons d'effectuer la maintenance en libre-service sur toutes les instances répliquées avec accès en lecture d'une instance principale au même moment.

Pour mettre à jour une seule instance répliquée avec accès en lecture, spécifiez cette instance lorsque vous effectuez la maintenance en libre-service.

Avant de commencer

Avant d'effectuer la maintenance en libre-service, commencez par vérifier votre version de maintenance actuelle. Vous pouvez ensuite déterminer la version de maintenance cible vers laquelle vous souhaitez effectuer la mise à jour et mettre à jour l'instance vers cette version. Si vous utilisez des instances répliquées avec accès en lecture, mettez à jour toutes les instances répliquées avec accès en lecture de l'instance principale vers cette version.

Pour afficher la version de maintenance actuelle d'une instance, procédez comme suit:

gcloud

Avant d'exécuter la commande gcloud ci-dessous, effectuez le remplacement suivant:

  • INSTANCE_ID : instance à interroger
gcloud sql instances describe INSTANCE_ID
  

La version de maintenance installée sur l'instance est indiquée à côté de l'attribut maintenanceVersion.

REST v1

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

  • PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
  • INSTANCE_NAME : nom de l'instance que vous configurez pour la haute disponibilité.

Méthode HTTP et URL :

GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

Pour envoyer votre requête, développez l'une des options suivantes :

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

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "POSTGRES_13"
}

Recherchez l'élément maintenanceVersion dans la section DatabaseInstance de la réponse.

REST v1beta4

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

  • PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
  • INSTANCE_NAME : nom de l'instance que vous configurez pour la haute disponibilité.

Méthode HTTP et URL :

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

Pour envoyer votre requête, développez l'une des options suivantes :

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

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "POSTGRES_13"
}

Recherchez l'élément maintenanceVersion dans la section DatabaseInstance de la réponse.

Déterminer la version de maintenance cible

Utilisez la méthode suivante pour afficher les versions de maintenance que vous pouvez sélectionner comme cible. Vous ne pouvez pas effectuer de mise à jour vers une version antérieure à la version de maintenance actuelle.

gcloud

Avant d'exécuter la commande gcloud ci-dessous, effectuez le remplacement suivant:

  • INSTANCE_ID : instance à interroger
gcloud sql instances describe INSTANCE_ID
  

La version de maintenance disponible est indiquée à côté de l'attribut availableMaintenanceVersions.

REST v1

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

  • PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
  • INSTANCE_NAME : nom de l'instance que vous configurez pour la haute disponibilité.

Méthode HTTP et URL :

GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

Pour envoyer votre requête, développez l'une des options suivantes :

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

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "POSTGRES_13"
}

Recherchez l'élément availableMaintenanceVersions dans la section DatabaseInstance de la réponse.

REST v1beta4

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

  • PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
  • INSTANCE_NAME : nom de l'instance que vous configurez pour la haute disponibilité.

Méthode HTTP et URL :

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

Pour envoyer votre requête, développez l'une des options suivantes :

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

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "POSTGRES_13"
}

Recherchez l'élément availableMaintenanceVersions dans la section DatabaseInstance de la réponse.

Mettre à jour toutes les instances répliquées avec accès en lecture d'une instance principale vers la version de maintenance cible

Pour effectuer une mise à jour de maintenance sur toutes les instances répliquées avec accès en lecture d'une instance principale, procédez comme suit :

gcloud

Avant d'utiliser la commande gcloud ci-dessous, effectuez le remplacement suivant:

  • PRIMARY_INSTANCE_ID: ID de l'instance principale
  • MAINTENANCE_VERSION: version de maintenance Cloud SQL à appliquer
gcloud sql instances patch PRIMARY_INSTANCE_ID \
   --maintenance-version=MAINTENANCE_VERSION
  

Lorsque vous êtes invité à confirmer l'opération, saisissez Y pour continuer ou N pour annuler.

Si vous sélectionnez Y, le processus de mise à jour applique d'abord la version de maintenance spécifiée à toutes les instances répliquées avec accès en lecture avant de mettre à jour l'instance principale. Toutes les instances répliquées avec accès en lecture qui ont déjà été mises à jour vers la version de maintenance cible sont ignorées.

Si vous sélectionnez N, aucune instance n'est mise à jour.

Une fois la mise à jour des instances répliquées avec accès en lecture et l'instance principale terminée, un message semblable au suivant s'affiche:

  Patching Cloud SQL instance....done.
  Patching Cloud SQL instance....done.
  Patching Cloud SQL instance....done.
  Updated [https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/PRIMARY_INSTANCE_ID]
  

Terraform

Pour créer une instance, utilisez une ressource Terraform.

resource "google_sql_database_instance" "postgres_ssm_instance_name" {
  name                = "postgres-ssm-instance-name"
  region              = "asia-northeast1"
  database_version    = "POSTGRES_14"
  maintenance_version = "POSTGRES_14_4.R20220710.01_07"
  settings {
    tier = "db-f1-micro"
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Appliquer les modifications

Pour appliquer votre configuration Terraform dans un projet Google Cloud, suivez les procédures des sections suivantes.

Préparer Cloud Shell

  1. Lancez Cloud Shell.
  2. Définissez le projet Google Cloud par défaut dans lequel vous souhaitez appliquer vos configurations Terraform.

    Vous n'avez besoin d'exécuter cette commande qu'une seule fois par projet et vous pouvez l'exécuter dans n'importe quel répertoire.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Les variables d'environnement sont remplacées si vous définissez des valeurs explicites dans le fichier de configuration Terraform.

Préparer le répertoire

Chaque fichier de configuration Terraform doit avoir son propre répertoire (également appelé module racine).

  1. Dans Cloud Shell, créez un répertoire et un nouveau fichier dans ce répertoire. Le nom du fichier doit comporter l'extension .tf, par exemple main.tf. Dans ce tutoriel, le fichier est appelé main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si vous suivez un tutoriel, vous pouvez copier l'exemple de code dans chaque section ou étape.

    Copiez l'exemple de code dans le fichier main.tf que vous venez de créer.

    Vous pouvez également copier le code depuis GitHub. Cela est recommandé lorsque l'extrait Terraform fait partie d'une solution de bout en bout.

  3. Examinez et modifiez les exemples de paramètres à appliquer à votre environnement.
  4. Enregistrez les modifications.
  5. Initialisez Terraform. Cette opération n'est à effectuer qu'une seule fois par répertoire.
    terraform init

    Vous pouvez également utiliser la dernière version du fournisseur Google en incluant l'option -upgrade :

    terraform init -upgrade

Appliquer les modifications

  1. Examinez la configuration et vérifiez que les ressources que Terraform va créer ou mettre à jour correspondent à vos attentes :
    terraform plan

    Corrigez les modifications de la configuration si nécessaire.

  2. Appliquez la configuration Terraform en exécutant la commande suivante et en saisissant yes lorsque vous y êtes invité :
    terraform apply

    Attendez que Terraform affiche le message "Apply completed!" (Application terminée).

  3. Ouvrez votre projet Google Cloud pour afficher les résultats. Dans la console Google Cloud, accédez à vos ressources dans l'interface utilisateur pour vous assurer que Terraform les a créées ou mises à jour.

Supprimer les modifications

Pour supprimer vos modifications, procédez comme suit :

  1. Pour désactiver la protection contre la suppression, définissez l'argument deletion_protection sur false dans le fichier de configuration Terraform.
    deletion_protection =  "false"
  2. Appliquez la configuration Terraform mise à jour en exécutant la commande suivante et en saisissant yes lorsque vous y êtes invité :
    terraform apply
  1. Supprimez les ressources précédemment appliquées à votre configuration Terraform en exécutant la commande suivante et en saisissant yes à l'invite :

    terraform destroy

REST v1

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

  • PROJECT_ID : ID du projet
  • PROJECT_ID: ID de l'instance principale
  • MAINTENANCE_VERSION: version de maintenance logicielle Cloud SQL à appliquer

Méthode HTTP et URL :

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID

Corps JSON de la requête :

{
  "maintenanceVersion": "MAINTENANCE_VERSION"
}

Pour envoyer votre requête, développez l'une des options suivantes :

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "08:00",
  "endTime": "08:01",
  "operationType": UPDATE,
  "name": "OPERATION_ID",
  "targetId": "PRIMARY_INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

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

  • PROJECT_ID : ID du projet
  • INSTANCE_ID: ID de l'instance principale
  • MAINTENANCE_VERSION: version de maintenance logicielle Cloud SQL à appliquer

Méthode HTTP et URL :

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID

Corps JSON de la requête :

{
  "maintenanceVersion": "MAINTENANCE_VERSION"
}

Pour envoyer votre requête, développez l'une des options suivantes :

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "08:00",
  "endTime": "08:01",
  "operationType": UPDATE,
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Mettre à jour une instance unique vers la version de maintenance cible

Pour effectuer une mise à jour de maintenance sur une seule instance, procédez comme suit : Si nécessaire, vous pouvez utiliser cette procédure pour mettre à jour une seule instance répliquée avec accès en lecture.

gcloud

Avant d'exécuter la commande gcloud suivante, effectuez les remplacements suivants :

  • INSTANCE_ID : ID de l'instance Il peut s'agir d'une instance répliquée avec accès en lecture.
  • MAINTENANCE_VERSION: version de maintenance Cloud SQL à appliquer
  gcloud sql instances patch INSTANCE_ID \
     --maintenance-version=MAINTENANCE_VERSION
  

Si vous spécifiez une instance répliquée avec accès en lecture, une invite de confirmation s'affiche. Saisissez Y pour continuer ou N pour annuler.

  • Si vous sélectionnez Y, le processus de mise à jour n'applique la version de maintenance spécifiée qu'à l'instance répliquée avec accès en lecture spécifiée.
  • Si vous sélectionnez N, aucune instance n'est mise à jour.

Une fois la mise à jour de l'instance terminée, un message semblable au suivant s'affiche:

  Patching Cloud SQL instance....done.
  Updated [https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID]
  

Terraform

Pour créer une instance, utilisez une ressource Terraform.

resource "google_sql_database_instance" "postgres_ssm_instance_name" {
  name                = "postgres-ssm-instance-name"
  region              = "asia-northeast1"
  database_version    = "POSTGRES_14"
  maintenance_version = "POSTGRES_14_4.R20220710.01_07"
  settings {
    tier = "db-f1-micro"
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Appliquer les modifications

Pour appliquer votre configuration Terraform dans un projet Google Cloud, suivez les procédures des sections suivantes.

Préparer Cloud Shell

  1. Lancez Cloud Shell.
  2. Définissez le projet Google Cloud par défaut dans lequel vous souhaitez appliquer vos configurations Terraform.

    Vous n'avez besoin d'exécuter cette commande qu'une seule fois par projet et vous pouvez l'exécuter dans n'importe quel répertoire.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Les variables d'environnement sont remplacées si vous définissez des valeurs explicites dans le fichier de configuration Terraform.

Préparer le répertoire

Chaque fichier de configuration Terraform doit avoir son propre répertoire (également appelé module racine).

  1. Dans Cloud Shell, créez un répertoire et un nouveau fichier dans ce répertoire. Le nom du fichier doit comporter l'extension .tf, par exemple main.tf. Dans ce tutoriel, le fichier est appelé main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si vous suivez un tutoriel, vous pouvez copier l'exemple de code dans chaque section ou étape.

    Copiez l'exemple de code dans le fichier main.tf que vous venez de créer.

    Vous pouvez également copier le code depuis GitHub. Cela est recommandé lorsque l'extrait Terraform fait partie d'une solution de bout en bout.

  3. Examinez et modifiez les exemples de paramètres à appliquer à votre environnement.
  4. Enregistrez les modifications.
  5. Initialisez Terraform. Cette opération n'est à effectuer qu'une seule fois par répertoire.
    terraform init

    Vous pouvez également utiliser la dernière version du fournisseur Google en incluant l'option -upgrade :

    terraform init -upgrade

Appliquer les modifications

  1. Examinez la configuration et vérifiez que les ressources que Terraform va créer ou mettre à jour correspondent à vos attentes :
    terraform plan

    Corrigez les modifications de la configuration si nécessaire.

  2. Appliquez la configuration Terraform en exécutant la commande suivante et en saisissant yes lorsque vous y êtes invité :
    terraform apply

    Attendez que Terraform affiche le message "Apply completed!" (Application terminée).

  3. Ouvrez votre projet Google Cloud pour afficher les résultats. Dans la console Google Cloud, accédez à vos ressources dans l'interface utilisateur pour vous assurer que Terraform les a créées ou mises à jour.

Supprimer les modifications

Pour supprimer vos modifications, procédez comme suit :

  1. Pour désactiver la protection contre la suppression, définissez l'argument deletion_protection sur false dans le fichier de configuration Terraform.
    deletion_protection =  "false"
  2. Appliquez la configuration Terraform mise à jour en exécutant la commande suivante et en saisissant yes lorsque vous y êtes invité :
    terraform apply
  1. Supprimez les ressources précédemment appliquées à votre configuration Terraform en exécutant la commande suivante et en saisissant yes à l'invite :

    terraform destroy

REST v1

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

  • PROJECT_ID : ID du projet
  • PROJECT_ID: ID de l'instance, qui peut être une instance répliquée avec accès en lecture
  • MAINTENANCE_VERSION: version de maintenance logicielle Cloud SQL à appliquer

Méthode HTTP et URL :

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID

Corps JSON de la requête :

{
  "maintenanceVersion": "MAINTENANCE_VERSION"
}

Pour envoyer votre requête, développez l'une des options suivantes :

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "08:00",
  "endTime": "08:01",
  "operationType": UPDATE,
  "name": "OPERATION_ID",
  "targetId": "PRIMARY_INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

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

  • PROJECT_ID : ID du projet
  • INSTANCE_ID: ID de l'instance, qui peut être une instance répliquée avec accès en lecture
  • MAINTENANCE_VERSION: version de maintenance logicielle Cloud SQL à appliquer

Méthode HTTP et URL :

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID

Corps JSON de la requête :

{
  "maintenanceVersion": "MAINTENANCE_VERSION"
}

Pour envoyer votre requête, développez l'une des options suivantes :

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "08:00",
  "endTime": "08:01",
  "operationType": UPDATE,
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Résoudre les problèmes

Problème Dépannage
Impossible d'appliquer la mise à jour de maintenance à une instance arrêtée. Pour résoudre ce problème, démarrez l'instance avant d'effectuer la mise à jour de maintenance en libre-service.
En raison d'une différence dans la version majeure de la base de données, la mise à jour de maintenance a échoué.

Vous ne pouvez pas utiliser la maintenance en libre-service pour mettre à niveau la version majeure de la base de données d'une instance.

Pour mettre à niveau la version majeure d'une instance, suivez l'une des procédures suivantes:

Étapes suivantes