Impedir a exclusão de uma instância

Veja nesta página como proteger instâncias do Cloud SQL contra exclusão acidental.

Visão geral

A proteção contra exclusão de instâncias permite evitar a remoção acidental de instâncias novas e atuais. Com a proteção contra exclusão de instâncias, é possível proteger instâncias importantes para seus aplicativos e serviços.

É possível definir a opção de proteção contra exclusão ao criar uma instância. Além disso, é possível definir essa opção em uma instância atual. Nos dois casos, a exclusão é feita no nível da instância. Por padrão, a opção de proteção contra exclusão fica desativada, a menos que você use o console do Google Cloud ou o Terraform para criar uma instância.

Ao clonar uma instância, a nova instância recebe a opção de proteção contra exclusão (ativada ou desativada) da instância de origem.

Planejamento para proteção contra exclusão

Se você planeja criar uma instância, decida se quer proteger a nova instância contra exclusão acidental. Por exemplo, uma instância crítica precisa ser protegida dessa forma.

Verifique também se existem instâncias existentes que você quer proteger contra a exclusão acidental. Se você tiver várias instâncias a serem protegidas, defina a opção em cada uma delas.

Como considerar a proteção contra exclusão para réplicas de leitura

Quando você cria uma réplica de leitura, ela não recebe uma configuração de proteção de exclusão da instância principal. Essa configuração permanece independente. No entanto, é possível ativar a proteção contra exclusão em uma réplica de leitura nova ou atual.

Para réplicas de leitura do Cloud SQL, a opção de proteção contra exclusão funciona da mesma maneira que para instâncias do Cloud SQL.

Como confirmar as permissões ou papéis necessários

Para definir a opção de proteção contra exclusão, a conta de serviço da instância do Cloud SQL precisa ter determinadas permissões ou papéis do IAM.

Permissões ou papéis para criar uma instância

Como no caso de operações relacionadas, a opção de proteção contra exclusão exige a permissão cloudsql.instances.create ou o papel cloudsql.admin. Assim, ao criar uma instância, nenhuma permissão extra é necessária para ativar a proteção contra exclusão.

Permissões ou papéis para editar uma instância

Como no caso de operações relacionadas, as mudanças de proteção contra exclusão exigem a permissão cloudsql.instances.update ou o papel cloudsql.editor. Assim, quando você editar uma instância para proteção contra exclusão, nenhuma outra permissão será necessária.

Como planejar a exclusão da instância

Se você planeja excluir uma instância, primeiro faça o seguinte:

  • confirme se é seguro excluir a instância
  • confirme que a proteção contra exclusão está desativada. Se necessário, edite a instância para desativar a proteção contra exclusão

Limitações da proteção contra exclusão

A proteção contra exclusão em uma instância não impede:

  • a interrupção da instância
  • o reinício da instância
  • a edição da instância
  • Como excluir um backup
  • a suspensão da instância devido a problemas de faturamento
  • a exclusão da instância suspensa devido a problemas de faturamento
  • a exclusão da instância devido a uma exclusão de projeto

a configuração da proteção contra exclusão em uma nova instância

Veja a seguir as maneiras de definir a opção de proteção contra exclusão. Por padrão, a opção de proteção contra exclusão fica desativada, a menos que você use o console do Google Cloud ou o Terraform para criar uma instância.

Se a proteção contra exclusão estiver ativada, ocorrerá uma falha ao tentar excluir a instância.

Console

  1. Siga as etapas para começar a criar uma instância.
  2. Em Personalizar sua instância, clique na seta suspensa Mostrar opções de configuração.
  3. Em Proteção de dados, confirme se a caixa de seleção Ativar proteção contra exclusão está marcada.
  4. Conforme necessário para sua instância, selecione outras opções de configuração.
  5. Clique em Criar instância.

gcloud

Para definir a proteção contra exclusão durante a criação da instância, use um comando semelhante ao seguinte:

gcloud sql instances create [INSTANCE_NAME] \
    --deletion-protection

REST v1

Para definir a proteção contra exclusão durante a criação da instância, especifique true no campo deletionProtection.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância escolhida
  • database-version: a versão do banco de dados.
  • region: a região escolhida
  • machine-type: o tipo de máquina escolhido

Método HTTP e URL:

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances

Corpo JSON da solicitação:

{
  "name": "instance-id",
  "region": "region",
  "databaseVersion": "database-version",
  "settings": {
    "tier": "machine-type",
    "deletionProtectionEnabled": true
  }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2022-05-24T15:34:10.929Z",
  "operationType": "CREATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

REST v1beta4

Para definir a proteção contra exclusão durante a criação da instância, especifique true no campo deletionProtection.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância escolhida
  • database-version: a versão do banco de dados.
  • region: a região escolhida
  • machine-type: o tipo de máquina escolhido

Método HTTP e URL:

POST https://sqladmin.googleapis.com/v1beta4/projects/project-id/instances

Corpo JSON da solicitação:

{
  "name": "instance-id",
  "region": "region",
  "databaseVersion": "database-version",
  "settings": {
    "tier": "machine-type",
    "deletionProtectionEnabled": true
  }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2022-05-26T15:37:10.929Z",
  "operationType": "CREATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}
Para ver como a solicitação de API REST de base é criada nesta tarefa, consulte a página APIs Explorer em instances:insert.

Como configurar ou remover a proteção contra exclusão em uma instância atual

Veja a seguir as maneiras de editar uma instância para proteção contra exclusão. Se você ativar a opção, uma tentativa subsequente de excluir a instância falhará.

Console

  1. Siga as etapas para começar a editar uma instância.
  2. Depois de clicar em Editar, encontre a seção Personalizar sua instância.
  3. Em Proteção de dados, marque ou desmarque a caixa de seleção Ativar proteção contra exclusão.
  4. Se for necessário para sua instância, edite outras opções de configuração.
  5. Clique em Save.

gcloud

Para ativar a proteção contra exclusão ao atualizar uma instância, use um comando semelhante ao seguinte:

gcloud sql instances patch [INSTANCE_NAME] \
    --deletion-protection

Para desativar a proteção contra exclusão ao atualizar uma instância, use um comando semelhante ao seguinte:

gcloud sql instances patch [INSTANCE_NAME] \
    --no-deletion-protection

REST v1

Para definir a proteção contra exclusão ao atualizar uma instância, especifique true no campo deletionProtection. Para remover a proteção contra exclusão, especifique false nesse campo.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância escolhida

Método HTTP e URL:

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

Corpo JSON da solicitação:

{
  "settings": {
    "deletionProtectionEnabled": true
  }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2022-06-1T03:42:12.281Z",
  "operationType": "CREATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

REST v1beta4

Para definir a proteção contra exclusão ao atualizar uma instância, especifique true no campo deletionProtection. Para remover a proteção contra exclusão, especifique false nesse campo.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • project-id: o ID do projeto
  • instance-id: o ID da instância escolhida

Método HTTP e URL:

PATCH https://sqladmin.googleapis.com/v1beta4/projects/project-id/instances/instance-id

Corpo JSON da solicitação:

{
  "settings": {
    "deletionProtectionEnabled": true
  }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2022-06-1T03:32:12.281Z",
  "operationType": "UPDATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}
Para ver como a solicitação da API REST subjacente (em inglês) é criada nesta tarefa, consulte APIs Explorer na página "instances:patch" (em inglês).