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-zone
ou--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.tf
criado 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 as correções necessárias à configuração.
-
Aplique a configuração do Terraform executando o seguinte comando e introduzindo
yes
no 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_protection
comofalse
.deletion_protection = "false"
- Aplique a configuração do Terraform atualizada executando o seguinte comando e
introduzindo
yes
no comando:terraform apply
-
Remova os recursos aplicados anteriormente com a sua configuração do Terraform executando o seguinte comando e introduzindo
yes
no 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
preferredZone
oupreferredSecondaryZone
, 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
preferredZone
oupreferredSecondaryZone
, 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 Networks estã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 Cloud
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]. |
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 |