Cette page vous explique comment créer une instance dupliquée avec accès en lecture pour une instance Cloud SQL.
Une instance dupliquée avec accès en lecture est une copie de l'instance principale qui reflète quasiment en temps réel les modifications apportées à l'instance principale, dans des circonstances normales. Vous pouvez utiliser une instance dupliquée avec accès en lecture pour décharger l'instance principale des requêtes de lecture ou du trafic d'analyse.
En outre, pour la reprise après sinistre, vous pouvez procéder à une migration régionale. Si une instance dupliquée est une Instance dupliquée interrégionale, vous pouvez effectuer un basculement vers une autre région. Plus précisément, vous pouvez promouvoir une instance dupliquée en instance autonome (dans ce cas, les instances dupliquées existantes ne considéreront pas cette instance comme principale).
Pour en savoir plus sur le fonctionnement de la réplication, consultez la page Réplication dans Cloud SQL.
Avant de commencer
Si vous créez la première instance dupliquée pour cette instance, assurez-vous qu'elle répond aux exigences des instances principales. En savoir plus
Créer une instance dupliquée avec accès en lecture
La procédure de création d'une instance dupliquée avec accès en lecture est décrite ci-dessous.
Console
-
Dans Google Cloud Console, accédez à la page Instances Cloud SQL.
- Recherchez l'instance pour laquelle vous souhaitez créer une instance répliquée, puis ouvrez le menu
more actions
tout à droite de la liste. - Sélectionnez Créer une instance dupliquée avec accès en lecture.
Si cette option ne s'affiche pas, cela signifie que l'instance a déjà été répliquée. Vous ne pouvez pas répliquer une instance qui l'est déjà.
Dans la section Personnaliser votre instance de la page, mettez à jour les paramètres de votre instance répliquée. Commencez par cliquer sur Afficher les options de configuration pour afficher les groupes de paramètres. Développez ensuite les groupes souhaités pour examiner et personnaliser les paramètres. Un résumé de toutes les options sélectionnées s'affiche à droite. La personnalisation de ces paramètres est facultative. Des valeurs par défaut sont attribuées chaque fois qu'aucune personnalisation n'est effectuée.
Pour en savoir plus sur chaque paramètre, consultez la page Paramètres des instances.
Par exemple, pour autoriser d'autres services Google Cloud, tels que BigQuery, à accéder aux données dans Cloud SQL et à exécuter des requêtes sur ces données via une connexion privée, développez le groupe Connexions. puis décochez la case Adresse IP publique.
- Cliquez sur Créer une instance répliquée.
Cloud SQL crée une sauvegarde si nécessaire et génère l'instance dupliquée. Vous revenez à la page de l'instance principale.
gcloud
Créez l'instance dupliquée.
gcloud sql instances create REPLICA_NAME \ --master-instance-name=MASTER_INSTANCE_NAME
Si nécessaire, vous pouvez spécifier un niveau différent à l'aide du paramètre --tier
.
Vous pouvez spécifier une autre région à l'aide du paramètre --region
.
Si l'instance principale ne dispose que d'une adresse IP privée et que vous souhaitez autoriser d'autres services Google Cloud, tels que BigQuery, à accéder aux données dans Cloud SQL et à effectuer des requêtes sur ces données via une connexion privée, ajoutez le paramètre --enable-google-private-path
à la commande.
Vous devez créer l'instance dupliquée sur le même réseau VPC que l'instance principale. Vous pouvez également spécifier une plage allocated-ip-range-name
dans ce réseau VPC. Si aucune plage n'est spécifiée, l'instance dupliquée est créée dans une plage aléatoire.
Terraform
Pour créer une instance dupliquée avec accès en lecture, utilisez une ressource Terraform.
REST v1
Utilisez la méthode insert
de la ressource des instances pour créer l'instance dupliquée avec accès en lecture. Les propriétés "region" et "databaseVersion" doivent être identiques à celles de l'instance maître.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- project-id : ID du projet
- database-version : chaîne de version d'Emum (par exemple, POSTGRES_12)
- primary-instance-name : nom de l'instance principale
- primary-instance-region : région de l'instance principale
- replica-region : région de l'instance dupliquée
- replica-name : nom de l'instance dupliquée
- machine-type : chaîne d'énumération du type de machine Exemple : "db-custom-1-3840"
- private-network : réseau autorisé que vous ajoutez ou sélectionnez pour créer une connexion privée.
Méthode HTTP et URL :
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances
Corps JSON de la requête :
{ "masterInstanceName": "primary-instance-name", "project": "project-id", "databaseVersion": "database-version", "name": "replica-name", "region": "replica-region", "settings": { "tier": "machine-type", "settingsVersion": 0, "ipConfiguration": { object (IpConfiguration) }, { "ipv4Enabled": false, "privateNetwork": private-network, "requireSsl": boolean, "authorizedNetworks": [ { object (AclEntry) } ], "allocatedIpRange": string } } }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
REST v1beta4
Utilisez la méthode insert
de la ressource des instances pour créer l'instance dupliquée avec accès en lecture. Les propriétés "region" et "databaseVersion" doivent être identiques à celles de l'instance maître.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- project-id : ID du projet
- database-version : chaîne de version d'Emum (par exemple, POSTGRES_12)
- primary-instance-name : nom de l'instance principale
- primary-instance-region : région de l'instance principale
- replica-region : région de l'instance dupliquée
- replica-name : nom de l'instance dupliquée
- machine-type : chaîne d'énumération du type de machine Exemple : "db-custom-1-3840"
- private-network : réseau autorisé que vous ajoutez ou sélectionnez pour créer une connexion privée.
Méthode HTTP et URL :
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances
Corps JSON de la requête :
{ "masterInstanceName": "primary-instance-name", "project": "project-id", "databaseVersion": "database-version", "name": "replica-name", "region": "replica-region", "settings": { "tier": "machine-type", "settingsVersion": 0, "ipConfiguration": { object (IpConfiguration) }, { "ipv4Enabled": false, "privateNetwork": private-network, "requireSsl": boolean, "authorizedNetworks": [ { object (AclEntry) } ], "allocatedIpRange": string } } }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
Configurer des instances dupliquées avec accès en lecture pour l'authentification IAM pour les bases de données
Si vous activez l'optioncloudsql.iam_authentication
sur l'instance principale, Cloud SQL pour PostgreSQL l'active automatiquement sur les instances dupliquées avec accès en lecture. Toutefois, si vous n'activez pas cette option sur l'instance principale, Cloud SQL pour PostgreSQL ne l'active pas sur les instances dupliquées avec accès en lecture. Vous ne pouvez pas utiliser les instances dupliquées pour l'authentification IAM pour les bases de données.
Pour configurer l'instance dupliquée avec accès en lecture pour l'authentification IAM pour les bases de données :
-
Dans Google Cloud Console, accédez à la page Instances Cloud SQL.
- Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
- Dans la tuile Configuration, recherchez l'option
cloudsql.iam_authentication
. Si l'option ne figure pas dans la liste, il n'est pas nécessaire de l'activer dans l'instance dupliquée avec accès en lecture. Si l'option figure dans la liste, vous devez l'activer sur l'instance dupliquée avec accès en lecture. Si vous devez activer l'option sur l'instance dupliquée avec accès en lecture, passez à l'étape suivante. - Dans le menu de navigation SQL, sélectionnez Instances dupliquées.
- Cliquez sur le nom de l'instance dupliquée que vous souhaitez modifier.
- Cliquez sur Modifier.
- Dans la section Options de configuration, développez Options.
- Sélectionnez + Ajouter un élément.
- Saisissez
cloudsql.iam_authentication
comme nom de l'option. Assurez-vous que l'option Activé est sélectionnée pour cette option. - Cliquez sur Save (Enregistrer).
Créer des instances répliquées en cascade
Cette section explique comment créer et gérer des instances répliquées en cascade. Pour en savoir plus sur le fonctionnement des instances répliquées en cascade, consultez la section Instances répliquées en cascade.
Avant de commencer
L'instance principale doit disposer d'une instance répliquée avec accès en lecture. Pour en savoir plus sur la création d'instances principales, consultez la section Créer une instance répliquée avec accès en lecture.
Étapes de création d'une instance répliquée en cascade
Console
-
Dans Google Cloud Console, accédez à la page Instances Cloud SQL.
- Cliquez sur l'onglet Instances répliquées de l'instance répliquée qui va servir de parent pour l'instance répliquée que vous souhaitez créer.
- Cliquez sur Créer une instance répliquée.
- Sur la page Créer une instance répliquée avec accès en lecture, mettez à jour l'ID d'instance et toutes les autres options de configuration, y compris le nom, la région et la zone.
- Cliquez sur Créer.
Cloud SQL crée une instance répliquée. Vous êtes redirigé vers la page de l'instance répliquée parente.
- Suivez les étapes 4 à 6 pour chaque nouvelle instance répliquée en cascade que vous souhaitez créer.
gcloud
- Créez l'instance répliquée en spécifiant votre instance répliquée principale en tant qu'instance principale à l'aide de l'option
--master-instance-name
:gcloud sql instances create REPLICA_NAME \ --master-instance-name=PARENT_REPLICA_NAME \
Remplacez les éléments suivants :- REPLICA_NAME : ID unique de l'instance répliquée que vous créez.
- PARENT_REPLICA_NAME : nom de l'instance répliquée parente.
- Une fois l'instance répliquée créée, vous pouvez constater que les modifications apportées à l'instance principale sont répliquées via toutes les instances répliquées présentes dans la chaîne d'instances répliquées en cascade.
curl
- Pour créer une instance répliquée qui soit hiérarchiquement inférieure à l'instance répliquée parente, modifiez l'exemple de code JSON suivant et enregistrez-le dans un fichier nommé
request.json
:{ "masterInstanceName": "PARENT_REPLICA_NAME", "project": "PROJECT_ID", "name": "REPLICA_NAME", "region": "REPLICA_REGION", "settings": { "tier": "MACHINE_TYPE", } }
- Exécutez la commande suivante :
curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" -d @request.json "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances"
Résoudre les problèmes
Problème | Dépannage |
---|---|
L'instance dupliquée avec accès en lecture n'a pas commencé à se dupliquer 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 Si l'option |
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 : |
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 |
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 :
Voici quelques solutions possibles :
|
Erreurs lors de la reconstruction d'index dans PostgreSQL 9.6. | Une erreur de PostgreSQL vous indique que vous devez reconstruire un index particulier. Cette opération n'est possible que sur l'instance principale. Si vous créez une nouvelle instance dupliquée, vous obtiendrez rapidement la même erreur.
Les index de hachage ne sont pas propagés aux instances dupliquées dans les versions de PostgreSQL antérieures à la version 10.
Si vous devez absolument utiliser des index de hachage, effectuez une mise à niveau vers PostgreSQL 10 ou une version ultérieure. Sinon, si vous souhaitez également utiliser des instances dupliquées, n'utilisez pas d'index de hachage dans PostgreSQL 9.6. |
La requête sur l'instance principale est toujours en cours d'exécution. | Une fois que vous avez créé une instance dupliquée, la requête SELECT * from pg_stat_activity where state = 'active' and pid = XXXX and username = 'cloudsqlreplica' doit s'exécuter en continu sur votre instance principale.
|
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
- Apprenez à gérer les instances dupliquées.
- Apprenez-en plus sur les instances dupliquées interrégionales.