Activer et désactiver la haute disponibilité sur une instance

Cette page explique comment configurer une instance pour la haute disponibilité.

Vous pouvez configurer la haute disponibilité lors de la création d'une instance ou l'activer pour une instance existante.

Pour en savoir plus sur la haute disponibilité, consultez la page Présentation de la configuration de la haute disponibilité.

Créer une instance configurée pour la haute disponibilité

Lorsque vous créez une instance et que vous la configurez pour la haute disponibilité, Cloud SQL la crée en tant qu'instance régionale.

Pour créer une instance configurée pour la haute disponibilité, procédez comme suit :

Console

  1. Dans Google Cloud Console, accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Sélectionnez Créer une instance.
  3. Dans la section Choisir la disponibilité régionale et zonale, sélectionnez Zones multiples (disponibilité élevée).
  4. Développez Spécifier des zones.
  5. Sélectionnez la région ainsi que les zones principale et secondaire. Les conditions suivantes s'appliquent lorsque la zone secondaire est utilisée lors de la création ou de la modification de l'instance :
    • Les zones sont définies par défaut sur Any pour la zone principale et sur Any (different from primary) pour la zone secondaire.
    • Si les zones principale et secondaire sont spécifiées, elles doivent être distinctes l'une de l'autre.

  6. Cliquez sur Enregistrer.

    Vous êtes alors redirigé vers la page d'instance primaire lors de la mise à jour de l'instance.

gcloud

  1. Créez l'instance régionale :
    gcloud sql instances create REGIONAL_INSTANCE_NAME \
    --availability-type=REGIONAL \
    --database-version=SQLSERVER_2017_STANDARD \
    --cpu=NUMBER_CPUS \
    --memory=MEMORY_SIZE
    
  2. Configurez l'utilisateur root :
    gcloud sql users set-password root no-host \
    --instance=REGIONAL_INSTANCE_NAME \
    --password=PASSWORD
    
Pour obtenir la liste complète des paramètres disponibles, consultez la page de référence de la commande gcloud sql instances create.

REST v1

Pour obtenir la liste complète des paramètres pour cette requête, consultez la page instances:insert.

Créez l'instance régionale.

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

    • project-id : ID du projet
    • instance-name : nom de l'instance
    • database-version : chaîne d'énumération de la version de base de données
    • region : région GCP
    • machine-type : type de machine

    Méthode HTTP et URL :

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances

    Corps JSON de la requête :

    {
      "name": "instance-name",
      "region": "region",
      "databaseVersion": "database-version",
       "settings": {
         "tier": "machine-type",
         "backupConfiguration": {
             "enabled": true
          },
          "availabilityType": "REGIONAL"
       }
    }
    

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

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

  2. Une fois l'instance initialisée, mettez à jour le mot de passe racine sur l'instance :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • password : nouveau mot de passe de l'utilisateur racine

    Méthode HTTP et URL :

    PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users?host=%25&name=sqlserver'

    Corps JSON de la requête :

    {
       "name": "sqlserver",
       "host": "nohost",
       "password": "password"}
    

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

    Vous devriez recevoir un code d'état indiquant le succès de l'opération (2xx), ainsi qu'une réponse vide.

REST v1beta4

Pour obtenir la liste complète des paramètres pour cette requête, consultez la page instances:insert.

Créez l'instance régionale.

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

    • project-id : ID du projet
    • instance-name : nom de l'instance
    • database-version : chaîne d'énumération de la version de base de données
    • region : région GCP
    • machine-type : type de machine

    Méthode HTTP et URL :

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances

    Corps JSON de la requête :

    {
      "name": "instance-name",
      "region": "region",
      "databaseVersion": "database-version",
       "settings": {
         "tier": "machine-type",
         "backupConfiguration": {
             "enabled": true
          },
          "availabilityType": "REGIONAL"
       }
    }
    

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

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

  2. Une fois l'instance initialisée, mettez à jour le mot de passe racine sur l'instance :

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

    • project-id : ID du projet
    • instance-id : ID de l'instance
    • password : nouveau mot de passe de l'utilisateur racine

    Méthode HTTP et URL :

    PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?host=%25&name=sqlserver'

    Corps JSON de la requête :

    {
       "name": "sqlserver",
       "host": "nohost",
       "password": "password"}
    

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

    Vous devriez recevoir un code d'état indiquant le succès de l'opération (2xx), ainsi qu'une réponse vide.

Pour plus d'informations, consultez la section Créer des instances.

Configurer la haute disponibilité d'une instance existante

La configuration de la haute disponibilité pour une instance existante provoque quelques minutes d'indisponibilité pendant la reconfiguration.

Pour configurer la haute disponibilité pour une instance existante, procédez comme suit :

Console

  1. Dans Google Cloud Console, accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Cliquez sur le nom de l'instance pour ouvrir la page Présentation.
  3. Cliquez sur Modifier.
  4. Dans la section des options de configuration Sauvegardes automatiques et haute disponibilité, sélectionnez Haute disponibilité (régionale). Il est également recommandé d'activer l'option Automatiser les sauvegardes.
  5. Cliquez sur Enregistrer.

    Vous êtes alors redirigé vers la page d'instance primaire lors de la mise à jour de l'instance.

gcloud

Attribuez le type régional à l'instance :

gcloud sql instances patch INSTANCE_NAME \
--availability-type REGIONAL

Pour plus d'informations, consultez la page sur gcloud sql instances patch.

REST v1

Attribuez le type régional à l'instance :

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

  • project-id : ID du projet
  • instance-name : nom de l'instance

Méthode HTTP et URL :

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-name

Corps JSON de la requête :

{
  "settings": {"availabilityType": "REGIONAL" }
}

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

Vous devriez recevoir un code d'état indiquant le succès de l'opération (2xx), ainsi qu'une réponse vide.

REST v1beta4

Attribuez le type régional à l'instance :

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

  • project-id : ID du projet
  • instance-name : nom de l'instance

Méthode HTTP et URL :

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-name

Corps JSON de la requête :

{
  "settings": {"availabilityType": "REGIONAL" }
}

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

Vous devriez recevoir un code d'état indiquant le succès de l'opération (2xx), ainsi qu'une réponse vide.

Initier le basculement

Tester le basculement est facultatif, mais il est recommandé de comprendre comment votre application répond en cas de basculement.

Pour en savoir plus sur les basculements, consultez la présentation du basculement.

gcloud

Initiez le basculement comme suit :

gcloud sql instances failover PRIMARY_INSTANCE_NAME

REST v1

  1. Décrivez l'instance principale pour obtenir la valeur du champ settingsVersion.

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

    • project-id : ID du projet
    • instance-id : ID de l'instance.

    Méthode HTTP et URL :

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

    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": "SQLSERVER_2019_STANDARD",
      "settings": {
        "authorizedGaeApplications": [],
        "tier": "db-f1-micro",
        "kind": "sql#settings",
        "pricingPlan": "PER_USE",
        "replicationType": "SYNCHRONOUS",
        "activationPolicy": "ALWAYS",
        "ipConfiguration": {
          "authorizedNetworks": [],
          "ipv4Enabled": true
        },
        "locationPreference": {
          "zone": "asia-east1-a",
          "kind": "sql#locationPreference"
        },
        "SqlScheduledMaintenance":{
          "startTime": "2021-10-02T15:01:23Z",
          "canDefer": true,
          "canReschedule": true,
          "scheduleDeadlineTime": "2021-10-02T15:01:23Z"
        },
        "dataDiskType": "PD_SSD",
        "backupConfiguration": {
          "startTime": "08:00",
          "kind": "sql#backupConfiguration",
          "enabled": true,
          "binaryLogEnabled": true
        },
        "settingsVersion": "13",
        "storageAutoResizeLimit": "0",
        "storageAutoResize": true,
        "dataDiskSizeGb": "10"
      },
      "etag": "etag-id",
      "ipAddresses": [
        {
          "type": "PRIMARY",
          "ipAddress": "10.0.0.1"
        }
      ],
      "serverCaCert": {
        "kind": "sql#sslCert",
        "certSerialNumber": "0",
        "cert": "certificate-id",
        "commonName": "C=US,O=Google\\, Inc,CN=Google Cloud SQL Server CA,dnQualifier=dn-qualifier-id",
        "sha1Fingerprint": "sha-id",
        "instance": "instance-id",
        "createTime": "2019-06-28T22:46:35.052Z",
        "expirationTime": "2029-06-25T22:47:35.052Z"
      },
      "instanceType": "CLOUD_SQL_INSTANCE",
      "project": "project-id",
      "serviceAccountEmailAddress": "service-acct-id@gcp-sa-cloud-sql.iam.gserviceaccount.com",
      "backendType": "SECOND_GEN",
      "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
      "connectionName": "project-id:region:instance-id",
      "name": "instance-id",
      "region": "asia-east1",
      "gceZone": "asia-east1-a"
    }
    
  2. Initiez le basculement comme suit :

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

    • project-id : ID du projet
    • instance-name : nom de l'instance
    • settings-version : valeur settingsVersion de instanceInfo

    Méthode HTTP et URL :

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-name/failover

    Corps JSON de la requête :

    {
      "failoverContext":
         {
            "settingsVersion":"settings-version"
         }
    }
    

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

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

REST v1beta4

  1. Décrivez l'instance principale pour obtenir la valeur du champ settingsVersion.

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

    • project-id : ID du projet
    • instance-id : ID de l'instance.

    Méthode HTTP et URL :

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

    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": "SQLSERVER_2019_STANDARD",
      "settings": {
        "authorizedGaeApplications": [],
        "tier": "db-f1-micro",
        "kind": "sql#settings",
        "pricingPlan": "PER_USE",
        "replicationType": "SYNCHRONOUS",
        "activationPolicy": "ALWAYS",
        "ipConfiguration": {
          "authorizedNetworks": [],
          "ipv4Enabled": true
        },
        "locationPreference": {
          "zone": "asia-east1-a",
          "kind": "sql#locationPreference"
        },
        "SqlScheduledMaintenance":{
          "startTime": "2021-10-02T15:01:23Z",
          "canDefer": true,
          "canReschedule": true,
          "scheduleDeadlineTime": "2021-10-02T15:01:23Z"
        },
        "dataDiskType": "PD_SSD",
        "backupConfiguration": {
          "startTime": "08:00",
          "kind": "sql#backupConfiguration",
          "enabled": true,
          "binaryLogEnabled": true
        },
        "settingsVersion": "13",
        "storageAutoResizeLimit": "0",
        "storageAutoResize": true,
        "dataDiskSizeGb": "10"
      },
      "etag": "etag-id",
      "ipAddresses": [
        {
          "type": "PRIMARY",
          "ipAddress": "10.0.0.1"
        }
      ],
      "serverCaCert": {
        "kind": "sql#sslCert",
        "certSerialNumber": "0",
        "cert": "certificate-id",
        "commonName": "C=US,O=Google\\, Inc,CN=Google Cloud SQL Server CA,dnQualifier=dn-qualifier-id",
        "sha1Fingerprint": "sha-id",
        "instance": "instance-id",
        "createTime": "2019-06-28T22:46:35.052Z",
        "expirationTime": "2029-06-25T22:47:35.052Z"
      },
      "instanceType": "CLOUD_SQL_INSTANCE",
      "project": "project-id",
      "serviceAccountEmailAddress": "service-acct-id@gcp-sa-cloud-sql.iam.gserviceaccount.com",
      "backendType": "SECOND_GEN",
      "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
      "connectionName": "project-id:region:instance-id",
      "name": "instance-id",
      "region": "asia-east1",
      "gceZone": "asia-east1-a"
    }
    
  2. Initiez le basculement comme suit :

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

    • project-id : ID du projet
    • instance-name : nom de l'instance
    • settings-version : valeur settingsVersion de instanceInfo

    Méthode HTTP et URL :

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-name/failover

    Corps JSON de la requête :

    {
      "failoverContext":
         {
            "settingsVersion":"settings-version"
         }
    }
    

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

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

Lors de ce processus de quelques minutes, l'instance n'est plus disponible.

Vérifier la haute disponibilité d'une instance

Pour vérifier qu'une instance est configurée pour la haute disponibilité, procédez comme suit :

Console

  1. Dans Google Cloud Console, accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Cliquez sur le nom de l'instance pour ouvrir la page Présentation.
  3. Dans la section Configuration, la mention Disponibilité élevée (régional) s'affiche.

gcloud

gcloud sql instances describe INSTANCE_NAME
Le résultat indique que la valeur de availabilityType est définie sur REGIONAL.

REST v1

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

  • project-id : ID du projet
  • instance-id : ID de l'instance.

Méthode HTTP et URL :

GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

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": "SQLSERVER_2019_STANDARD",
  "settings": {
    "authorizedGaeApplications": [],
    "tier": "db-f1-micro",
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "activationPolicy": "ALWAYS",
    "ipConfiguration": {
      "authorizedNetworks": [],
      "ipv4Enabled": true
    },
    "locationPreference": {
      "zone": "asia-east1-a",
      "kind": "sql#locationPreference"
    },
    "dataDiskType": "PD_SSD",
    "backupConfiguration": {
      "startTime": "08:00",
      "kind": "sql#backupConfiguration",
      "enabled": true,
    },
    "settingsVersion": "13",
    "storageAutoResizeLimit": "0",
    "storageAutoResize": true,
    "dataDiskSizeGb": "10"
  },
  "etag": "etag-id",
  "ipAddresses": [
    {
      "type": "PRIMARY",
      "ipAddress": "10.0.0.1"
    }
  ],
  "serverCaCert": {
    "kind": "sql#sslCert",
    "certSerialNumber": "0",
    "cert": "certificate-id",
    "commonName": "C=US,O=Google\\, Inc,CN=Google Cloud SQL Server CA,dnQualifier=dn-qualifier-id",
    "sha1Fingerprint": "sha-id",
    "instance": "instance-id",
    "createTime": "2019-06-28T22:46:35.052Z",
    "expirationTime": "2029-06-25T22:47:35.052Z"
  },
  "instanceType": "CLOUD_SQL_INSTANCE",
  "project": "project-id",
  "serviceAccountEmailAddress": "service-acct-id@gcp-sa-cloud-sql.iam.gserviceaccount.com",
  "backendType": "SECOND_GEN",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "connectionName": "project-id:region:instance-id",
  "name": "instance-id",
  "region": "asia-east1",
  "gceZone": "asia-east1-a"
}

Le résultat indique que la valeur de availabilityType est définie sur REGIONAL.

REST v1beta4

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

  • project-id : ID du projet
  • instance-id : ID de l'instance.

Méthode HTTP et URL :

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

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": "SQLSERVER_2017_STANDARD",
  "settings": {
    "authorizedGaeApplications": [],
    "tier": "db-f1-micro",
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "activationPolicy": "ALWAYS",
    "ipConfiguration": {
      "authorizedNetworks": [],
      "ipv4Enabled": true
    },
    "locationPreference": {
      "zone": "asia-east1-a",
      "kind": "sql#locationPreference"
    },
    "dataDiskType": "PD_SSD",
    "backupConfiguration": {
      "startTime": "08:00",
      "kind": "sql#backupConfiguration",
      "enabled": true,
    },
    "settingsVersion": "13",
    "storageAutoResizeLimit": "0",
    "storageAutoResize": true,
    "dataDiskSizeGb": "10"
  },
  "etag": "etag-id",
  "ipAddresses": [
    {
      "type": "PRIMARY",
      "ipAddress": "10.0.0.1"
    }
  ],
  "serverCaCert": {
    "kind": "sql#sslCert",
    "certSerialNumber": "0",
    "cert": "certificate-id",
    "commonName": "C=US,O=Google\\, Inc,CN=Google Cloud SQL Server CA,dnQualifier=dn-qualifier-id",
    "sha1Fingerprint": "sha-id",
    "instance": "instance-id",
    "createTime": "2019-06-28T22:46:35.052Z",
    "expirationTime": "2029-06-25T22:47:35.052Z"
  },
  "instanceType": "CLOUD_SQL_INSTANCE",
  "project": "project-id",
  "serviceAccountEmailAddress": "service-acct-id@gcp-sa-cloud-sql.iam.gserviceaccount.com",
  "backendType": "SECOND_GEN",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "connectionName": "project-id:region:instance-id",
  "name": "instance-id",
  "region": "asia-east1",
  "gceZone": "asia-east1-a"
}

Le résultat indique que la valeur de availabilityType est définie sur REGIONAL.

Désactiver la haute disponibilité sur une instance

Avant de suivre cette procédure, assurez-vous qu'aucune opération n'est en cours d'exécution sur l'instance.

Pour désactiver la haute disponibilité, procédez comme suit :

Console

  1. Dans Google Cloud Console, accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Cliquez sur le nom de l'instance pour ouvrir la page Présentation.
  3. Cliquez sur Modifier.
  4. Cliquez sur Sauvegardes automatiques.
  5. Dans la section Disponibilité, cliquez sur Zone unique.
  6. Cliquez sur Enregistrer. Cette modification nécessite un redémarrage de l'instance.
  7. Lorsque vous voyez la boîte de dialogue, cliquez sur Enregistrer et redémarrer.

gcloud

Pour plus d'informations, consultez la page sur gcloud sql instances patch.
gcloud sql instances patch INSTANCE_NAME \
--availability-type ZONAL

REST v1

La requête suivante exécute la méthode instances:patch pour redéfinir le type de disponibilité de l'instance sur "ZONAL".

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

  • project-id : ID du projet
  • instance-name : nom de l'instance

Méthode HTTP et URL :

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-name

Corps JSON de la requête :

{
  "settings": {"availabilityType": "ZONAL" }
}

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

Vous devriez recevoir un code d'état indiquant le succès de l'opération (2xx), ainsi qu'une réponse vide.

REST v1beta4

La requête suivante exécute la méthode instances:patch pour redéfinir le type de disponibilité de l'instance sur "ZONAL".

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

  • project-id : ID du projet
  • instance-name : nom de l'instance

Méthode HTTP et URL :

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-name

Corps JSON de la requête :

{
  "settings": {"availabilityType": "ZONAL" }
}

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

Vous devriez recevoir un code d'état indiquant le succès de l'opération (2xx), ainsi qu'une réponse vide.

Dépannage

Problème Dépannage
Vous ne trouvez pas les métriques d'un basculement manuel. Seuls les basculements automatiques sont pris en compte dans les métriques.
L'utilisation des ressources d'instance Cloud SQL (processeur et mémoire RAM) arrive bientôt à 100 %, ce qui entraîne l'arrêt de l'instance à haute disponibilité. La taille de la machine de l'instance est insuffisante pour la charge.

Modifiez l'instance en augmentant la taille de la machine afin d'obtenir plus de processeurs et de mémoire.

Étape suivante