Gérer des instances dupliquées avec accès en lecture

Cette page vous explique comment gérer les instances dupliquées avec accès en lecture. Ces opérations incluent la désactivation et l'activation de la réplication, la promotion d'une instance dupliquée, la configuration de la réplication parallèle et la vérification de l'état de réplication.

Pour en savoir plus sur le fonctionnement de la réplication, consultez la page Réplication dans Cloud SQL.

Cette page s'applique aux instances dupliquées d'une instance Cloud SQL. Pour configurer une instance Cloud SQL qui agira en tant qu'éditeur pour un abonné externe, consultez la section Configurer des instances dupliquées externes.

Désactiver la duplication

La réplication est activée par défaut au démarrage d'une instance dupliquée. Toutefois, vous avez la possibilité de désactiver la réplication, par exemple à des fins de débogage ou d'analyse de l'état d'une instance. Lorsque vous êtes prêt, vous pouvez la réactiver de façon explicite. La désactivation ou la réactivation de la réplication ne redémarre pas l'instance dupliquée.

La désactivation de la réplication n'arrête pas l'instance dupliquée. Celle-ci devient une instance avec accès en lecture seule qui ne réplique plus son instance maître. Les frais liés à l'instance continuent de vous être facturés. Sur l'instance dupliquée, vous pouvez réactiver la réplication, la supprimer, ou la promouvoir en instance autonome.

Pour désactiver la réplication, 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 une instance dupliquée en cliquant sur son nom.
  3. Cliquez sur Désactiver la duplication dans la barre de boutons.
  4. Cliquez sur OK.

gcloud

gcloud sql instances patch REPLICA_NAME \
--no-enable-database-replication

REST v1

Pour exécuter cette commande cURL dans une invite de ligne de commande, vous devez obtenir un jeton d'accès à l'aide de la commande gcloud auth print-access-token. Vous pouvez également utiliser APIs Explorer sur la page dédiée à la méthode "instances.patch" pour envoyer la requête d'API REST.

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

  • project-id : ID du projet
  • replica-name : nom de l'instance dupliquée

Méthode HTTP et URL :

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

Corps JSON de la requête :

{
  "settings":
  {
    "databaseReplicationEnabled": "False"
  }
}

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

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

REST v1beta4

Pour exécuter cette commande cURL dans une invite de ligne de commande, vous devez obtenir un jeton d'accès à l'aide de la commande gcloud auth print-access-token. Vous pouvez également utiliser APIs Explorer sur la page dédiée à la méthode "instances.patch" pour envoyer la requête d'API REST.

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

  • project-id : ID du projet
  • replica-name : nom de l'instance dupliquée

Méthode HTTP et URL :

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

Corps JSON de la requête :

{
  "settings":
  {
    "databaseReplicationEnabled": "False"
  }
}

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

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

Activer la duplication

Lorsqu'une instance dupliquée ne réplique aucune donnée pendant une longue période, il lui faut plus de temps pour rattraper l'instance maître. Dans ce cas, supprimez l'instance dupliquée et créez-en une autre.

Pour activer la réplication, 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 une instance dupliquée en cliquant sur son nom.
  3. Cliquez sur Activer la duplication.
  4. Cliquez sur OK.

gcloud

gcloud sql instances patch REPLICA_NAME \
--enable-database-replication

REST v1

Pour exécuter cette commande cURL dans une invite de ligne de commande, vous devez obtenir un jeton d'accès à l'aide de la commande gcloud auth print-access-token. Vous pouvez également utiliser APIs Explorer sur la page dédiée à la méthode "instances.patch" pour envoyer la requête d'API REST.

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

  • project-id : ID du projet
  • replica-name : nom de l'instance dupliquée

Méthode HTTP et URL :

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

Corps JSON de la requête :

{
  "settings":
  {
    "databaseReplicationEnabled": "True"
  }
}

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

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

REST v1beta4

Pour exécuter cette commande cURL dans une invite de ligne de commande, vous devez obtenir un jeton d'accès à l'aide de la commande gcloud auth print-access-token. Vous pouvez également utiliser APIs Explorer sur la page dédiée à la méthode "instances.patch" pour envoyer la requête d'API REST.

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

  • project-id : ID du projet
  • replica-name : nom de l'instance dupliquée

Méthode HTTP et URL :

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

Corps JSON de la requête :

{
  "settings":
  {
    "databaseReplicationEnabled": "True"
  }
}

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

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

Promouvoir une instance dupliquée

La promotion d'une instance dupliquée avec accès en lecture entraîne l'arrêt de la réplication et la transformation de l'instance en instance principale Cloud SQL autonome avec accès en lecture et écriture.

Lorsque elles sont promues, les instances dupliquées avec accès en lecture sont automatiquement configurées avec des sauvegardes, mais elles ne sont pas configurées en tant qu'instances à haute disponibilité. Vous pouvez activer la haute disponibilité après leur promotion, comme vous le feriez avec n'importe quelle instance non répliquée. La configuration d'une instance dupliquée avec accès en lecture pour la haute disponibilité s'effectue de la même manière que pour une instance principale. Découvrez comment configurer l'instance pour la haute disponibilité.

Si l'instance principale est toujours disponible et traite les requêtes des clients, vous devez effectuer les opérations suivantes avant de promouvoir une instance dupliquée avec accès en lecture :

  1. Arrêtez toutes les opérations en écriture sur l'instance principale.
  2. Vérifiez l'état de duplication de l'instance dupliquée. Pour ce faire, vous pouvez utiliser le tableau de bord de groupe de disponibilité permanente Always On dans SQL Server Management Studio (SSMS).
  3. Assurez-vous que l'instance dupliquée est en cours de réplication, puis vérifiez le délai de réplication, par exemple celui indiqué par la métrique seconds_behind_master.

Sinon, il est possible que certaines des transactions validées sur l'instance principale soient manquantes dans l'instance nouvellement promue.

Pour promouvoir une instance dupliquée en instance autonome, 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 une instance dupliquée en cliquant sur son nom.
  3. Cliquez sur Promouvoir une instance dupliquée.
  4. Cliquez sur OK.

gcloud

gcloud sql instances promote-replica REPLICA_NAME
  

REST v1

Pour exécuter cette commande cURL dans une invite de ligne de commande, vous devez obtenir un jeton d'accès à l'aide de la commande gcloud auth print-access-token. Vous pouvez également utiliser APIs Explorer sur la page dédiée à la méthode "instances.promoteReplica" pour envoyer la requête d'API REST.

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

  • project-id : ID du projet
  • replica-name : nom de l'instance dupliquée

Méthode HTTP et URL :

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

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

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

REST v1beta4

Pour exécuter cette commande cURL dans une invite de ligne de commande, vous devez obtenir un jeton d'accès à l'aide de la commande gcloud auth print-access-token. Vous pouvez également utiliser APIs Explorer sur la page dédiée à la méthode "instances.promoteReplica" pour envoyer la requête d'API REST.

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

  • project-id : ID du projet
  • replica-name : nom de l'instance dupliquée

Méthode HTTP et URL :

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

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

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

Vérifiez que l'instance promue est configurée correctement. Envisagez en particulier de configurer la haute disponibilité de l'instance si nécessaire.

Vérifier l'état de la duplication

Actuellement, vous devez utiliser des requêtes T-SQL ou SSMS pour surveiller l'état de la réplication. Pour en savoir plus, consultez les ressources suivantes :

Résoudre les problèmes

Problème Dépannage
L'instance répliquée avec accès en lecture n'a pas commencé à se répliquer lors de la création. Les fichiers journaux indiquent probablement une erreur plus spécifique. Inspectez les journaux dans Cloud Logging pour rechercher l'erreur en question.
Impossible de créer l'instance dupliquée avec accès en lecture : erreur invalidFlagValue. L'un des indicateurs de la requête n'est pas valide. Il peut s'agir d'une option que vous avez explicitement définie ou d'une option définie sur une valeur par défaut.

Tout d'abord, vérifiez que la valeur de l'option max_connections est supérieure ou égale à la valeur principale.

Si l'option max_connections est définie correctement, inspectez les journaux dans Cloud Logging pour rechercher l'erreur réelle.

Impossible de créer l'instance dupliquée avec accès en lecture : erreur inconnue. Les fichiers journaux indiquent probablement une erreur plus spécifique. Inspectez les journaux dans Cloud Logging pour rechercher l'erreur en question.

Si l'erreur est : set Service Networking service account as servicenetworking.serviceAgent role on consumer project, désactivez et réactivez Service Networking API. Cette action crée le compte de service nécessaire pour poursuivre le processus.

Le disque est saturé. Le disque de l'instance principale peut arriver à saturation lors de la création de l'instance dupliquée. Modifiez l'instance principale en augmentant la taille du disque.
L'instance dupliquée utilise trop de mémoire. L'instance dupliquée met en cache les opérations de lecture souvent demandées dans une mémoire temporaire, ce qui peut l'amener à utiliser plus de mémoire que l'instance principale.

Redémarrez l'instance dupliquée afin de récupérer l'espace de mémoire temporaire.

La duplication s'est arrêtée. La limite de stockage maximale a été atteinte et l'augmentation automatique de l'espace de stockage n'est pas activée.

Modifiez l'instance pour activer automatic storage increase.

Le délai de duplication est systématiquement long. La charge d'écriture est trop élevée pour que l'instance dupliquée puisse la traiter. Le délai de duplication s'allonge lorsque le thread SQL d'une instance dupliquée ne parvient pas à suivre le thread d'E/S. Certains types de requêtes ou de charges de travail peuvent allonger le délai de duplication de manière temporaire ou permanente pour un schéma donné. Voici quelques causes typiques affectant le délai de duplication :
  • Requêtes lentes sur l'instance dupliquée. Recherchez-les et corrigez-les.
  • Les requêtes telles que DELETE ... WHERE field < 50000000 allongent le délai de duplication, dans le cas des duplications basées sur les lignes, car un grand nombre de mises à jour s'accumulent sur l'instance dupliquée.

Voici quelques solutions possibles :

  • Modifiez l'instance pour augmenter la taille de l'instance dupliquée.
  • Réduisez la charge sur la base de données.
  • Envoyez du trafic en lecture à l'instance dupliquée avec accès en lecture.
  • Indexez les tables.
  • Identifiez et corrigez les requêtes d'écriture lentes.
  • Recréez l'instance dupliquée.
La création d'une instance dupliquée échoue avec un délai d'expiration. Les transactions non validées de longue durée sur l'instance principale peuvent entraîner l'échec de la création d'une instance dupliquée avec accès en lecture.

Recréez l'instance dupliquée après avoir arrêté toutes les requêtes en cours d'exécution.

Étape suivante