Esta página explica a clonagem e descreve como clonar uma instância.
Vista 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. | 
| As cópias de segurança são copiadas para a nova instância? | Não. A nova instância cria novas cópias de segurança automáticas. As cópias de segurança manuais não são copiadas 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 definições, como as sinalizações da base de dados, as opções de conetividade, o tipo de máquina e as definições de armazenamento e memória. | 
| As réplicas são copiadas para a nova instância? | Não. Tem de criar novas réplicas para a nova instância. | 
| Podes clonar uma réplica? | Não. Não pode clonar uma réplica. | 
| Pode criar um clone a partir de um ponto anterior no tempo? | Sim. A recuperação pontual usa a clonagem para restaurar uma instância a partir de um ponto anterior no tempo. Isto ajuda a recuperar a base de dados de um evento destrutivo. | 
| As definições de manutenção da instância de origem são copiadas automaticamente para a instância clonada? | Não. Tem de configurar as definições de manutenção para a instância clonada. | 
| É possível clonar uma instância quando a zona da instância não está disponível? | Sim. Se clonar uma instância zonal, pode especificar uma zona principal diferente para a instância. Se clonar uma instância de alta disponibilidade (regional), pode especificar zonas primárias e secundárias diferentes para a instância. | 
| Posso clonar uma base de dados para outro projeto? | Não. Não pode clonar uma base de dados para outro projeto. | 
| Pode clonar uma instância que já foi um clone? | Sim. Pode clonar uma instância que foi clonada a partir de outra instância. | 
| Os utilizadores da base de dados são copiados para a nova instância? | Sim, os utilizadores da base de dados são copiados para a nova instância. As palavras-passe destes utilizadores também são copiadas para que não tenham de ser recriadas. | 
Clone uma instância
Pode clonar uma instância do Cloud SQL através da Google Cloud consola, da CLI gcloud, do Terraform ou da API.
Consola
- 
Na Google Cloud consola, aceda à página Instâncias do Cloud SQL. 
- Encontre a linha da instância a clonar.
- 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 a opção Clonar o estado atual da instância
   selecionada.
     É apresentada novamente a 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 clonar.
- DESTINATION_INSTANCE_NAME: o nome da instância clonada.
- PROJECT_ID: o ID ou o número do projeto do projeto Google Cloud que contém as instâncias de origem e destino.
- ZONE_NAME: opcional. O nome da zona principal da instância de destino. Use esta opção se quiser que a instância de destino esteja numa zona principal diferente da instância do Cloud SQL que está a clonar. Para uma instância regional, esta zona substitui a zona principal, mas a zona secundária permanece igual à 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 quer clonar.
Se estiver a usar os parâmetros --preferred-zone e --preferred-secondary-zone, aplicam-se as seguintes condições:
- As zonas principal e secundária têm de ser zonas válidas.
- Ambas as zonas têm de pertencer à mesma região que a instância de origem.
- As zonas primária e secundária têm de ser diferentes.
- Para instâncias zonais, não pode usar o parâmetro --preferred-secondary-zone. Se o fizer, o processo de clonagem da instância falha.
- Se não especificar valores para os parâmetros --preferred-zoneou--preferred-secondary-zone, a instância clonada tem as mesmas zonas principal e secundária que a instância de origem.
Para executar o comando gcloud sql instances clone, tem de ter a autorização cloudsql.instances.clone. Para mais informações sobre as autorizações necessárias para executar comandos da CLI gcloud, consulte o artigo Autorizaçõ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 num Google Cloud projeto, conclua os passos nas secções seguintes.
Prepare o Cloud Shell
- Inicie o Cloud Shell.
- 
    Defina o Google Cloud projeto predefinido onde quer aplicar as suas configurações do Terraform. Só tem de executar este comando uma vez por projeto e pode executá-lo em qualquer diretório. export GOOGLE_CLOUD_PROJECT=PROJECT_ID As variáveis de ambiente são substituídas se definir valores explícitos no ficheiro de configuração do Terraform. 
Prepare o diretório
Cada ficheiro de configuração do Terraform tem de ter o seu próprio diretório (também denominado módulo raiz).
- 
    No Cloud Shell, crie um diretório e um novo ficheiro nesse diretório. O nome do ficheiro tem de ter a extensão .tf, por exemplo,main.tf. Neste tutorial, o ficheiro é denominadomain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf 
- 
    Se estiver a seguir um tutorial, pode copiar o código de exemplo em cada secção ou passo. Copie o exemplo de código para o ficheiro main.tfcriado recentemente.Opcionalmente, copie o código do GitHub. Isto é recomendado quando o fragmento do Terraform faz parte de uma solução completa. 
- Reveja e modifique os parâmetros de exemplo para aplicar ao seu ambiente.
- Guarde as alterações.
- 
    Inicialize o Terraform. Só tem de fazer isto uma vez por diretório.
    terraform init Opcionalmente, para usar a versão mais recente do fornecedor Google, inclua a opção -upgrade:terraform init -upgrade 
Aplique as alterações
- 
    Reveja a configuração e verifique se os recursos que o Terraform vai criar ou
    atualizar correspondem às suas expetativas:
    terraform plan Faça correções à configuração conforme necessário. 
- 
    Aplique a configuração do Terraform executando o seguinte comando e introduzindo yesno comando:terraform apply Aguarde até que o Terraform apresente a mensagem "Apply complete!" (Aplicação concluída!). 
- Abra o seu Google Cloud projeto para ver os resultados. Na Google Cloud consola, navegue para os seus recursos na IU para se certificar de que o Terraform os criou ou atualizou.
Eliminar as alterações
Para eliminar as alterações, faça o seguinte:
- Para desativar a proteção contra eliminação, no ficheiro de configuração do Terraform, defina o argumento deletion_protectioncomofalse.deletion_protection = "false" 
- Aplique a configuração do Terraform atualizada executando o seguinte comando e
            introduzindo yesno comando:terraform apply 
- 
             Remova os recursos aplicados anteriormente com a sua configuração do Terraform executando o seguinte comando e introduzindo yesno comando:terraform destroy 
REST v1
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID ou o número do projeto do projeto Google Cloud que contém as instâncias de origem e destino.
- SOURCE_INSTANCE_NAME: o nome da instância do Cloud SQL a clonar.
- DESTINATION_INSTANCE_NAME: o nome da instância clonada.
- ZONE_NAME: opcional. O nome da zona principal da instância de destino. Use esta opção se quiser que a instância de destino esteja numa zona principal diferente da instância do Cloud SQL que está a clonar. Para uma instância regional, esta zona substitui a zona principal, mas a zona secundária permanece igual à 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 quer clonar.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone
Corpo JSON do pedido:
{
  "cloneContext":
  {
    "destinationInstanceName": "DESTINATION_INSTANCE_NAME",
    "preferredZone": "ZONE_NAME",
    "preferredSecondaryZone": "SECONDARY_ZONE_NAME"
  }
}
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
Se estiver a usar os parâmetros preferredZone e preferredSecondaryZone, aplicam-se as seguintes condições:
- As zonas principal e secundária têm de ser zonas válidas.
- Ambas as zonas têm de pertencer à mesma região que a instância de origem.
- As zonas primária e secundária têm de ser diferentes.
- Para instâncias zonais, não pode usar o parâmetro preferredSecondaryZone. Se o fizer, o processo de clonagem da instância falha.
- Se não especificar valores para os parâmetros preferredZoneoupreferredSecondaryZone, a instância clonada tem as mesmas zonas principal e secundária que a instância de origem.
Para usar o método da API instances.clone, tem de ter a autorização cloudsql.instances.clone. Para mais informações sobre as autorizações necessárias para usar métodos da API, consulte o artigo Autorizações do Cloud SQL.
REST v1beta4
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID ou o número do projeto do projeto Google Cloud que contém as instâncias de origem e destino.
- SOURCE_INSTANCE_NAME: o nome da instância do Cloud SQL a clonar.
- DESTINATION_INSTANCE_NAME: o nome da instância clonada.
- ZONE_NAME: opcional. O nome da zona principal da instância de destino. Use esta opção se quiser que a instância de destino esteja numa zona principal diferente da instância do Cloud SQL que está a clonar. Para uma instância regional, esta zona substitui a zona principal, mas a zona secundária permanece igual à 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 quer clonar.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone
Corpo JSON do pedido:
{
  "cloneContext":
  {
    "destinationInstanceName": "DESTINATION_INSTANCE_NAME",
    "preferredZone": "ZONE_NAME",
    "preferredSecondaryZone": "SECONDARY_ZONE_NAME"
  }
}
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
Se estiver a usar os parâmetros preferredZone e preferredSecondaryZone, aplicam-se as seguintes condições:
- As zonas principal e secundária têm de ser zonas válidas.
- Ambas as zonas têm de pertencer à mesma região que a instância de origem.
- As zonas primária e secundária têm de ser diferentes.
- Para instâncias zonais, não pode usar o parâmetro preferredSecondaryZone. Se o fizer, o processo de clonagem da instância falha.
- Se não especificar valores para os parâmetros preferredZoneoupreferredSecondaryZone, a instância clonada tem as mesmas zonas principal e secundária que a instância de origem.
Para usar o método da API instances.clone, tem de ter a autorização cloudsql.instances.clone. Para mais informações sobre as autorizações necessárias para usar métodos da API, consulte o artigo Autorizações do Cloud SQL.
Clone uma instância que usa um endereço IP interno
Se a sua instância do Cloud SQL usar um endereço IP interno, pode especificar opcionalmente
um
intervalo de IPs alocado
para o novo endereço IP do clone. Por exemplo, google-managed-services-default.
gcloud
Clone a instância e, opcionalmente, especifique o intervalo de IPs atribuído que quer usar:
gcloud sql instances clone SOURCE_INSTANCE_NAME TARGET_INSTANCE_NAME \ --allocated-ip-range-name ALLOCATED_IP_RANGE_NAME
O utilizador ou a conta de serviço que está a executar o comando gcloud sql instances clone
tem de ter a autorização cloudsql.instances.clone. Para mais informações sobre as autorizações necessárias para executar comandos da CLI gcloud, consulte o artigo Autorizações do Cloud SQL.
REST v1
Clone a instância e, opcionalmente, especifique o intervalo de IPs atribuído que quer usar:
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- source-instance-id: o ID da instância da origem
- target-instance-id: o ID da instância de destino
- allocated-ip-range-name: o nome de um intervalo de IP atribuído
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone
Corpo JSON do pedido:
{
  "cloneContext":
  {
    "destinationInstanceName": "target-instance-id",
    "allocatedIpRange": "allocated-ip-range-name"
  }
}
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
O utilizador ou a conta de serviço que está a usar o método da API instances.clone tem de ter a autorização cloudsql.instances.clone. Para mais informações sobre as autorizações necessárias para usar métodos da API, consulte o artigo Autorizações do Cloud SQL.
REST v1beta4
Clone a instância e, opcionalmente, especifique o intervalo de IPs atribuído que quer usar:
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- source-instance-id: o ID da instância da origem
- target-instance-id: o ID da instância de destino
- allocated-ip-range-name: o nome de um intervalo de IP atribuído
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/source-instance-id/clone
Corpo JSON do pedido:
{
  "cloneContext":
  {
    "destinationInstanceName": "target-instance-id",
    "allocatedIpRange": "allocated-ip-range-name"
  }
}
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
O utilizador ou a conta de serviço que está a usar o método da API instances.clone tem de ter a autorização cloudsql.instances.clone. Para mais informações sobre as autorizações necessárias para usar métodos da API, consulte o artigo Autorizações do Cloud SQL.
Se não especificar um intervalo de IPs atribuído, é aplicado o seguinte comportamento:
- Se a instância de origem tiver sido criada com um intervalo especificado, a instância clonada é criada no mesmo intervalo.
- Se a instância de origem não tiver sido criada com um intervalo especificado, a instância clonada é criada num intervalo aleatório.
Resolver problemas
| Problema | Resolução de problemas | 
|---|---|
| A clonagem falha com o erro constraints/sql.restrictAuthorizedNetworks. | A operação de clonagem está bloqueada pela configuração Authorized Networks.Authorized Networksestão configurados para endereços IP públicos na secção Conetividade
da consola, e a clonagem não é permitida devido a
considerações de segurança. Google CloudRemova 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]. | Está a tentar usar a Google Cloud consola para clonar uma instância com um endereço IP privado, mas não especificou o intervalo de IP alocado que quer usar e a instância de origem não foi criada com o intervalo especificado. Como resultado, a instância clonada é criada num intervalo aleatório. Use  |