Cette page explique le clonage et décrit comment cloner une instance.
Présentation
Le clonage d'une instance Cloud SQL crée une instance qui est une copie de l'instance source. La nouvelle instance est complÚtement indépendante de l'instance source.
Questions fréquentes
Question | Réponse |
---|---|
Le clonage a-t-il un impact sur les performances ? | Non, le clonage n'a aucun impact sur les performances de l'instance source. |
Les sauvegardes sont-elles copiées dans la nouvelle instance ? | Non. La nouvelle instance crée des sauvegardes automatiques. Les sauvegardes manuelles ne sont pas copiées à partir de l'instance source. |
La nouvelle instance possĂšde-t-elle la mĂȘme ou les mĂȘmes adresses IP ? | Non. La nouvelle instance possĂšde une ou plusieurs nouvelles adresses IP. |
La nouvelle instance possĂšde-t-elle les mĂȘmes paramĂštres de configuration ? | Oui. La nouvelle instance conserve les mĂȘmes paramĂštres, tels que les options de base de donnĂ©es, les options de connectivitĂ©, le type de machine, ainsi que les paramĂštres de stockage et de mĂ©moire. |
Les instances dupliquées sont-elles copiées dans la nouvelle instance ? | Non. Vous devez créer des instances dupliquées pour la nouvelle instance. |
Est-il possible de cloner une instance dupliquée ? | Non. Il n'est pas possible de cloner une instance dupliquée. |
Est-il possible de créer un clone à un moment antérieur ? | Oui. La récupération à un moment précis utilise le clonage pour restaurer une instance à un moment antérieur. Cela vous permet de récupérer la base de données aprÚs un événement destructeur. |
Les paramÚtres de maintenance de l'instance source sont-ils automatiquement copiés sur l'instance de clone ? | Non. Vous devez configurer les paramÚtres de maintenance de l'instance de clone. |
Est-il possible de cloner une instance lorsque la zone de l'instance n'est pas disponible ? | Oui. Si vous clonez une instance zonale, vous pouvez spécifier une zone principale différente pour l'instance. Si vous clonez une instance haute disponibilité (régionale), vous pouvez spécifier des zones principale et secondaire différentes pour l'instance. |
Est-il possible de cloner une base de données dans un autre projet ? | Non. Il n'est pas possible de cloner de base de données dans un autre projet. |
Pouvez-vous cloner une instance qui était autrefois un clone ? | Oui. En revanche, vous pouvez cloner une instance clonée à partir d'une autre instance. |
Les utilisateurs de la base de donnĂ©es sont-ils copiĂ©s sur la nouvelle instance ? | Oui, les utilisateurs de la base de donnĂ©es sont copiĂ©s sur la nouvelle instance. Les mots de passe de ces utilisateurs sont Ă©galement copiĂ©s, et ils n'ont pas besoin d'ĂȘtre recréés. |
Cloner une instance
Vous pouvez cloner une instance Cloud SQL Ă l'aide de la console Google Cloud , de gcloud CLI, de Terraform ou de l'API.
Console
-
Dans la console Google Cloud , accédez à la page Instances Cloud SQL.
- Recherchez la ligne de l'instance Ă cloner.
- Dans la colonne Actions, cliquez sur le menu Autres actions.
- Cliquez sur Create clone (Créer un clone).
- Sur la page Créer un clone mettez à jour l'ID d'instance si nécessaire, puis cliquez sur Créer un clone, en laissant l'option Cloner l'état actuel de l'instance sélectionnée.
Pendant la phase d'initialisation du clone, vous ĂȘtes redirigĂ© vers la liste des instances.
gcloud
Pour cloner une instance, utilisez la commande gcloud sql instances clone
:
gcloud sql instances clone SOURCE_INSTANCE_NAME DESTINATION_INSTANCE_NAME \ --project PROJECT_ID \ --preferred-zone ZONE_NAME \ --preferred-secondary-zone SECONDARY_ZONE_NAME
Effectuez les remplacements suivants :
- SOURCE_INSTANCE_NAME : nom de l'instance Cloud SQL Ă cloner.
- DESTINATION_INSTANCE_NAME : nom de l'instance clonée.
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant les instances source et de destination.
- ZONE_NAME : facultatif. Nom de la zone principale de l'instance de destination. Utilisez cette option si vous souhaitez que l'instance de destination se trouve dans une zone principale différente de celle de l'instance Cloud SQL que vous clonez. Pour une instance régionale, cette zone remplace la zone principale, mais la zone secondaire reste identique à celle de l'instance source.
- SECONDARY_ZONE_NAME : facultatif. Nom de la zone secondaire de l'instance de destination. Cette option permet de spécifier une zone secondaire différente pour l'instance Cloud SQL régionale que vous souhaitez cloner.
Si vous utilisez les paramĂštres --preferred-zone
et --preferred-secondary-zone
, les conditions suivantes s'appliquent :
- Les zones principale et secondaire doivent ĂȘtre valides.
- Les deux zones doivent appartenir Ă la mĂȘme rĂ©gion que l'instance source.
- Les zones principale et secondaire doivent ĂȘtre diffĂ©rentes.
- Pour les instances zonales, vous ne pouvez pas utiliser le paramĂštre
--preferred-secondary-zone
. Dans ce cas, le processus de clonage de l'instance échoue. - Si vous ne spécifiez pas de valeurs pour les paramÚtres
--preferred-zone
ou--preferred-secondary-zone
, l'instance clonĂ©e prĂ©sente les mĂȘmes zones principale et secondaire que l'instance source.
Pour exécuter la commande gcloud sql instances clone
, vous devez disposer de l'autorisation cloudsql.instances.clone
. Pour en savoir plus sur les autorisations requises pour exécuter des commandes gcloud CLI, consultez la page Autorisations Cloud SQL.
Terraform
Pour cloner l'instance, 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
Avant d'utiliser les donnĂ©es de requĂȘte ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant les instances source et de destination.
- SOURCE_INSTANCE_NAME : nom de l'instance Cloud SQL Ă cloner.
- DESTINATION_INSTANCE_NAME : nom de l'instance clonée.
- ZONE_NAME : facultatif. Nom de la zone principale de l'instance de destination. Utilisez cette option si vous souhaitez que l'instance de destination se trouve dans une zone principale différente de celle de l'instance Cloud SQL que vous clonez. Pour une instance régionale, cette zone remplace la zone principale, mais la zone secondaire reste identique à celle de l'instance source.
- SECONDARY_ZONE_NAME : facultatif. Nom de la zone secondaire de l'instance de destination. Cette option permet de spécifier une zone secondaire différente pour l'instance Cloud SQL régionale que vous souhaitez cloner.
Méthode HTTP et URL :
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone
Corps JSON de la requĂȘte :
{ "cloneContext": { "destinationInstanceName": "DESTINATION_INSTANCE_NAME", "preferredZone": "ZONE_NAME", "preferredSecondaryZone": "SECONDARY_ZONE_NAME" } }
Pour envoyer votre requĂȘte, dĂ©veloppez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
Si vous utilisez les paramĂštres preferredZone
et preferredSecondaryZone
, les conditions suivantes s'appliquent :
- Les zones principale et secondaire doivent ĂȘtre valides.
- Les deux zones doivent appartenir Ă la mĂȘme rĂ©gion que l'instance source.
- Les zones principale et secondaire doivent ĂȘtre diffĂ©rentes.
- Pour les instances zonales, vous ne pouvez pas utiliser le paramĂštre
preferredSecondaryZone
. Dans ce cas, le processus de clonage de l'instance échoue. - Si vous ne spécifiez pas de valeurs pour les paramÚtres
preferredZone
oupreferredSecondaryZone
, l'instance clonĂ©e prĂ©sente les mĂȘmes zones principale et secondaire que l'instance source.
Pour utiliser la méthode API instances.clone
, vous devez disposer de l'autorisation cloudsql.instances.clone
. Pour en savoir plus sur les autorisations requises pour utiliser des méthodes d'API, consultez la page Autorisations Cloud SQL.
REST v1beta4
Avant d'utiliser les donnĂ©es de requĂȘte ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : ID ou numéro de projet du projet Google Cloud contenant les instances source et de destination.
- SOURCE_INSTANCE_NAME : nom de l'instance Cloud SQL Ă cloner.
- DESTINATION_INSTANCE_NAME : nom de l'instance clonée.
- ZONE_NAME : facultatif. Nom de la zone principale de l'instance de destination. Utilisez cette option si vous souhaitez que l'instance de destination se trouve dans une zone principale différente de celle de l'instance Cloud SQL que vous clonez. Pour une instance régionale, cette zone remplace la zone principale, mais la zone secondaire reste identique à celle de l'instance source.
- SECONDARY_ZONE_NAME : facultatif. Nom de la zone secondaire de l'instance de destination. Cette option permet de spécifier une zone secondaire différente pour l'instance Cloud SQL régionale que vous souhaitez cloner.
Méthode HTTP et URL :
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone
Corps JSON de la requĂȘte :
{ "cloneContext": { "destinationInstanceName": "DESTINATION_INSTANCE_NAME", "preferredZone": "ZONE_NAME", "preferredSecondaryZone": "SECONDARY_ZONE_NAME" } }
Pour envoyer votre requĂȘte, dĂ©veloppez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
Si vous utilisez les paramĂštres preferredZone
et preferredSecondaryZone
, les conditions suivantes s'appliquent :
- Les zones principale et secondaire doivent ĂȘtre valides.
- Les deux zones doivent appartenir Ă la mĂȘme rĂ©gion que l'instance source.
- Les zones principale et secondaire doivent ĂȘtre diffĂ©rentes.
- Pour les instances zonales, vous ne pouvez pas utiliser le paramĂštre
preferredSecondaryZone
. Dans ce cas, le processus de clonage de l'instance échoue. - Si vous ne spécifiez pas de valeurs pour les paramÚtres
preferredZone
oupreferredSecondaryZone
, l'instance clonĂ©e prĂ©sente les mĂȘmes zones principale et secondaire que l'instance source.
Pour utiliser la méthode API instances.clone
, vous devez disposer de l'autorisation cloudsql.instances.clone
. Pour en savoir plus sur les autorisations requises pour utiliser des méthodes d'API, consultez la page Autorisations Cloud SQL.
Cloner une instance qui utilise une adresse IP interne
Si votre instance Cloud SQL utilise une adresse IP interne, vous pouvez spécifier une plage d'adresses IP allouée pour la nouvelle adresse IP du clone. Par exemple, google-managed-services-default
.
gcloud
Clonez l'instance, en spécifiant éventuellement la plage d'adresses IP allouée que vous souhaitez utiliser :
gcloud sql instances clone SOURCE_INSTANCE_NAME TARGET_INSTANCE_NAME \ --allocated-ip-range-name ALLOCATED_IP_RANGE_NAME
L'utilisateur ou le compte de service qui exécute la commande gcloud sql instances clone
doit disposer de l'autorisation cloudsql.instances.clone
. Pour en savoir plus sur les autorisations requises pour exécuter des commandes gcloud CLI, consultez la page Autorisations Cloud SQL.
REST v1
Clonez l'instance, en spécifiant éventuellement la plage d'adresses IP allouée que vous souhaitez utiliser :
Avant d'utiliser les donnĂ©es de requĂȘte ci-dessous, effectuez les remplacements suivants :
- project-id : ID du projet
- source-instance-id : ID de l'instance source
- target-instance-id : ID de l'instance cible
- allocated-ip-range-name : nom d'une plage d'adresses IP allouée
Méthode HTTP et URL :
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone
Corps JSON de la requĂȘte :
{ "cloneContext": { "destinationInstanceName": "target-instance-id", "allocatedIpRange": "allocated-ip-range-name" } }
Pour envoyer votre requĂȘte, dĂ©veloppez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
L'utilisateur ou le compte de service qui utilise la méthode API instances.clone
doit disposer de l'autorisation cloudsql.instances.clone
. Pour en savoir plus sur les autorisations requises pour utiliser des méthodes d'API, consultez la page Autorisations Cloud SQL.
REST v1beta4
Clonez l'instance, en spécifiant éventuellement la plage d'adresses IP allouée que vous souhaitez utiliser :
Avant d'utiliser les donnĂ©es de requĂȘte ci-dessous, effectuez les remplacements suivants :
- project-id : ID du projet
- source-instance-id : ID de l'instance source
- target-instance-id : ID de l'instance cible
- allocated-ip-range-name : nom d'une plage d'adresses IP allouée
Méthode HTTP et URL :
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/source-instance-id/clone
Corps JSON de la requĂȘte :
{ "cloneContext": { "destinationInstanceName": "target-instance-id", "allocatedIpRange": "allocated-ip-range-name" } }
Pour envoyer votre requĂȘte, dĂ©veloppez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
L'utilisateur ou le compte de service qui utilise la méthode API instances.clone
doit disposer de l'autorisation cloudsql.instances.clone
. Pour en savoir plus sur les autorisations requises pour utiliser des méthodes d'API, consultez la page Autorisations Cloud SQL.
Si vous ne spécifiez pas de plage d'adresses IP allouée, le comportement suivant s'applique :
- Si l'instance source a Ă©tĂ© créée avec une plage spĂ©cifiĂ©e, l'instance clonĂ©e est créée dans la mĂȘme plage.
- Si l'instance source n'a pas été créée avec une plage spécifiée, l'instance clonée est créée dans une plage aléatoire.
Résoudre les problÚmes
ProblÚme | Dépannage |
---|---|
Ăchec du clonage : erreur constraints/sql.restrictAuthorizedNetworks . |
L'opération de clonage est bloquée par la configuration Authorized Networks .
Les Authorized Networks sont configurés pour les adresses IP publiques dans la section "Connectivité" de la console Google Cloud , et le clonage n'est pas autorisé pour des raisons de sécurité.
Si possible, supprimez toutes les entrées |
Message d'erreur : Failed to create subnetwork. Couldn't find free
blocks in allocated IP ranges. Please allocate new ranges for this service
provider. Help Token: [help-token-id]. |
Vous essayez d'utiliser la console Google Cloud pour cloner une instance avec une adresse IP privée, mais vous n'avez pas spécifié la plage d'adresses IP allouée que vous souhaitez utiliser et l'instance source n'est pas créée avec la plage spécifiée. Par conséquent, l'instance clonée est créée dans une plage aléatoire. Utilisez |