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 quando a zona para ela não está disponível? Sim. Se você clonar uma instância zonal, poderá especificar uma zona primária diferente para ela. Se você clonar uma instância de alta disponibilidade (regional), poderá especificar zonas primárias e secundárias diferentes para ela.
É possível clonar um banco de dados para outro projeto? Não. Você não pode clonar um banco de dados para outro projeto.
É 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, 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, então não é necessário recriá-las.

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             = "postgres-instance-clone-name"
  region           = "us-central1"
  database_version = "POSTGRES_12"
  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 .

,

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 quando a zona para ela não está disponível? Sim. Se você clonar uma instância zonal, poderá especificar uma zona primária diferente para ela. Se você clonar uma instância de alta disponibilidade (regional), poderá especificar zonas primárias e secundárias diferentes para ela.
É possível clonar um banco de dados para outro projeto? Não. Você não pode clonar um banco de dados para outro projeto.
É 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, 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, então não é necessário recriá-las.

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             = "postgres-instance-clone-name"
  region           = "us-central1"
  database_version = "POSTGRES_12"
  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 .

,

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 quando a zona para ela não está disponível? Sim. Se você clonar uma instância zonal, poderá especificar uma zona primária diferente para ela. Se você clonar uma instância de alta disponibilidade (regional), poderá especificar zonas primárias e secundárias diferentes para ela.
É possível clonar um banco de dados para outro projeto? Não. Você não pode clonar um banco de dados para outro projeto.
É 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, 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, então não é necessário recriá-las.

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             = "postgres-instance-clone-name"
  region           = "us-central1"
  database_version = "POSTGRES_12"
  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 .

,

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 quando a zona para ela não está disponível? Sim. Se você clonar uma instância zonal, poderá especificar uma zona primária diferente para ela. Se você clonar uma instância de alta disponibilidade (regional), poderá especificar zonas primárias e secundárias diferentes para ela.
É possível clonar um banco de dados para outro projeto? Não. Você não pode clonar um banco de dados para outro projeto.
É 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, 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, então não é necessário recriá-las.

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             = "postgres-instance-clone-name"
  region           = "us-central1"
  database_version = "POSTGRES_12"
  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 .