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 la console Google Cloud, accédez à la page Instances Cloud SQL.
- Recherchez l'instance pour laquelle vous souhaitez créer une instance dupliquée, puis ouvrez le menu
more actions
à côté 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é dupliquée. vous ne pouvez pas dupliquer une instance dupliquée.
- Si les sauvegardes et la journalisation binaire sont activées sur l'instance, passez à l'étape suivante. Sinon, sélectionnez Automatiser les sauvegardes et Activer la journalisation binaire, cliquez sur Continuer, puis sur Enregistrer et redémarrer pour redémarrer l'instance.
L'activation de la journalisation binaire entraîne le redémarrage de l'instance.
Dans la section Personnaliser votre instance de la page, mettez à jour les paramètres de votre instance dupliqué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 interne, 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
- Vérifiez l'état de l'instance principale :
gcloud sql instances describe PRIMARY_INSTANCE_NAME
Si la propriété
databaseReplicationEnabled
est définie surtrue
, l'instance est déjà une instance dupliquée. Or, vous ne pouvez pas créer une instance dupliquée à partir d'une instance dupliquée. - Si la propriété
enabled
sousbackupConfiguration
est définie surfalse
, activez les sauvegardes pour l'instance principale : Le paramètregcloud sql instances patch PRIMARY_INSTANCE_NAME \ --backup-start-time=>HH:MM
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. - Si la propriété
binaryLogEnabled
est définie surfalse
, activez les journaux binaires sur l'instance principale : L'activation des journaux binaires entraîne le redémarrage de l'instance.gcloud sql instances patch PRIMARY_INSTANCE_NAME \ --enable-bin-log
- Créez l'instance dupliquée.
gcloud sql instances create REPLICA_NAME \ --master-instance-name=PRIMARY_INSTANCE_NAME
Si nécessaire, vous pouvez spécifier un niveau différent à l'aide du paramètre
--tier
. Si vous créez une instance répliquée à partir d'une instance principale pour MySQL 8.4 ou version ultérieure, et que l'édition Cloud SQL pour cette instance est Enterprise ou Enterprise Plus, vous n'avez pas besoin de spécifier de valeur pour ce paramètre. L'instance répliquée hérite du type de machine de l'instance principale.Vous pouvez spécifier une autre région à l'aide du paramètre
--region
.Vous pouvez ajouter d'autres paramètres d'instance. Pour en savoir plus, consultez la documentation sur la commande gcloud sql instances create.
Si l'instance principale ne dispose que d'une adresse IP interne 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 interne, 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.
-
La journalisation binaire est compatible avec les instances dupliquées avec accès en lecture (MySQL 5.7 et versions ultérieures uniquement). Non compatible avec les anciennes instances dupliquées de basculement à haute disponibilité). Activez la journalisation binaire sur une instance dupliquée avec la même commande
gcloud CLI
, en utilisant le nom de l'instance dupliquée au lieu du nom de l'instance principale.gcloud sql instances patch REPLICA_INSTANCE_NAME \ --enable-bin-log
La durabilité de la journalisation binaire sur l'instance dupliquée (mais pas sur l'instance principale) peut être définie avec l'option
sync_binlog
qui contrôle la fréquence à laquelle le serveur MySQL synchronise le journal binaire sur le disque.Les sauvegardes ne peuvent pas être activées sur les instances dupliquées, mais la journalisation binaire peut l'être sur une instance dupliquée même si les sauvegardes sont désactivées, ce qui n'est pas le cas pour l'instance principale.
La durée de conservation des binlogs des instances dupliquées est automatiquement définie sur une journée, contrairement aux instances principales qui bénéficient de sept jours.
Terraform
Pour créer une instance dupliquée avec accès en lecture, utilisez une ressource Terraform.
Appliquer les modifications
Pour appliquer votre configuration Terraform dans un projet Google Cloud, suivez les procédures des sections suivantes.
Préparer Cloud Shell
- Lancez Cloud Shell.
-
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).
-
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 exemplemain.tf
. Dans ce tutoriel, le fichier est appelémain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
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.
- Examinez et modifiez les exemples de paramètres à appliquer à votre environnement.
- Enregistrez les modifications.
-
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
-
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.
-
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).
- 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 :
- Pour désactiver la protection contre la suppression, définissez l'argument
deletion_protection
surfalse
dans le fichier de configuration Terraform.deletion_protection = "false"
- Appliquez la configuration Terraform mise à jour en exécutant la commande suivante et en saisissant
yes
lorsque vous y êtes invité :terraform apply
-
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
- Obtenir la configuration de sauvegarde actuelle
Utilisez la méthode
get
de la ressource des instances pour renvoyer la version de la base de données et la configuration de sauvegarde actuelle de l'instance principale.Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- project-id : ID du projet
- primary-instance-name : nom de l'instance principale
Méthode HTTP et URL :
GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/primary-instance-name
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
- Vérifier que les champs de duplication sont définis
Si l'élément
enabled
oupointInTimeEnabled
est défini surfalse
, utilisez la méthodepatch
de la ressource des instances pour les activer tous les deux. Dans la requête, spécifiez les propriétés de la configuration de sauvegarde que vous souhaitez modifier.Pour activer les sauvegardes, définissez
enabled
surtrue
etstartTime
sur une heure de la journée au formatHH:MM
. Le paramètrestartTime
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.Pour activer la récupération à un moment précis, définissez
pointInTimeEnabled
surtrue
.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_NAME : nom de l'instance principale ou de l'instance répliquée avec accès en lecture que vous configurez pour la haute disponibilité.
- START_TIME : heure (en heures et en minutes).
Méthode HTTP et URL :
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Corps JSON de la requête :
{ "settings": { "backupConfiguration": { "startTime": "START_TIME", "enabled": true, "binaryLogEnabled": true } } }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
- Créer l'instance dupliquée avec accès en lecture
Utilisez la méthode
insert
de la ressource des instances pour créer l'instance dupliquée avec accès en lecture. La propriétédatabaseVersion
doit être identique à celle de l'instance principale. Si l'instance principale utilise une adresse IP interne, vous pouvez spécifier une plageallocatedIpRange
de la même manière que lorsque vous créez une instance principale. Si aucune plage n'est spécifiée, l'instance dupliquée est créée dans une plage aléatoire. Pour une instance dupliquée interrégionale avec accès en lecture, spécifiez une région autre que celle de l'instance principale.Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- project-id : ID du projet
- database-version : chaîne de version Emum (par exemple, MYSQL_8_0)
- 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
- Obtenir la configuration de sauvegarde actuelle
Utilisez la méthode
get
de la ressource des instances pour renvoyer la version de la base de données et la configuration de sauvegarde actuelle de l'instance principale.Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- project-id : ID du projet
- primary-instance-name : nom de l'instance principale
Méthode HTTP et URL :
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/primary-instance-name
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
- Vérifier que les champs de duplication sont définis
Si
enabled
et/oubinaryLogEnabled
sont définis surfalse
sur l'instance principale, utilisez la méthodepatch
de la ressource des instances pour les activer tous les deux. Dans la requête, spécifiez les propriétés de la configuration de sauvegarde que vous souhaitez modifier.Pour activer les sauvegardes, définissez
enabled
surtrue
etstartTime
sur une heure de la journée au formatHH:MM
. Le paramètrestartTime
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.Pour activer la récupération à un moment précis, définissez
binaryLogEnabled
surtrue
sur l'instance principale.La journalisation binaire est compatible avec les instances dupliquées avec accès en lecture (MySQL 5.7 et versions ultérieures uniquement). Activez la journalisation binaire sur une instance dupliquée avec la même API, en utilisant l'ID d'instance de l'instance dupliquée plutôt que l'ID de l'instance principale.
La durabilité de la journalisation binaire sur l'instance dupliquée (mais pas sur l'instance principale) peut être définie avec l'option
sync_binlog
qui contrôle la fréquence à laquelle le serveur MySQL synchronise le journal binaire sur le disque.Les sauvegardes ne peuvent pas être activées sur les instances dupliquées, mais la journalisation binaire peut l'être sur une instance dupliquée même si les sauvegardes sont désactivées, ce qui n'est pas le cas pour l'instance principale.
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_NAME : nom de l'instance principale ou de l'instance répliquée avec accès en lecture que vous configurez pour la haute disponibilité.
- START_TIME : heure (en heures et en minutes).
Méthode HTTP et URL :
PATCH https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
Corps JSON de la requête :
{ "settings": { "backupConfiguration": { "startTime": "START_TIME", "enabled": true, "binaryLogEnabled": true } } }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
- Créer l'instance dupliquée avec accès en lecture
Utilisez la méthode
insert
de la ressource des instances pour créer l'instance dupliquée avec accès en lecture. La propriétédatabaseVersion
doit être identique à celle de l'instance principale. Si l'instance principale utilise une adresse IP interne, vous pouvez spécifier une plageallocatedIpRange
de la même manière que lorsque vous créez une instance principale. Pour une instance dupliquée interrégionale avec accès en lecture, spécifiez une région autre que celle de l'instance principale.Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- project-id : ID du projet
- database-version : chaîne de version Emum (par exemple, MYSQL_8_0)
- 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 :
Créer une instance répliquée avec accès en lecture pour une instance avec Private Service Connect activé
gcloud CLI ou l'API. Vous pouvez créer cette instance répliquée dans la même région ou dans une région différente de celle de l'instance principale (instance répliquée interrégionale avec accès en lecture).
L'instance répliquée avec accès en lecture ne peut pas être répliquée à partir d'une instance avec un type de connectivité différent. Par exemple, une instance pour laquelle Private Service Connect est activé ne peut être répliquée qu'à partir d'une autre instance Private Service Connect. Elle ne peut pas non plus être répliquée à partir d'une instance compatible avec les connexions IP externes, ou à partir d'une instance configurée avec l'accès aux services privés.
gcloud
Pour créer une instance répliquée avec accès en lecture pour une instance, utilisez la commande gcloud sql instances create
:
gcloud sql instances create REPLICA_INSTANCE_NAME \ --master-instance-name=PRIMARY_INSTANCE_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --enable-private-service-connect \ --allowed-psc-projects=ALLOWED_PROJECTS \ --availability-type=AVAILABILITY_TYPE \ --no-assign-ip
Effectuez les remplacements suivants :
- REPLICA_INSTANCE_NAME : nom de l'instance répliquée.
- PRIMARY_INSTANCE_NAME : nom de l'instance principale.
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
- REGION_NAME : nom de la région pour l'instance répliquée.
ALLOWED_PROJECTS : liste d'ID ou de numéros de projet autorisés, séparés par une virgule. Si un projet ne figure pas dans cette liste, vous ne pouvez pas l'utiliser pour créer une instance sur laquelle activer Private Service Connect.
Cloud SQL ne copie pas les projets autorisés pour l'instance principale sur l'instance répliquée. Pour chaque instance répliquée, vous devez créer un point de terminaison Private Service Connect. Si vous utilisez le proxy d'authentification Cloud SQL ou les connecteurs de langage Cloud SQL, vous devez créer une zone DNS et un enregistrement DNS pour les instances répliquées.
- AVAILABILITY_TYPE : permet d'activer la haute disponibilité pour l'instance. Pour ce paramètre, spécifiez l'une des valeurs suivantes :
REGIONAL
: permet d'activer la haute disponibilité (recommandé pour les instances de production). L'instance bascule vers une autre zone dans la région sélectionnée.ZONAL
: n'offre aucune fonctionnalité de basculement. Il s'agit de la valeur par défaut.
Pour en savoir plus sur la définition et la suppression de la haute disponibilité pour les instances, consultez les sections Configurer la haute disponibilité d'une instance existante et Désactiver la haute disponibilité pour une instance.
REST v1
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- PRIMARY_INSTANCE_NAME : nom de l'instance principale.
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
- REPLICA_INSTANCE_NAME : nom de l'instance répliquée.
- REGION_NAME : nom de la région pour l'instance répliquée.
- MACHINE_TYPE : type de machine de l'instance.
- AVAILABILITY_TYPE : permet d'activer la haute disponibilité pour l'instance. Pour ce paramètre, spécifiez l'une des valeurs suivantes :
REGIONAL
: permet d'activer la haute disponibilité (recommandé pour les instances de production). L'instance bascule vers une autre zone dans la région sélectionnée.ZONAL
: n'offre aucune fonctionnalité de basculement. Il s'agit de la valeur par défaut.
Pour en savoir plus sur la définition et la suppression de la haute disponibilité pour les instances, consultez les sections Configurer la haute disponibilité d'une instance existante et Désactiver la haute disponibilité pour une instance.
ALLOWED_PROJECTS : liste d'ID ou de numéros de projet autorisés, séparés par une virgule. Si un projet ne figure pas dans cette liste, vous ne pouvez pas l'utiliser pour créer une instance sur laquelle activer Private Service Connect.
Cloud SQL ne copie pas les projets autorisés pour l'instance principale sur l'instance répliquée. Pour chaque instance répliquée, vous devez créer un point de terminaison Private Service Connect. Si vous utilisez le proxy d'authentification Cloud SQL ou les connecteurs de langage Cloud SQL, vous devez créer une zone DNS et un enregistrement DNS pour les instances répliquées.
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": "MYSQL_8_0", "name": "REPLICA_INSTANCE_NAME", "region": "REGION_NAME", "kind": "sql#instance", "settings": { "tier": "MACHINE_TYPE", "availabilityType": "AVAILABILITY_TYPE", "settingsVersion": 0, "ipConfiguration": { "ipv4Enabled": false, "pscConfig": { "allowedConsumerProjects": [ALLOWED_PROJECTS], "pscEnabled": true } }, "kind": "sql#settings", "pricingPlan": "PER_USE", "replicationType": "ASYNCHRONOUS", "tier": "MACHINE_TYPE" } }
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/REPLICA_INSTANCE_NAME", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "operationType": "CREATE_REPLICA", "name": "OPERATION_ID", "targetId": "REPLICA_INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
REST v1beta4
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- PRIMARY_INSTANCE_NAME : nom de l'instance principale.
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant l'instance.
- REPLICA_INSTANCE_NAME : nom de l'instance répliquée.
- REGION_NAME : nom de la région pour l'instance répliquée.
- MACHINE_TYPE : type de machine de l'instance.
- AVAILABILITY_TYPE : permet d'activer la haute disponibilité pour l'instance. Pour ce paramètre, spécifiez l'une des valeurs suivantes :
REGIONAL
: permet d'activer la haute disponibilité (recommandé pour les instances de production). L'instance bascule vers une autre zone dans la région sélectionnée.ZONAL
: n'offre aucune fonctionnalité de basculement. Il s'agit de la valeur par défaut.
Pour en savoir plus sur la définition et la suppression de la haute disponibilité pour les instances, consultez les sections Configurer la haute disponibilité d'une instance existante et Désactiver la haute disponibilité pour une instance.
ALLOWED_PROJECTS : liste d'ID ou de numéros de projet autorisés, séparés par une virgule. Si un projet ne figure pas dans cette liste, vous ne pouvez pas l'utiliser pour créer une instance sur laquelle activer Private Service Connect.
Cloud SQL ne copie pas les projets autorisés pour l'instance principale sur l'instance répliquée. Pour chaque instance répliquée, vous devez créer un point de terminaison Private Service Connect. Si vous utilisez le proxy d'authentification Cloud SQL ou les connecteurs de langage Cloud SQL, vous devez créer une zone DNS et un enregistrement DNS pour les instances répliquées.
Méthode HTTP et URL :
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances
Corps JSON de la requête :
{ "masterInstanceName": "PRIMARY_INSTANCE_NAME", "project": "PROJECT_ID", "databaseVersion": "MYSQL_8_0", "name": "REPLICA_INSTANCE_NAME", "region": "REGION_NAME", "kind": "sql#instance", "settings": { "tier": "MACHINE_TYPE", "availabilityType": "AVAILABILITY_TYPE", "settingsVersion": 0, "ipConfiguration": { "ipv4Enabled": false, "pscConfig": { "allowedConsumerProjects": [ALLOWED_PROJECTS], "pscEnabled": true } }, "kind": "sql#settings", "pricingPlan": "PER_USE", "replicationType": "ASYNCHRONOUS", "tier": "MACHINE_TYPE" } }
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/REPLICA_INSTANCE_NAME", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "operationType": "CREATE_REPLICA", "name": "OPERATION_ID", "targetId": "REPLICA_INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Configurer des instances dupliquées avec accès en lecture pour l'authentification IAM pour les bases de données
L'indicateurcloudsql_iam_authentication
n'est pas activé automatiquement sur les instances dupliquées avec accès en lecture, lorsqu'il est activé sur l'instance principale.
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 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.
Étapes de création d'une instance répliquée en cascade
Console
-
Dans la console Google Cloud, accédez à la page Instances Cloud SQL.
- Pour MySQL version 5.7 ou ultérieure, activez la réplication.
- Cliquez sur l'onglet Instances dupliqué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
- Si vous utilisez MySQL version 5.7 ou ultérieure, activez les binlogs pour l'instance principale de la nouvelle instance répliquée:
Remplacez PARENT_REPLICA_NAME par le nom de l'instance répliquée parente.gcloud sql instances patch --enable-bin-log PARENT_REPLICA_NAME
- 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
: - 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 que vous avez créé l'instance répliquée en cascade, 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.
gcloud sql instances create REPLICA_NAME \ --master-instance-name=PARENT_REPLICA_NAME \
curl
- Si vous utilisez MySQL version 5.7 ou versions ultérieures, activez la journalisation binaire :
Pour activer la journalisation binaire, enregistrez le code JSON suivant dans un fichier nommé request.JSON, puis appelez la commande curl pour activer la journalisation binaire.{ "settings": { "backupConfiguration": { "enabled": false, "binaryLogEnabled": true } } }
- 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 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 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 :
|
Le délai de réplication augmente soudainement. | Ce problème est causé par des transactions de longue durée. Lorsqu'une transaction (une ou plusieurs instructions) est validée sur l'instance source, l'heure de début de la transaction est enregistrée dans le journal binaire. Lorsque l'instance répliquée reçoit cet événement binlog, elle compare ce code temporel au code temporel actuel pour calculer le délai de réplication. Par conséquent, une transaction de longue durée sur la source entraîne un délai de réplication important immédiat sur l'instance dupliquée. Si la quantité de modifications de ligne dans la transaction est importante, l'instance dupliquée prendra également beaucoup de temps à l'exécuter. Pendant ce temps, le délai de réplication augmente. Une fois que l'instance dupliquée a terminé cette transaction, la période de rattrapage dépend de la charge de travail d'écriture sur la source et de la vitesse de traitement de l'instance dupliquée.
Voici quelques solutions possibles pour éviter une longue transaction :
|
La modification des options de réplication parallèle génère une erreur. | Une valeur incorrecte est définie pour une ou plusieurs de ces options.
Sur l'instance principale qui affiche le message d'erreur, définissez les options de réplication parallèle comme suit :
|
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.