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.
Présentation
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. Enfin, la mise à jour de maintenance est appliquée à 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
suivante, 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 passer à une version antérieure à la version de maintenance actuelle.
gcloud
Avant d'exécuter la commande gcloud
suivante, 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'exécuter la commande gcloud
suivante, 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, 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.
Appliquer les modifications
Pour appliquer votre configuration Terraform dans un projet Google Cloud, suivez les procédures des sections suivantes.
Préparer Cloud Shell
- Lancez Cloud Shell.
-
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).
-
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 exemplemain.tf
. Dans ce tutoriel, le fichier est appelémain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
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.
- Examinez et modifiez les exemples de paramètres à appliquer à votre environnement.
- Enregistrez les modifications.
-
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
-
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.
-
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).
- 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 :
- Pour désactiver la protection contre la suppression, définissez l'argument
deletion_protection
surfalse
dans le fichier de configuration Terraform.deletion_protection = "false"
- Appliquez la configuration Terraform mise à jour en exécutant la commande suivante et en saisissant
yes
lorsque vous y êtes invité :terraform apply
-
Supprimez les ressources précédemment appliquées à votre configuration Terraform en exécutant la commande suivante et en saisissant
yes
à la requête :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 seule instance 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 résultat 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.
Appliquer les modifications
Pour appliquer votre configuration Terraform dans un projet Google Cloud, suivez les procédures des sections suivantes.
Préparer Cloud Shell
- Lancez Cloud Shell.
-
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).
-
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 exemplemain.tf
. Dans ce tutoriel, le fichier est appelémain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
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.
- Examinez et modifiez les exemples de paramètres à appliquer à votre environnement.
- Enregistrez les modifications.
-
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
-
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.
-
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).
- 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 :
- Pour désactiver la protection contre la suppression, définissez l'argument
deletion_protection
surfalse
dans le fichier de configuration Terraform.deletion_protection = "false"
- Appliquez la configuration Terraform mise à jour en exécutant la commande suivante et en saisissant
yes
lorsque vous y êtes invité :terraform apply
-
Supprimez les ressources précédemment appliquées à votre configuration Terraform en exécutant la commande suivante et en saisissant
yes
à la requête :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 le 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
- Affichez les journaux des opérations d'instance.
- Consultez les questions fréquentes sur la maintenance.
- En savoir plus sur la réplication dans Cloud SQL.