Autoscaling des pools de lecture

L'autoscaling de pool de lecture ajoute ou supprime automatiquement des nœuds de pool de lecture dans le pool de lecture en fonction des besoins de charge de travail de votre application.

Vous pouvez contrôler l'autoscaling du pool de lecture en limitant l'utilisation moyenne du processeur dans le pool de lecture ou en limitant le nombre de connexions client autorisées à accéder au pool de lecture, à l'aide de l'une des deux métriques cibles suivantes :

  • Utilisation moyenne du processeur : vous permet de définir l'utilisation moyenne du processeur dans laquelle vous souhaitez que le pool de lecture fonctionne. Le pool de lecture évolue automatiquement en fonction de l'utilisation du processeur par la charge de travail de votre application.
  • Connexions moyennes à la base de données : vous permet de spécifier le nombre moyen de connexions à la base de données client qui doivent être traitées par chaque nœud. Le pool de lecture évolue automatiquement en fonction du nombre de connexions client.

Pour appliquer ces métriques cibles, vous devez également définir un nombre minimal et maximal de nœuds de pool de lecture.

Pour activer l'autoscaling du pool de lecture, vous pouvez configurer une ou les deux métriques cibles sur l'instance. Si les deux métriques sont actives, Cloud SQL applique le nombre maximal de nœuds du pool de lecture indiqué par les deux métriques.

Le tableau suivant répertorie les limites pour chaque métrique cible :

Nom de la métrique cible Limites Métrique publique associée
Utilisation moyenne du processeur Entre 0,1 et 0,9. L'utilisation moyenne du processeur (cloudsql.googleapis.com/database/cpu/utilization) sur les nœuds du pool de lecture.
Nombre moyen de connexions à la base de données Entre 10 et 100 000. Remarque : La valeur maximale acceptable correspond à la valeur maximale définie par l'indicateur de base de données max_connections. Représente une moyenne des connexions client à la base de données (cloudsql.googleapis.com/database/network/connections) pour les nœuds du pool de lecture.

Lorsque les conditions de redimensionnement du pool de lecture sont remplies, les opérations d'autoscaling du pool de lecture peuvent être consultées dans la console Google Cloud . Toutes les autres opérations sur le pool de lecture et l'instance principale sont bloquées jusqu'à ce que l'autoscaling du pool de lecture soit terminé.

Caractéristiques de l'autoscaling des pools de lecture

Les caractéristiques suivantes s'appliquent :

  • Les opérations de scaling vertical ne suppriment qu'un seul nœud à la fois.
  • Les opérations de scaling horizontal ajoutent, en parallèle, autant de nœuds que nécessaire.
  • Par défaut, les opérations de scaling vertical et horizontal sont appliquées. Vous pouvez éventuellement bloquer les opérations de réduction en les désactivant manuellement (disableScaleIn).
  • Par défaut, une période de refroidissement de 600 secondes est appliquée entre les opérations d'autoscaling successives du pool de lecture. Une période de latence minimale de 60 secondes est requise, que vous augmentiez ou diminuiez la capacité.
  • Lorsque vous définissez une métrique cible, vous devez également définir le nombre minimal (minNodeCount) et maximal (maxNodeCount) de nœuds du pool de lecture que vous souhaitez utiliser. Si vous activez l'autoscaling sur un pool de lecture existant, la taille actuelle du pool de lecture doit se situer dans la plage que vous avez définie.

Limites

Les limites suivantes s'appliquent :

  • L'autoscaling du pool de lecture accepte un maximum de 10 opérations d'autoscaling toutes les 24 heures.
  • Si vous souhaitez créer un pool de lecture ou mettre à l'échelle un pool de lecture existant, vous devez attendre que les opérations de création et de mise à l'échelle précédentes soient terminées. Cela s'applique aux opérations associées au pool de lecture, ainsi qu'aux autres pools de lecture associés à la même instance principale. Si vous essayez d'exécuter des opérations simultanées, le message d'erreur suivant peut s'afficher :
    Operation failed because another operation was already in progress.
    

Avant de commencer

Créer un pool de lecture avec l'autoscaling activé

Si vous spécifiez une valeur cible de 0,50 pour AVERAGE_CPU_UTILIZATION, des nœuds de pool de lecture seront ajoutés ou supprimés du pool de lecture pour maintenir l'utilisation moyenne du processeur dans le pool de lecture à 0,50 ou moins.

gcloud

Pour créer un pool de lecture avec l'autoscaling activé, exécutez la commande suivante :

  gcloud sql instances create READ_POOL_NAME \
  --tier=MACHINE_TIER --edition=ENTERPRISE_PLUS \
  --instance-type=READ_POOL_INSTANCE --node-count=NODE_COUNT \
  --database-version=DATABASE_VERSION \
  --master-instance-name=PRIMARY_INSTANCE_NAME \
  --region=REGION --network=NETWORK_NAME \
  --no-assign-ip \
  --auto-scale-enabled \
  --auto-scale-max-node-count=MAX_NODE_COUNT \
  --auto-scale-min-node-count=MIN_NODE_COUNT \
  --auto-scale-target-metrics=TARGET_METRIC_1=VALUE_1
  

Remplacez les éléments suivants :

  • READ_POOL_NAME : nom que vous souhaitez attribuer au pool de lecture.
  • MACHINE_TIER : niveau de machine que vous souhaitez utiliser, par exemple db-perf-optimized-N-2.
  • NODE_COUNT : nombre de nœuds du pool de lecture avec lequel vous souhaitez commencer.
  • DATABASE_VERSION : version de la base de données que vous souhaitez utiliser, par exemple POSTGRES_16.
  • PRIMARY_INSTANCE_NAME : nom de l'instance principale que vous souhaitez utiliser.
  • REGION : région que vous souhaitez utiliser, par exemple us-east1.
  • NETWORK_NAME : nom du réseau que vous souhaitez utiliser.
  • MAX_NODE_COUNT : nombre maximal de nœuds du pool de lecture que vous souhaitez que le pool de lecture utilise, par exemple 5.
  • MIN_NODE_COUNT : nombre minimal de nœuds du pool de lecture que vous souhaitez que le pool de lecture utilise, par exemple 1.
  • TARGET_METRIC_1 : métrique cible que vous souhaitez utiliser, par exemple :
    • AVERAGE_CPU_UTILIZATION
    • AVERAGE_DB_CONNECTIONS
    Vous devez définir au moins l'une des deux métriques disponibles.
  • VALUE_1 : valeur que vous souhaitez attribuer à la métrique cible que vous avez indiquée précédemment. Par exemple, pour la métrique cible AVERAGE_CPU_UTILIZATION, vous pouvez attribuer la valeur 0.50.

Terraform

Pour créer un pool de lecture avec l'autoscaling activé, utilisez une ressource Terraform.

L'exemple suivant inclut des ressources pour l'instance principale et le pool de lecture.


resource "google_sql_database_instance" "primary" {
  name             = "mysql-primary"
  database_version = "MYSQL_8_4"
  region           = "europe-west4"

  instance_type = "CLOUD_SQL_INSTANCE"

  settings {
    tier    = "db-perf-optimized-N-2"
    edition = "ENTERPRISE_PLUS"

    backup_configuration {
      enabled            = true
      binary_log_enabled = true
    }

    ip_configuration {
      ipv4_enabled = true
    }
  }
}

resource "google_sql_database_instance" "replica" {
  name             = "mysql-replica"
  database_version = "MYSQL_8_4"
  region           = "europe-west4"

  master_instance_name = google_sql_database_instance.primary.name
  instance_type        = "READ_POOL_INSTANCE"
  node_count           = 2

  settings {
    tier    = "db-perf-optimized-N-2"
    edition = "ENTERPRISE_PLUS"

    ip_configuration {
      ipv4_enabled = true
    }
    read_pool_auto_scale_config {
      enabled                    = true
      disable_scale_in           = false
      max_node_count             = 20
      min_node_count             = 2
      scale_in_cooldown_seconds  = 600
      scale_out_cooldown_seconds = 600
      target_metrics {
        metric       = "AVERAGE_CPU_UTILIZATION"
        target_value = 0.5
      }
    }
  }
}

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 à la requête :

    terraform destroy

REST v1

Pour créer un pool de lecture avec l'autoscaling activé, utilisez une requête POST avec la méthode instances:insert.

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

  • READ_POOL_NAME : nom que vous souhaitez attribuer au pool de lecture.
  • REGION : région dans laquelle vous souhaitez que l'instance réside, par exemple us-central1.
  • PRIMARY_INSTANCE_ID : ID de l'instance principale que vous souhaitez utiliser.
  • PROJECT_ID : ID du projet dans lequel vous souhaitez que le pool de lecture soit situé, tel que my-project-name.
  • DATABASE_VERSION : version de la base de données que vous souhaitez utiliser, par exemple MYSQL_8_0_37.
  • MACHINE_TIER : niveau de machine que vous souhaitez utiliser, par exemple db-perf-optimized-N-2.
  • FULL_NETWORK_NAME : nom du réseau que vous souhaitez utiliser.
  • MAX_NODE_COUNT : nombre maximal de nœuds du pool de lecture que vous souhaitez que le pool de lecture utilise, par exemple 10.
  • MIN_NODE_COUNT : nombre minimal de nœuds du pool de lecture que vous souhaitez que le pool de lecture utilise, par exemple 2.
  • TARGET_METRIC_1 : métrique cible que vous souhaitez utiliser, comme AVERAGE_CPU_UTILIZATION ou AVERAGE_DB_CONNECTIONS. Vous devez définir au moins l'une des deux métriques disponibles.
  • VALUE_1 : valeur que vous souhaitez attribuer à la métrique cible que vous avez indiquée précédemment. Par exemple, pour la métrique cible AVERAGE_CPU_UTILIZATION, vous pouvez attribuer la valeur 0.50.
  • NODE_COUNT : nombre de nœuds du pool de lecture avec lequel vous souhaitez commencer, par exemple 3.

Méthode HTTP et URL :

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

Corps JSON de la requête :

{
  "name":"READ_POOL_NAME",
  "region":"REGION",
  "masterInstanceName":"PRIMARY_INSTANCE_ID",
  "project":"PROJECT_ID",
  "databaseVersion":"DATABASE_VERSION",
  "settings":{
    "tier":"MACHINE_TIER",
    "edition":"ENTERPRISE_PLUS",
    "ipConfiguration":{
      "privateNetwork":"FULL_NETWORK_NAME",
      "ipv4Enabled": false
    },
    "readPoolAutoScaleConfig":{
      "enabled": true,
      "minNodeCount": MIN_NODE_COUNT,
      "maxNodeCount": MAX_NODE_COUNT,
      "targetMetrics": [
        {
          "metric":"TARGET_METRIC_1",
          "targetValue": VALUE_1
        }
      ]
    }
  },
  "instanceType":"READ_POOL_INSTANCE",
  "nodeCount": NODE_COUNT
}

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/PRIMARY_INSTANCE_ID",
  "status": "RUNNING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "2023-06-14T18:48:35.499Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "PRIMARY_INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

Pour créer un pool de lecture avec l'autoscaling activé, utilisez une requête POST avec la méthode instances:insert.

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

  • READ_POOL_NAME : nom que vous souhaitez attribuer au pool de lecture.
  • REGION : région dans laquelle vous souhaitez que l'instance réside, par exemple us-central1.
  • PRIMARY_INSTANCE_ID : ID de l'instance principale que vous souhaitez utiliser.
  • PROJECT_ID : ID du projet dans lequel vous souhaitez que le pool de lecture soit situé, tel que my-project-name.
  • DATABASE_VERSION : version de la base de données que vous souhaitez utiliser, par exemple MYSQL_8_0_37.
  • MACHINE_TIER : niveau de machine que vous souhaitez utiliser, par exemple db-perf-optimized-N-2.
  • FULL_NETWORK_NAME : nom du réseau que vous souhaitez utiliser.
  • MAX_NODE_COUNT : nombre maximal de nœuds du pool de lecture que vous souhaitez que le pool de lecture utilise, par exemple 10.
  • MIN_NODE_COUNT : nombre minimal de nœuds du pool de lecture que vous souhaitez que le pool de lecture utilise, par exemple 2.
  • TARGET_METRIC_1 : métrique cible que vous souhaitez utiliser, par exemple :
    • AVERAGE_CPU_UTILIZATION
    • AVERAGE_DB_CONNECTIONS
    Vous devez définir au moins l'une des deux métriques disponibles.
  • VALUE_1 : valeur que vous souhaitez attribuer à la métrique cible que vous avez indiquée précédemment. Dans cet exemple, attribuez la valeur 0.50 à la métrique cible AVERAGE_CPU_UTILIZATION.
  • NODE_COUNT : nombre de nœuds du pool de lecture avec lequel vous souhaitez commencer, par exemple 3.

Méthode HTTP et URL :

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

Corps JSON de la requête :

{
  "name":"READ_POOL_NAME",
  "region":"REGION",
  "masterInstanceName":"PRIMARY_INSTANCE_ID",
  "project":"PROJECT_ID",
  "databaseVersion":"DATABASE_VERSION",
  "settings":{
    "tier":"MACHINE_TIER",
    "edition":"ENTERPRISE_PLUS",
    "ipConfiguration":{
      "privateNetwork":"FULL_NETWORK_NAME",
      "ipv4Enabled": false
    },
    "readPoolAutoScaleConfig":{
      "enabled": true,
      "minNodeCount": MIN_NODE_COUNT,
      "maxNodeCount": MAX_NODE_COUNT,
      "targetMetrics": [
        {
          "metric":"TARGET_METRIC_1",
          "targetValue": VALUE_1
        }
      ]
    }
  },
  "instanceType":"READ_POOL_INSTANCE",
  "nodeCount": NODE_COUNT
}

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/PRIMARTY_INSTANCE_ID",
  "status": "RUNNING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "2023-06-14T18:48:35.499Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "PRIMARTY_INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Activer l'autoscaling du pool de lecture sur un pool de lecture existant

Si vous avez déjà créé un pool de lecture, vous pouvez activer l'autoscaling en indiquant la configuration d'autoscaling que vous souhaitez utiliser.

Par exemple, si vous spécifiez une valeur cible de 50 pour AVERAGE_DB_CONNECTIONS, des nœuds seront ajoutés ou supprimés du pool de lecture pour maintenir le nombre moyen de connexions à la base de données dans le pool à 50 ou moins.

gcloud

Pour activer le pool de lecture avec autoscaling sur un pool de lecture existant, exécutez la commande suivante.

  gcloud sql instances patch INSTANCE
  --auto-scale-enabled
  --auto-scale-max-node-count=MAX_NODE_COUNT
  --auto-scale-min-node-count=MIN_NODE_COUNT
  --auto-scale-out-cooldown-seconds=COOLDOWN_SECONDS_SCALE_OUT
  --auto-scale-in-cooldown-seconds=COOLDOWN_SECONDS_SCALE_IN
  --auto-scale-target-metrics=TARGET_METRIC_1=VALUE_1
  

Remplacez les éléments suivants :

  • INSTANCE_NAME : nom de l'instance associée au pool de lecture que vous souhaitez modifier.
  • MAX_NODE_COUNT : nombre maximal de nœuds du pool de lecture que vous souhaitez que le pool de lecture utilise, par exemple 10.
  • MIN_NODE_COUNT : nombre minimal de nœuds du pool de lecture que vous souhaitez que le pool de lecture utilise, par exemple 2.
  • COOLDOWN_SECONDS_SCALE_OUT : facultatif : temps d'arrêt ou d'attente en secondes entre la création ou la suppression de nœuds de pool de lecture, par exemple 180. Un intervalle minimum de 60 secondes est requis. La valeur par défaut est de 600 secondes.
  • COOLDOWN_SECONDS_SCALE_IN : facultatif : temps d'arrêt ou d'attente en secondes entre la création ou la suppression de nœuds de pool de lecture, par exemple 180. Un intervalle minimum de 60 secondes est requis. La valeur par défaut est de 600 secondes.
  • TARGET_METRIC_1 : métrique cible que vous souhaitez utiliser, par exemple :
    • AVERAGE_CPU_UTILIZATION
    • AVERAGE_DB_CONNECTIONS
    Vous devez définir au moins l'une des deux métriques disponibles.
  • VALUE_1 : valeur que vous souhaitez attribuer à la métrique cible que vous avez indiquée précédemment. Dans cet exemple, attribuez la valeur 50 à la métrique cible AVERAGE_DB_CONNECTIONS.

REST v1

Pour activer l'autoscaling pour un pool de lecture existant, utilisez la méthode PATCH.

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

  • PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
  • INSTANCE_ID : ID de l'instance associée au pool de lecture.
  • MAX_NODE_COUNT : nombre maximal de nœuds du pool de lecture que vous souhaitez que le pool de lecture utilise, par exemple 10.
  • MIN_NODE_COUNT : nombre minimal de nœuds du pool de lecture que vous souhaitez que le pool de lecture utilise, par exemple 2.
  • COOLDOWN_SECONDS : facultatif : temps d'arrêt ou d'attente en secondes entre la création ou la suppression de nœuds de pool de lecture, par exemple 180.
  • SCALE_IN_DISABLED : (facultatif) vous permet de désactiver le comportement de réduction du pool de lecture. Pour désactiver la réduction du pool de lecture, définissez la valeur sur true.
  • TARGET_METRIC_1 : métrique cible que vous souhaitez utiliser, par exemple :
    • AVERAGE_CPU_UTILIZATION
    • AVERAGE_DB_CONNECTIONS
    Vous devez définir au moins l'une des deux métriques disponibles.
  • VALUE_1 : valeur que vous souhaitez attribuer à la métrique cible que vous avez indiquée précédemment. Dans cet exemple, attribuez la valeur 50 à la métrique cible AVERAGE_DB_CONNECTIONS.

Méthode HTTP et URL :

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

Corps JSON de la requête :

{
  "settings": {
    "readPoolAutoScaleConfig": {
      "enabled": true,
      "minNodeCount": MIN_NODE_COUNT,
      "maxNodeCount": MAX_NODE_COUNT,
      "scaleOutCooldownSeconds": COOLDOWN_SECONDS,
      "disableScaleIn": SCALE_IN_DISABLED,
      "targetMetrics": [
        {
          "metric": "TARGET_METRIC_1",
          "targetValue": VALUE_1
        }
      ]
    }
  }
}

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": "RUNNING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "2023-06-14T18:48:35.499Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

Pour activer l'autoscaling pour un pool de lecture existant, utilisez la méthode PATCH.

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

  • PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
  • INSTANCE_ID : ID de l'instance associée au pool de lecture.
  • MAX_NODE_COUNT : nombre maximal de nœuds du pool de lecture que vous souhaitez que le pool de lecture utilise, par exemple 10.
  • MIN_NODE_COUNT : nombre minimal de nœuds du pool de lecture que vous souhaitez que le pool de lecture utilise, par exemple 2.
  • COOLDOWN_SECONDS : facultatif : temps d'arrêt ou d'attente en secondes entre la création ou la suppression de nœuds de pool de lecture, par exemple 180.
  • SCALE_IN_DISABLED : (facultatif) vous permet de désactiver le comportement de réduction du pool de lecture. Pour désactiver la réduction du pool de lecture, définissez la valeur sur true.
  • TARGET_METRIC_1 : métrique cible que vous souhaitez utiliser, par exemple :
    • AVERAGE_CPU_UTILIZATION
    • AVERAGE_DB_CONNECTIONS
    Vous devez définir au moins l'une des deux métriques disponibles.
  • VALUE_1 : valeur que vous souhaitez attribuer à la métrique cible que vous avez indiquée précédemment. Dans cet exemple, attribuez la valeur 50 à la métrique cible AVERAGE_DB_CONNECTIONS.

Méthode HTTP et URL :

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

Corps JSON de la requête :

{
  "settings": {
    "readPoolAutoScaleConfig": {
      "enabled": true,
      "minNodeCount": MIN_NODE_COUNT,
      "maxNodeCount": MAX_NODE_COUNT,
      "scaleOutCooldownSeconds": COOLDOWN_SECONDS,
      "disableScaleIn": SCALE_IN_DISABLED,
      "targetMetrics": [
        {
          "metric": "TARGET_METRIC_1",
          "targetValue": VALUE_1
        }
      ]
    }
  }
}

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": "RUNNING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "2023-06-14T18:48:35.499Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Désactiver l'autoscaling du pool de lecture sur un pool de lecture

Pour désactiver l'autoscaling du pool de lecture, procédez comme suit :

gcloud

Pour désactiver l'autoscaling du pool de lecture, exécutez la commande suivante.

  gcloud sql instances patch INSTANCE_NAME
  --no-auto-scale-enabled
  

Remplacez les éléments suivants :

  • INSTANCE_NAME : nom de l'instance associée au pool de lecture que vous souhaitez modifier.

REST v1

Pour désactiver l'autoscaling du pool de lecture, utilisez la méthode PATCH.

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

  • PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
  • INSTANCE_ID : ID de l'instance associée au pool de lecture.

Méthode HTTP et URL :

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

Corps JSON de la requête :

{
  "settings":{
    "readPoolAutoScaleConfig":{
      "enabled": false
    }
  }
}

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": "RUNNING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "2023-06-14T18:48:35.499Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

Pour désactiver l'autoscaling du pool de lecture, utilisez la méthode PATCH.

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

  • PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
  • INSTANCE_ID : ID de l'instance associée au pool de lecture.

Méthode HTTP et URL :

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

Corps JSON de la requête :

{
  "settings":{
    "readPoolAutoScaleConfig":{
      "enabled": false
    }
  }
}

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": "RUNNING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "2023-06-14T18:48:35.499Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Afficher les métriques

Utilisez les insights système pour afficher les métriques pertinentes pour votre pool de lecture.

Pour AVERAGE_CPU_UTILIZATION, consultez le graphique de la métrique clé "Utilisation du processeur".

Pour AVERAGE_DB_CONNECTIONS, consultez le graphique de métrique clé Nombre total de connexions.

Surveiller les opérations d'autoscaling du pool de lecture

Lorsque les conditions sont remplies pour déclencher un événement d'autoscaling du pool de lecture, une opération UPDATE s'exécute sur l'instance. Vous pouvez afficher cette opération depuis la console Google Cloud .

Les opérations d'autoscaling des pools de lecture peuvent prendre 10 minutes ou plus pour s'appliquer à l'instance. Les connexions existantes ne seront pas transférées vers les nœuds de pool de lecture nouvellement ajoutés. Cela signifie que seul l'autoscaling du pool de lecture aura un impact sur les nouvelles connexions.

Pendant que l'opération d'autoscaling est en cours sur le pool de réplicas en lecture, vous devez attendre qu'elle se termine avant d'exécuter d'autres mises à jour sur le pool de réplicas en lecture ou sur l'instance principale. Si vous essayez d'exécuter des requêtes simultanées, vous pouvez recevoir le message d'erreur suivant :

  Operation failed because another operation was already in progress.
  

Vous pouvez inspecter votre instance de pool de lecture et constater que le nombre de nœuds a changé :

  gcloud sql instances describe READ_POOL_NAME
  | grep nodeCount
  

Remplacez les éléments suivants :

  • READ_POOL_NAME : nom du pool de lecture pour lequel vous souhaitez obtenir des informations.

Journaux d'audit des événements système

Vous pouvez également consulter le message du journal d'audit Événement système associé à la méthode cloudsql.instances.readPoolAutoScale, qui contient l'ancien et le nouveau nombre de nœuds.

Étapes suivantes