Nesta página, explicamos a clonagem e descrevemos como clonar uma instância.
Visão geral
A clonagem de uma instância do Cloud SQL cria uma nova instância, que é uma cópia da instância de origem. Essa nova instância é completamente independente da instância de origem.
Perguntas frequentes
Pergunta | Answer |
---|---|
A clonagem afeta o desempenho? | Não. A clonagem não afeta o desempenho da instância de origem. |
Os backups são copiados para a nova instância? | Não. A nova instância cria novos backups automatizados. Os backups manuais não são copiados da instância de origem. |
A nova instância tem o mesmo endereço ou os mesmos endereços IP? | Não. A nova instância tem um novo endereço ou novos endereços IP. |
A nova instância tem as mesmas definições de configuração? | Sim. A nova instância tem as mesmas configurações, como flags de banco de dados, opções de conectividade, tipo de máquina e configurações de armazenamento e memória. |
As réplicas são copiadas para a nova instância? | Não. Você precisa criar novas réplicas para a nova instância. |
É possível clonar uma réplica? | Não é possível clonar uma réplica. |
É possível fazer uma clonagem de um momento anterior? | Sim. A recuperação pontual usa clonagem para restaurar uma instância de um momento anterior. Isso ajuda você a recuperar seu banco de dados de um evento destrutivo. |
As configurações de manutenção da instância de origem são copiadas de maneira automática para a instância clone? | Não. É necessário definir as configurações de manutenção para a instância clone. |
É possível clonar uma instância quando a zona da instância não estiver disponível? | Sim. Ao clonar uma instância, é possível especificar uma zona diferente para ela. |
Posso clonar um banco de dados para outro projeto? | Não é possível clonar um banco de dados para outro projeto. |
É possível clonar uma instância que já foi um clone? | Sim. É permitido clonar uma instância que foi clonada de outra instância. |
Os usuários do banco de dados são copiados para a nova instância? | Sim, os usuários do banco de dados são copiados para a nova instância. As senhas desses usuários também são copiadas para que não precisem ser recriadas. |
Clonar uma instância
É possível clonar uma instância do Cloud SQL usando o console do Google Cloud, a gcloud CLI, o Terraform ou a API.
Console
-
No console do Google Cloud, acesse a página Instâncias do Cloud SQL.
- Encontre a linha da instância a ser clonada.
- Na coluna Ações, clique no menu Mais ações .
- Clique em Criar clone.
- Na página Criar um clone, atualize o ID da instância, se necessário, e
clique em Criar clone, saindo de Clonar o estado atual da instância
selecionado.
Você retorna à página de listagem de instâncias e o clone é inicializado.
gcloud
Para clonar uma instância, use o comando gcloud sql instances clone
:
gcloud sql instances clone SOURCE_INSTANCE_NAME DESTINATION_INSTANCE_NAME \ --project=PROJECT_ID
Faça as seguintes substituições:
- SOURCE_INSTANCE_NAME: o nome da instância do Cloud SQL a ser clonada
- DESTINATION_INSTANCE_NAME: o nome da instância clonada
- PROJECT_ID: o ID ou número do projeto do Google Cloud que contém as instâncias de origem e destino
Para executar o comando
gcloud sql instances clone
, você precisa ter a permissão cloudsql.instances.clone
. Para mais informações sobre as permissões necessárias para executar os comandos da CLI gcloud, consulte Permissões do Cloud SQL.
Terraform
Para clonar a instância, use um recurso do Terraform
Aplique as alterações
Para aplicar a configuração do Terraform em um projeto do Google Cloud, conclua as etapas nas seções a seguir.
Preparar o Cloud Shell
- Inicie o Cloud Shell.
-
Defina o projeto padrão do Google Cloud em que você quer aplicar as configurações do Terraform.
Você só precisa executar esse comando uma vez por projeto, e ele pode ser executado em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
As variáveis de ambiente serão substituídas se você definir valores explícitos no arquivo de configuração do Terraform.
Preparar o diretório
Cada arquivo de configuração do Terraform precisa ter o próprio diretório, também chamado de módulo raiz.
-
No Cloud Shell, crie um diretório e um novo
arquivo dentro dele. O nome do arquivo precisa ter a extensão
.tf
, por exemplo,main.tf
. Neste tutorial, o arquivo é chamado demain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se você estiver seguindo um tutorial, poderá copiar o exemplo de código em cada seção ou etapa.
Copie o exemplo de código no
main.tf
recém-criado.Se preferir, copie o código do GitHub. Isso é recomendado quando o snippet do Terraform faz parte de uma solução de ponta a ponta.
- Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
- Salve as alterações.
-
Inicialize o Terraform. Você só precisa fazer isso uma vez por diretório.
terraform init
Opcionalmente, para usar a versão mais recente do provedor do Google, inclua a opção
-upgrade
:terraform init -upgrade
Aplique as alterações
-
Revise a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expectativas:
terraform plan
Faça as correções necessárias na configuração.
-
Para aplicar a configuração do Terraform, execute o comando a seguir e digite
yes
no prompt:terraform apply
Aguarde até que o Terraform exiba a mensagem "Apply complete!".
- Abra seu projeto do Google Cloud para ver os resultados. No console do Google Cloud, navegue até seus recursos na IU para verificar se foram criados ou atualizados pelo Terraform.
Excluir as alterações
Para excluir as mudanças, faça o seguinte:
- Para desativar a proteção contra exclusão, no arquivo de configuração do Terraform, defina o argumento
deletion_protection
comofalse
.deletion_protection = "false"
- Para aplicar a configuração atualizada do Terraform, execute o comando a seguir e digite
yes
no prompt:terraform apply
-
Remova os recursos aplicados anteriormente com a configuração do Terraform executando o seguinte comando e inserindo
yes
no prompt:terraform destroy
REST v1
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID ou número do projeto do Google Cloud que contém as instâncias de origem e destino
- SOURCE_INSTANCE_NAME: o nome da instância do Cloud SQL a ser clonada
- DESTINATION_INSTANCE_NAME: o nome da instância clonada
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone
Corpo JSON da solicitação:
{ "cloneContext": { "destinationInstanceName": "DESTINATION_INSTANCE_NAME" } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
Para usar o método da API instances.clone
, você precisa ter a permissão cloudsql.instances.clone
. Para mais informações sobre as permissões necessárias para usar os métodos da API, consulte Permissões do Cloud SQL.
REST v1beta4
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID ou número do projeto do Google Cloud que contém as instâncias de origem e destino
- SOURCE_INSTANCE_NAME: o nome da instância do Cloud SQL a ser clonada
- DESTINATION_INSTANCE_NAME: o nome da instância clonada
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone
Corpo JSON da solicitação:
{ "cloneContext": { "destinationInstanceName": "DESTINATION_INSTANCE_NAME" } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
Para usar o método da API instances.clone
, você precisa ter a permissão cloudsql.instances.clone
. Para mais informações sobre as permissões necessárias para usar os métodos da API, consulte Permissões do Cloud SQL.
Clonar uma instância indisponível
Console
Clone uma instância que não está disponível em uma zona diferente pelos seguintes motivos:
- A zona atual em que a instância está configurada não é acessível. Esta instância tem um estado
FAILED
. - A instância está em manutenção. Esta instância tem um estado
MAINTENANCE
.
Para clonar uma instância indisponível, siga estas etapas:
-
No console do Google Cloud, acesse a página Instâncias do Cloud SQL.
- Encontre a linha da instância a ser clonada.
- Na coluna Ações, clique no menu Mais ações.
- Clique em Criar clone.
- Na página Criar um clone, faça o seguinte:
- No campo ID da instância, atualize o ID da instância, se necessário.
- Clique em Clone de um momento anterior.
- No campo Ponto no tempo, selecione a data e a hora para clonar os dados. Isso recupera o estado da instância a partir desse momento.
- Clique em Criar clone.
Enquanto o clone é inicializado, você retorna à página de listagem de instâncias.
gcloud
Clone uma instância que não está disponível para uma zona diferente porque a zona atual em que a instância está configurada não está acessível.
gcloud sql instances clone SOURCE_INSTANCE_NAME TARGET_INSTANCE_NAME \ --point-in-time DATE_AND_TIME_STAMP \ --preferred-zone ZONE_NAME
A conta de serviço ou o usuário que está executando o comando gcloud sql instances clone
precisa ter a permissão cloudsql.instances.clone
. Para mais informações sobre as permissões necessárias para executar os comandos da CLI gcloud, consulte Permissões do Cloud SQL.
REST v1
Clone uma instância que não está disponível para uma zona diferente porque a zona atual em que a instância está configurada não está acessível.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do projeto.
- SOURCE_INSTANCE_NAME: o nome da instância de origem.
- TARGET_INSTANCE_NAME: o nome da instância de destino (clonada).
- DATE_AND_TIME_STAMP: um carimbo de data e hora para a instância de origem no fuso horário UTC e no formato RFC 3339 (por exemplo,
2012-11-15T16:19:00.094Z
). - ZONE_NAME: opcional. O nome da zona para a instância de destino. Isso é usado para especificar uma zona diferente para a instância do Cloud SQL que você quer clonar. Para uma instância regional, esta zona substitui a zona principal, mas a zona secundária permanece igual à instância.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone
Corpo JSON da solicitação:
{ "cloneContext": { "destinationInstanceName": "TARGET_INSTANCE_NAME", "pointInTime": "DATE_AND_TIME_STAMP", "preferredZone": "ZONE_NAME" } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
O usuário ou a conta de serviço que está usando o método instances.clone
da API precisa ter a permissão cloudsql.instances.clone
. Para mais informações sobre as permissões necessárias para usar os métodos da API, consulte Permissões do Cloud SQL.
REST v1beta4
Clone uma instância que não está disponível para uma zona diferente porque a zona atual em que a instância está configurada não está acessível.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do projeto.
- SOURCE_INSTANCE_NAME: o nome da instância de origem.
- TARGET_INSTANCE_NAME: o nome da instância de destino (clonada).
- DATE_AND_TIME_STAMP: um carimbo de data e hora para a instância de origem no
fuso horário UTC
e no formato RFC 3339
(por exemplo,
2012-11-15T16:19:00.094Z
). - ZONE_NAME: opcional. O nome da zona para a instância de destino. Isso é usado para especificar uma zona diferente para a instância do Cloud SQL que você quer clonar. Para uma instância regional, esta zona substitui a zona principal, mas a zona secundária permanece igual à instância.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone
Corpo JSON da solicitação:
{ "cloneContext": { "destinationInstanceName": "TARGET_INSTANCE_NAME", "pointInTime": "DATE_AND_TIME_STAMP", "preferredZone": "ZONE_NAME" } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
O usuário ou a conta de serviço que está usando o método instances.clone
da API precisa ter a permissão cloudsql.instances.clone
. Para mais informações sobre as permissões necessárias para usar os métodos da API, consulte Permissões do Cloud SQL.
Clonar uma instância que usa um endereço IP interno
Se a instância do Cloud SQL usar um endereço IP interno, será possível especificar
um
intervalo de IP alocado
para o novo endereço IP do clone. Por exemplo, google-managed-services-default
.
gcloud
Clone a instância especificando opcionalmente o intervalo de IP alocado que você quer usar:
gcloud sql instances clone SOURCE_INSTANCE_NAME TARGET_INSTANCE_NAME \ --allocated-ip-range-name ALLOCATED_IP_RANGE_NAME
A conta de serviço ou o usuário que está executando o comando gcloud sql instances clone
precisa ter a permissão cloudsql.instances.clone
. Para mais informações sobre as permissões necessárias para executar os comandos da CLI gcloud, consulte Permissões do Cloud SQL.
REST v1
Clone a instância especificando opcionalmente o intervalo de IP alocado que você quer usar:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto;
- source-instance-id: o ID da instância de origem
- target-instance-id: o ID da instância de destino
- allocated-ip-range-name: o nome de um intervalo de IP alocado
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone
Corpo JSON da solicitação:
{ "cloneContext": { "destinationInstanceName": "target-instance-id", "allocatedIpRange": "allocated-ip-range-name" } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
O usuário ou a conta de serviço que está usando o método instances.clone
da API precisa ter a permissão cloudsql.instances.clone
. Para mais informações sobre as permissões necessárias para usar os métodos da API, consulte Permissões do Cloud SQL.
REST v1beta4
Clone a instância especificando opcionalmente o intervalo de IP alocado que você quer usar:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto;
- source-instance-id: o ID da instância de origem
- target-instance-id: o ID da instância de destino
- allocated-ip-range-name: o nome de um intervalo de IP alocado
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/source-instance-id/clone
Corpo JSON da solicitação:
{ "cloneContext": { "destinationInstanceName": "target-instance-id", "allocatedIpRange": "allocated-ip-range-name" } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
O usuário ou a conta de serviço que está usando o método instances.clone
da API precisa ter a permissão cloudsql.instances.clone
. Para mais informações sobre as permissões necessárias para usar os métodos da API, consulte Permissões do Cloud SQL.
Se você não especificar um intervalo de IP alocado, este comportamento será aplicado:
- Se a instância de origem foi criada com um intervalo específico, a instância clonada será criada no mesmo intervalo.
- Se a instância de origem não foi criada com um intervalo específico, a instância clonada será criada em um intervalo aleatório.
Resolver problemas
Problema | Solução de problemas |
---|---|
Ocorreu uma falha na clonagem com um erro constraints/sql.restrictAuthorizedNetworks . |
A operação de clonagem é bloqueada pela configuração Authorized Networks .
Authorized Networks são configurados para endereços IP públicos na seção "Conectividade"
do console do Google Cloud, e a clonagem não é permitida devido a
considerações de segurança.
Remova todas as entradas |
Mensagem de erro: 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]. |
Você está tentando usar o console do Google Cloud para clonar uma instância com um endereço IP particular, mas não especificou o intervalo de IP alocado que pretende usar e a instância de origem não foi criada com o intervalo especificado. Como resultado, a instância clonada é criada em um intervalo aleatório. Use |