Instâncias de clone, Instâncias de clone, Instâncias de clone, Instâncias de clone

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

  1. No Google Cloud console, acesse a página Instâncias do Cloud SQL .

    Acesse Instâncias do Cloud SQL

  2. Localize a linha da instância a ser clonada.
  3. Na coluna Ações , clique no menu Mais ações .
  4. Clique em Criar clone .
  5. 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

resource "google_sql_database_instance" "clone" {
  name             = "mysql-instance-clone-name"
  region           = "us-central1"
  database_version = "MYSQL_8_0"
  clone {
    source_instance_name = google_sql_database_instance.source.id
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

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

  1. Inicie o Cloud Shell .
  2. 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 ).

  1. 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 de main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 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.

  3. Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
  4. Salve suas alterações.
  5. 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

  1. 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.

  2. 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!".

  3. 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:

  1. Para desabilitar a proteção contra exclusão, no seu arquivo de configuração do Terraform defina o argumento deletion_protection como false .
    deletion_protection =  "false"
  2. Aplique a configuração atualizada do Terraform executando o seguinte comando e digitando yes no prompt:
    terraform apply
  1. 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 ou preferredSecondaryZone , 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 ou preferredSecondaryZone , 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 Authorized Networks da instância do Cloud SQL, se possível. Caso contrário, crie uma réplica sem nenhuma entrada Authorized Networks .

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 gcloud para clonar a instância e fornecer um valor para
Parâmetro --allocated-ip-range-name . Para obter mais informações, consulte Clonando uma instância com um IP privado .