Ancienne configuration de haute disponibilité

Cette page décrit l'ancienne configuration d'une instance MySQL pour la haute disponibilité (HA).

Dans une ancienne configuration de la haute disponibilité, une instance Cloud SQL pour MySQL utilise une instance dupliquée de basculement pour ajouter la haute disponibilité à l'instance. Cette fonctionnalité n'est pas disponible dans la console Google Cloud. La configuration recommandée n'utilise pas ces instances dupliquées de basculement. mais les disques persistants régionaux de Google, qui répliquent les données au niveau du bloc de manière synchrone entre deux zones d'une région.

Pour plus d'informations sur la configuration actuelle de haute disponibilité, consultez la section Présentation de la configuration de la haute disponibilité.

Mettre à jour l'ancienne version de haute disponibilité d'une instance vers la version actuelle

Pour mettre à jour votre instance de l'ancienne configuration vers la nouvelle configuration de haute disponibilité, procédez comme suit :

  1. Supprimez l'instance dupliquée de basculement sur les instances MySQL que vous souhaitez mettre à jour. Pour en savoir plus, consultez Désactiver la haute disponibilité sur une instance.
  2. Configurez l'instance pour utiliser la version actuelle de la haute disponibilité. Pour en savoir plus, consultez Configurer la haute disponibilité d'une instance existante.

Ancienne configuration : Créer une instance configurée pour la haute disponibilité

Lorsque vous créez une instance, vous pouvez la configurer pour la haute disponibilité. Cloud SQL crée l'instance dupliquée de basculement en même temps que l'instance principale. L'ancienne fonctionnalité n'est pas disponible dans la console Google Cloud. À la place, utilisez les commandes gcloud CLI ou cURL.

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

gcloud

  1. Créez l'instance principale et son instance dupliquée de basculement comme suit :
    gcloud sql instances create PRIMARY_INSTANCE_NAME \
    --backup-start-time=BACKUP_WINDOW_START_TIME \
    --failover-replica-name=FAILOVER_REPLICA_NAME \
    --cpu=CPU \
    --database-version=DATABASE_VERSION \
    --memory=MEMORY \
    --enable-bin-log

    L'heure de début de l'intervalle de sauvegarde est au format HH:MM.

    Veillez à remplacer l'espace réservé DATABASE_VERSION par MySQL 5.6 ou MySQL 5.7 (--database-version=MYSQL_5_6 ou
    --database-version=MYSQL_5_7).

    Si vous ne spécifiez pas de version pour le paramètre database-version, MySQL 8.0 est sélectionné par défaut. L'ancienne configuration de la haute disponibilité pour MySQL n'est pas compatible avec la version 8.0.

    Pour obtenir la liste complète des paramètres disponibles, consultez la page de référence Créer des instances gcloud sql.

  2. Configurez l'utilisateur racine sur l'instance principale :
    gcloud sql users set-password root --host=% \
    --instance PRIMARY_INSTANCE_NAME \
    --password PASSWORD

    L'instance dupliquée de basculement est créée avec le même processeur et la même quantité de mémoire que l'instance principale. Vous pouvez modifier le processeur et la quantité de mémoire de l'instance dupliquée de basculement ultérieurement, mais sa taille doit être au moins égale à celle de l'instance principale.

curl

  1. Créez l'instance principale et son instance dupliquée de basculement comme suit :
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"name":"PRIMARY_INSTANCE_NAME", "region":"REGION",
                  "settings": {
                               "tier":"MACHINE_TYPE",
                               "backupConfiguration": {"binaryLogEnabled": true, "enabled": true}},
                               "failoverReplica": {"name": "FAILOVER_REPLICA_NAME"}}' \
         -X POST \
         https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances
    Pour obtenir la liste complète des paramètres pour cette requête, consultez la page instances:insert.
  2. Une fois l'instance principale initialisée, mettez à jour son mot de passe racine comme suit :
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"name": "root", "host": "%", "password": "ROOT_PASSWORD"}' \
         'https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_NAME/users?host=%25&name=root'
    Cette modification est automatiquement appliquée à l'instance dupliquée.

Ancienne configuration : 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 :

gcloud

  1. Vérifiez l'état de l'instance principale :
    gcloud sql instances describe PRIMARY_INSTANCE_NAME

    Si la propriété databaseReplicationEnabled est définie sur true, l'instance est dupliquée. Notez que vous ne pouvez pas créer d'instance dupliquée de basculement pour une instance dupliquée.

  2. Si la propriété enabled sous backupConfiguration est définie sur false, activez maintenant les sauvegardes pour l'instance principale :
    gcloud sql instances patch PRIMARY_INSTANCE_NAME \
    --backup-start-time HH:MM

    Le paramètre backup-start-time est indiqué au format 24 heures dans le fuseau horaire UTC±00 et spécifie le début d'un intervalle de sauvegarde de quatre heures. Les sauvegardes peuvent commencer à tout moment pendant l'intervalle de sauvegarde.

  3. Si la propriété binaryLogEnabled est définie sur false, activez les journaux binaires :
    gcloud sql instances patch PRIMARY_INSTANCE_NAME \
    --enable-bin-log

    L'activation des journaux binaires entraîne le redémarrage de l'instance.

  4. Créez l'instance dupliquée :
    gcloud sql instances create FAILOVER_REPLICA_NAME \
    --master-instance-name=PRIMARY_INSTANCE_NAME \
    --replica-type=FAILOVER

curl

  1. Vérifiez l'état de l'instance principale :
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         -X GET \
         https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/PRIMARY_INSTANCE_NAME?fields=settings

    La sortie contient la valeur backupConfiguration, par exemple :

    "backupConfiguration": {
        "kind": "sql#backupConfiguration",
        "startTime": "12:00",
        "enabled": true,
        "binaryLogEnabled": true
    }
    
  2. Si l'élément enabled ou binaryLogEnabled est défini sur false, utilisez la méthode patch de la ressource des instances pour les activer tous les deux. Spécifiez les propriétés de la configuration de sauvegarde que vous souhaitez conserver telles quelles et celles que vous souhaitez modifier.

    Pour activer les sauvegardes, définissez enabled sur true et startTime sur une valeur correspondant au début de l'intervalle de sauvegarde. Pour activer la journalisation binaire, définissez binaryLogEnabled sur true.

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"settings" : {"backupConfiguration" : {"startTime": "HH:MM", "enabled": true, "binaryLogEnabled": true}}}' \
         -X PATCH \
         https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/PRIMARY_INSTANCE_NAME/
  3. Utilisez la méthode insert de la ressource d'instances pour créer l'instance dupliquée de basculement.

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"name": "REPLICA_NAME", "masterInstanceName": "PRIMARY_INSTANCE_NAME",
                  "region": "PRIMARY_IMSTANCE_REGION", "databaseVersion": "PRIMARY_DATABASE_VERSION",
                  "replicaConfiguration": {"failoverTarget": true},
                  "settings": {"tier":"MACHINE_TYPE"}}' \
         -X POST \
         https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances

    MACHINE_TYPE doit être d'une taille au moins égale au type de machine de l'instance principale.

Lancer 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

curl

  1. Décrivez l'instance primaire pour obtenir la valeur du champ settingsVersion.
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         -X GET \
         https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/PRIMARY_INSTANCE_NAME
  2. Initiez le basculement comme suit :
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"failoverContext":{"settingsVersion":"SETTINGS_VERSION"}}' \
         -X POST \
         https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/PRIMARY_INSTANCE_NAME/failover

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

Ancienne configuration : Créer une alerte pour le délai de duplication

Le temps requis pour une opération de basculement dépend du délai de réplication lorsque le basculement est initié. Vous pouvez utiliser Cloud Monitoring dans la console Google Cloud pour vous avertir lorsque le délai de duplication dépasse un certain seuil.

Pour plus d'informations sur le délai de duplication, recherchez "seconds_behind_master" sur la page Syntaxe SHOW SLAVE STATUS de la documentation MySQL.

Pour en savoir plus sur Cloud Monitoring, consultez la documentation Cloud Monitoring.

Ancienne configuration : Définir une alerte pour une instance dupliquée de basculement spécifique

  1. Dans le panneau de navigation de la console Google Cloud, sélectionnez Monitoring, puis  Alertes.
  2. Cliquez sur Créer une règle d'alerte.
  3. Saisissez un nom descriptif pour votre alerte.
  4. Sélectionnez Seuil de métriques et cliquez sur Suivant pour ouvrir l'onglet "Cible".
  5. Pour Type de ressource, sélectionnez Cloud SQL.
  6. Pour S'applique à, sélectionnez Unique, puis sélectionnez votre instance dupliquée de basculement.
  7. Cliquez sur Suivant pour ouvrir l'onglet "Configuration".
  8. Saisissez les valeurs suivantes :

    Champ Valeur
    Si métrique Secondes de retard sur le maître
    Condition au-dessus
    Seuils 120 (ou toute valeur appropriée pour votre environnement)
    Durée 3 minutes

  9. Sélectionnez les méthodes de notification souhaitées, puis cliquez sur Enregistrer la condition.

Ancienne configuration : Définir une alerte pour un groupe d'instances dupliquées de basculement

Si vous prévoyez de créer plusieurs instances dupliquées de basculement dans le même projet, il sera plus facile de définir l'alerte pour l'ensemble du groupe plutôt que sur chaque instance dupliquée de basculement individuellement. Pour créer un groupe à surveiller, utilisez un suffixe pour les noms d'instances dupliquées de basculement, tel que "-basculement". Assurez-vous de ne pas utiliser ce suffixe pour d'autres types d'instances Cloud SQL.

Créez votre groupe d'instances de basculement comme suit :

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

    Accéder à Monitoring

  2. Dans la barre de menu supérieure, sélectionnez Groupes > Créer.
  3. Entrez un nom descriptif pour votre groupe.
  4. Gardez la sélection Nom et Contient et saisissez le nom de la sous-chaîne.
  5. Cliquez sur Enregistrer le groupe. La page récapitulative du nouveau groupe s'ouvre.
  6. Confirmez l'inclusion des instances attendues dans le groupe.

Créez l'alerte pour le groupe d'instances dupliquées de basculement comme suit :

  1. Dans le panneau de navigation de la console Google Cloud, sélectionnez Monitoring, puis  Alertes.
  2. Cliquez sur Créer une règle d'alerte.
  3. Saisissez un nom descriptif pour votre alerte de groupe.
  4. Sélectionnez Seuil de métriques et cliquez sur Suivant pour ouvrir l'onglet "Cible".
  5. Pour Type de ressource, sélectionnez Cloud SQL.
  6. Pour S'applique à, sélectionnez Groupe, puis sélectionnez votre groupe de basculement.
  7. Gardez la sélection Non-respect de la stratégie par un des membres et cliquez sur Suivant pour ouvrir l'onglet "Configuration".
  8. Saisissez les valeurs suivantes :

    Champ Valeur
    Si métrique Secondes de retard sur le maître
    Condition au-dessus
    Seuils 120 (ou toute valeur appropriée pour votre environnement)
    Durée 3 minutes

  9. Sélectionnez les méthodes de notification souhaitées, puis cliquez sur Enregistrer la condition.

Ancienne configuration : Désactiver la haute disponibilité sur une instance

Vous devez supprimer l'instance dupliquée de basculement pour désactiver la haute disponibilité de l'instance principale.

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

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

Console

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

    Accéder à la page Instances Cloud SQL

  2. Sélectionnez l'instance de basculement associée à l'instance pour laquelle vous souhaitez désactiver la haute disponibilité.
  3. Sur la page des Détails de l'instance, cliquez sur Supprimer.
  4. Dans la fenêtre Supprimer l'instance dupliquée, retapez le nom de l'instance de basculement.
  5. Cliquez sur Supprimer. La configuration de l'instance d'origine devient zonale.

gcloud

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

curl

La requête suivante exécute la méthode instances:delete pour supprimer l'instance.
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json'\
      -X DELETE\
https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_NAME

Étape suivante