Esta página explica a clonagem e descreve 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. A nova instância é completamente independente da instância de origem.
Perguntas frequentes
Pergunta | Responder |
---|---|
A clonagem afeta o desempenho? | Não. A clonagem não tem impacto no 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 endereços IP? | Não. A nova instância tem um ou mais 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 sinalizadores 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. Você não pode clonar uma réplica. |
Você pode fazer um clone de um ponto anterior no tempo? | Sim. A recuperação pontual usa clonagem para restaurar uma instância de um ponto anterior no tempo. Isso ajuda a recuperar seu banco de dados de um evento destrutivo. |
As configurações de manutenção da instância de origem são copiadas automaticamente para a instância clone? | Não. Você precisa configurar as configurações de manutenção para a instância clone. |
É possível clonar uma instância que já foi um clone? | Sim. Você pode 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, mas as senhas dos usuários do banco de dados não são copiadas e precisam ser recriadas. |
Clonar uma instância
Você pode clonar uma instância do Cloud SQL usando o Google Cloud console, gcloud CLI , Terraform ou a API.
Console
No Google Cloud console, acesse a página Instâncias do Cloud SQL .
- Localize 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 , deixando Clonar estado atual da instância selecionado.
Você retornará à página de listagem de instâncias enquanto 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 \ --preferred-zone ZONE_NAME \ --preferred-secondary-zone SECONDARY_ZONE_NAME
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 projeto que contém as instâncias de origem e destino.
- ZONE_NAME : Opcional. O nome da zona primária da instância de destino. Use-o se desejar que a instância de destino esteja em uma zona primária diferente da instância do Cloud SQL que você está clonando. Para uma instância regional, essa zona substitui a zona primária, mas a zona secundária permanece a mesma da instância de origem.
- SECONDARY_ZONE_NAME : Opcional. O nome da zona secundária para a instância de destino. Use esta opção para especificar uma zona secundária diferente para a instância regional do Cloud SQL que você deseja clonar.
Se você estiver usando os parâmetros --preferred-zone
e --preferred-secondary-zone
, as seguintes condições se aplicarão:
- Tanto a zona primária quanto a secundária devem ser zonas válidas.
- Ambas as zonas devem pertencer à mesma região que a instância de origem.
- As zonas primária e secundária devem ser diferentes.
- Para instâncias zonais, não é possível usar o parâmetro
--preferred-secondary-zone
. Se o fizer, o processo de clonagem da instância falhará. - Se você não especificar valores para os parâmetros
--preferred-zone
ou--preferred-secondary-zone
, a instância clonada terá as mesmas zonas primária e secundária que a instância de origem.
Para executar o comando gcloud sql instances clone
, você precisa ter a permissão cloudsql.instances.clone
. Para obter mais informações sobre as permissões necessárias para executar comandos da CLI do gcloud , consulte Permissões do Cloud SQL .
Terraform
Para clonar a instância, use um recurso do Terraform
Aplicar as alterações
Para aplicar sua configuração do Terraform em um Google Cloud projeto, conclua as etapas nas seções a seguir.
Preparar o Cloud Shell
- Inicie o Cloud Shell .
Defina o padrão Google Cloud projeto onde você deseja aplicar suas configurações do Terraform.
Você só precisa executar este comando uma vez por projeto e pode executá-lo em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
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 deve ter seu 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 deve ter a extensão
.tf
— por exemplo,main.tf
Neste tutorial, o arquivo será chamado demain.tf
mkdir DIRECTORY && cd DIRECTORY && touch main.tf
Se estiver seguindo um tutorial, você pode copiar o código de exemplo em cada seção ou etapa.
Copie o código de exemplo no
main.tf
recém-criado.Opcionalmente, copie o código do GitHub. Isso é recomendado quando o snippet do Terraform faz parte de uma solução completa.
- Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
- Salve suas 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
Aplicar as alterações
- Revise a configuração e verifique se os recursos que o Terraform irá criar ou atualizar correspondem às suas expectativas:
terraform plan
Faça correções na configuração conforme necessário.
- Aplique a configuração do Terraform executando o seguinte comando e digitando
yes
no prompt:terraform apply
Aguarde até que o Terraform exiba a mensagem "Aplicação concluída!".
- Abra seu Google Cloud projeto para visualizar os resultados. No Google Cloud console, navegue até seus recursos na interface do usuário para garantir que o Terraform os criou ou atualizou.
Excluir as alterações
Para excluir suas alterações, faça o seguinte:
- Para desabilitar a proteção contra exclusão, no seu arquivo de configuração do Terraform defina o argumento
deletion_protection
comofalse
.deletion_protection = "false"
- Aplique a configuração atualizada do Terraform executando o seguinte comando e digitando
yes
no prompt:terraform apply
Remova os recursos aplicados anteriormente com sua configuração do Terraform executando o seguinte comando e digitando
yes
no prompt:terraform destroy
REST v1
Antes de usar qualquer um dos dados solicitados, faça as seguintes substituições:
- PROJECT_ID : o ID ou número do projeto do Google Cloud projeto 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.
- ZONE_NAME : Opcional. O nome da zona primária da instância de destino. Use-o se desejar que a instância de destino esteja em uma zona primária diferente da instância do Cloud SQL que você está clonando. Para uma instância regional, essa zona substitui a zona primária, mas a zona secundária permanece a mesma da instância de origem.
- SECONDARY_ZONE_NAME : Opcional. O nome da zona secundária para a instância de destino. Use esta opção para especificar uma zona secundária diferente para a instância regional do Cloud SQL que você deseja clonar.
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", "preferredZone": "ZONE_NAME", "preferredSecondaryZone": "SECONDARY_ZONE_NAME" } }
Para enviar sua solicitação, expanda uma destas opções:
Você deve receber uma resposta JSON semelhante à seguinte:
Se você estiver usando os parâmetros preferredZone
e preferredSecondaryZone
, as seguintes condições se aplicarão:
- Tanto a zona primária quanto a secundária devem ser zonas válidas.
- Ambas as zonas devem pertencer à mesma região que a instância de origem.
- As zonas primária e secundária devem ser diferentes.
- Para instâncias zonais, não é possível usar o parâmetro
preferredSecondaryZone
. Se o fizer, o processo de clonagem da instância falhará. - Se você não especificar valores para os parâmetros
preferredZone
oupreferredSecondaryZone
, a instância clonada terá as mesmas zonas primária e secundária que a instância de origem.
Para usar o método de API instances.clone
, você precisa ter a permissão cloudsql.instances.clone
. Para obter mais informações sobre as permissões necessárias para usar métodos de API, consulte Permissões do Cloud SQL .
REST v1beta4
Antes de usar qualquer um dos dados solicitados, faça as seguintes substituições:
- PROJECT_ID : o ID ou número do projeto do Google Cloud projeto 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.
- ZONE_NAME : Opcional. O nome da zona primária da instância de destino. Use-o se desejar que a instância de destino esteja em uma zona primária diferente da instância do Cloud SQL que você está clonando. Para uma instância regional, essa zona substitui a zona primária, mas a zona secundária permanece a mesma da instância de origem.
- SECONDARY_ZONE_NAME : Opcional. O nome da zona secundária para a instância de destino. Use esta opção para especificar uma zona secundária diferente para a instância regional do Cloud SQL que você deseja clonar.
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", "preferredZone": "ZONE_NAME", "preferredSecondaryZone": "SECONDARY_ZONE_NAME" } }
Para enviar sua solicitação, expanda uma destas opções:
Você deve receber uma resposta JSON semelhante à seguinte:
Se você estiver usando os parâmetros preferredZone
e preferredSecondaryZone
, as seguintes condições se aplicarão:
- Tanto a zona primária quanto a secundária devem ser zonas válidas.
- Ambas as zonas devem pertencer à mesma região que a instância de origem.
- As zonas primária e secundária devem ser diferentes.
- Para instâncias zonais, não é possível usar o parâmetro
preferredSecondaryZone
. Se o fizer, o processo de clonagem da instância falhará. - Se você não especificar valores para os parâmetros
preferredZone
oupreferredSecondaryZone
, a instância clonada terá as mesmas zonas primária e secundária que a instância de origem.
Para usar o método de API instances.clone
, você precisa ter a permissão cloudsql.instances.clone
. Para obter mais informações sobre as permissões necessárias para usar métodos de API, consulte Permissões do Cloud SQL .
Clonar uma instância que usa um endereço IP interno
Se a sua instância do Cloud SQL usar um endereço IP interno, você poderá 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, opcionalmente especificando o intervalo de IP alocado que você deseja usar:
gcloud sql instances clone SOURCE_INSTANCE_NAME TARGET_INSTANCE_NAME \ --allocated-ip-range-name ALLOCATED_IP_RANGE_NAME
A conta de usuário ou serviço que executa o comando gcloud sql instances clone
precisa ter a permissão cloudsql.instances.clone
. Para obter mais informações sobre as permissões necessárias para executar comandos da CLI do gcloud , consulte Permissões do Cloud SQL .
REST v1
Clone a instância, opcionalmente especificando o intervalo de IP alocado que você deseja usar:
Antes de usar qualquer um dos dados solicitados, faça as seguintes substituições:
- 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 sua solicitação, expanda uma destas opções:
Você deve receber uma resposta JSON semelhante à seguinte:
A conta de usuário ou serviço que utiliza o método de API instances.clone
deve ter a permissão cloudsql.instances.clone
. Para obter mais informações sobre as permissões necessárias para usar métodos de API, consulte Permissões do Cloud SQL .
REST v1beta4
Clone a instância, opcionalmente especificando o intervalo de IP alocado que você deseja usar:
Antes de usar qualquer um dos dados solicitados, faça as seguintes substituições:
- 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 sua solicitação, expanda uma destas opções:
Você deve receber uma resposta JSON semelhante à seguinte:
A conta de usuário ou serviço que utiliza o método de API instances.clone
deve ter a permissão cloudsql.instances.clone
. Para obter mais informações sobre as permissões necessárias para usar métodos de API, consulte Permissões do Cloud SQL .
Se você não especificar um intervalo de IP alocado, o seguinte comportamento será aplicado:
- Se a instância de origem foi criada com um intervalo especificado, a instância clonada será criada no mesmo intervalo.
- Se a instância de origem não foi criada com um intervalo especificado, a instância clonada será criada em um intervalo aleatório.
Solução de problemas
Emitir | Solução de problemas |
---|---|
A clonagem falha com o erro constraints/sql.restrictAuthorizedNetworks . | A operação de clonagem é bloqueada pela configuração Authorized Networks . Authorized Networks são configuradas para endereços IP públicos na seção Conectividade do Google Cloud console, e a clonagem não é permitida devido a considerações de segurança . Remova todas as entradas de |
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 Google Cloud console para clonar uma instância com um endereço IP privado, mas você não especificou o intervalo de IPs alocado que deseja 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 |