Fazer backup de instâncias do Cloud SQL em um backup vault

Nesta página, descrevemos como fazer backup de instâncias do Cloud SQL em um backup vault, que oferece imutabilidade e retenção obrigatória.

No console do Google Cloud , é possível fazer backup de instâncias do Cloud SQL em um backup vault aplicando planos de backup. É possível fazer backup de uma das duas maneiras a seguir. Os dois métodos permitem armazenar os backups com segurança em um backup vault, oferecendo uma maneira confiável de recuperar as instâncias do Cloud SQL em caso de perda de dados ou outros eventos inesperados.

  • Backups programados: faça backup automático de instâncias do Cloud SQL em intervalos específicos, como diários, semanais, mensais ou anuais.
  • Backups sob demanda. É possível criar backups sob demanda sempre que necessário. Os backups sob demanda são úteis para criar backups antes de fazer mudanças significativas nos bancos de dados ou para proteção de dados ad hoc.

Antes de começar

  1. Ative a API Backup e DR onde as instâncias do Cloud SQL estão localizadas.

    Ativar a API

  2. Crie um backup vault.

  3. Crie um plano de backup.

  4. Atribua papéis e permissões do IAM ao usuário de backup.

  5. Conceder acesso ao backup vault no projeto do Cloud SQL.

  6. Configure a Análise de Observabilidade no bucket para monitorar os jobs de backup do Backup e DR.

  7. Para instâncias com CMEK: se a instância de origem do Cloud SQL estiver protegida com uma chave de criptografia gerenciada pelo cliente (CMEK), você precisará conceder o papel roles/cloudkms.cryptoKeyEncrypterDecrypter do Identity and Access Management ao agente de serviço de backup e DR. Essa permissão é necessária na chave do Cloud Key Management Service usada pela instância de origem do Cloud SQL.

    O agente de serviço de Backup e DR está no projeto em que o backup vault está localizado. Conceda esse papel à conta de serviço antes de tentar proteger as instâncias do Cloud SQL ativadas para CMEK.

Papéis e permissões do IAM para o usuário de backup

Para receber as permissões necessárias para configurar backups programados ou executar backups sob demanda, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto do backup vault:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esses papéis predefinidos contêm as permissões necessárias para configurar backups programados ou executar backups sob demanda. Para acessar as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As seguintes permissões são necessárias para configurar backups programados ou executar backups sob demanda:

  • backupdr.backupPlans.list
  • backupdr.backupPlanAssociations.createForCloudSqlInstance
  • backupdr.backupPlanAssociations.fetchForCloudSqlInstance
  • backupdr.backupPlanAssociations.updateForCloudSqlInstance
  • backupdr.backupPlanAssociations.list
  • backupdr.backupPlanAssociations.getForCloudSqlInstance
  • backupdr.backupPlanAssociations.triggerBackupForCloudSqlInstance
  • backupdr.backupPlanAssociations.deleteForCloudSqlInstance
  • backupdr.backupPlans.useForCloudSqlInstance
  • backupdr.locations.list
  • backupdr.operations.get
  • cloudasset.assets.searchAllResources

Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.

Permissões dinâmicas necessárias para cada chamada de API

A tabela a seguir lista as permissões dinâmicas necessárias para cada chamada de API:

Recurso Ação a ser realizada no recurso Permissões necessárias para cada chamada de API Projeto ao qual atribuir permissão
Backup vault Criar backup vault backupdr.backupVaults.create Projeto do administrador
Excluir backup vault backupdr.backupVaults.delete Projeto do administrador
Atualizar backup vault backupdr.backupVaults.update Projeto do administrador
Listar backup vaults backupdr.backupVaults.list Projeto do administrador
Acessar backup vault backupdr.backupVaults.get Projeto do administrador
Plano de backup Criar plano de backup backupdr.backupPlans.create Projeto do administrador
Excluir plano de backup backupdr.backupPlans.delete Projeto do administrador
Receber plano de backup backupdr.backupPlans.get Projeto do administrador
Listar planos de backup backupdr.backupPlans.list Projeto do administrador
Atualizar plano de backup backupdr.backupPlans.update Projeto do administrador
Receber revisão do plano de backup backupdr.backupPlanRevisions.get Projeto do administrador
Listar revisões do plano de backup backupdr.backupPlanRevisions.list Projeto do administrador
Criar revisão do plano de backup backupdrproducer.backupPlanRevisions.create Projeto do administrador
Excluir revisão do plano de backup backupdrproducer.backupPlanRevisions.delete Projeto do administrador
Associações de planos de backup Criar associação do plano de backup cloudsql.instances.updateBackupDrConfig
backupdr.backupPlanAssociations.createForCloudSqlInstance
backupdr.backupPlans.useForCloudSqlInstance
Projeto de carga de trabalho
Projeto de carga de trabalho
Projeto de administrador
Excluir associação do plano de backup backupdr.backupPlanAssociations.deleteForCloudSqlInstance
cloudsql.instances.updateBackupDrConfig
Projeto de carga de trabalho
Projeto de carga de trabalho
Acionar um backup on demand na associação do plano de backup backupdr.backupPlanAssociations.triggerBackupForCloudSqlInstance Projeto de carga de trabalho
Receber associação do plano de backup backupdr.backupPlanAssociations.getForCloudSqlInstance Projeto de carga de trabalho
Listar associações de planos de backup backupdr.backupPlanAssociations.list Projeto de carga de trabalho
Buscar associações de planos de backup backupdr.backupPlanAssociations.fetchForCloudSqlInstance Projeto de carga de trabalho
Mudar associações de planos de backup backupdr.backupPlanAssociations.updateForCloudSqlInstance Projeto de carga de trabalho
Fonte de dados Receber fonte de dados backupdr.bvdataSources.get Projeto do administrador
Listar fonte de dados backupdr.backupPlanAssociations.list Projeto do administrador
Restauração de recuperação pontual backupdr.bvdataSources.useReadOnlyForCloudSqlInstance Projeto do administrador
Backups Acessar backup backupdr.bvbackups.get Projeto do administrador
Listar backups backupdr.bvbackups.list Projeto do administrador
Buscar backups backupdr.bvbackups.fetchForCloudSqlInstance Projeto do administrador
Excluir backup backupdr.bvbackups.delete Projeto do administrador
Restaurar backup backupdr.bvbackups.useReadOnlyForCloudSqlInstance Projeto do administrador
Referências de fontes de dados Receber referência da fonte de dados backupdr.dataSourceReferences.getForCloudSqlInstance Projeto de carga de trabalho
Listar referências de fontes de dados backupdr.dataSourceReferences.list Projeto de carga de trabalho
Buscar referências de fontes de dados backupdr.dataSourceReferences.fetchForCloudSqlInstance Projeto de carga de trabalho
Operações Listar operações backupdr.operations.list Projeto respectivo
Acessar operações backupdr.operations.get Projeto respectivo

Conceder acesso ao backup vault no projeto do Cloud SQL

Para fazer backup de uma instância do Cloud SQL em um projeto diferente daquele em que o backup vault foi criado, é necessário conceder o papel do IAM de Operador de backup e DR do Cloud SQL (roles/backupdr.cloudSqlOperator) ao agente de serviço do backup vault no projeto do Cloud SQL. Se o projeto do backup vault em que os backups serão armazenados for diferente do projeto do Cloud SQL, atribua o papel ao agente de serviço do backup vault no projeto do Cloud SQL.

Para fazer backup de uma instância do Cloud SQL no mesmo projeto em que o backup vault foi criado, não é necessário conceder papéis.

Para saber como conceder papéis ao agente de serviço do backup vault no projeto que você quer incluir no backup, consulte Conceder um papel ao agente de serviço.

Configurar um backup programado

Use as instruções a seguir para configurar um backup programado para instâncias do Cloud SQL.

Console

  1. No console do Google Cloud , acesse a página Backups protegidos.

    Acessar backups em vault

  2. Clique em Programar backup.

  3. Na lista Tipo de recurso, selecione Cloud SQL.

  4. Na lista Projeto, selecione um projeto em que a instância do Cloud SQL está localizada.

  5. Na lista Região, selecione a região em que as instâncias estão localizadas.

  6. Na lista Recursos, clique em Procurar. Escolha a instância do Cloud SQL que você quer salvar em backup e clique em Concluído.

  7. Clique em Continuar.

  8. Na lista Plano de backup, clique em Selecionar.

  9. Escolha um plano de backup para proteger as instâncias do Cloud SQL.

  10. Clique em Concluído.

  11. Revise os detalhes do backup e clique em Programar.

gcloud

  1. Crie um plano de backup e uma instância do Cloud SQL.

  2. Configure um backup programado usando o comando gcloud backup-dr backup-plan-associations create:

      gcloud backup-dr backup-plan-associations create BACKUP_PLAN_ASSOCIATION_NAME \
          --location=CSQL_REGION \
          --project=CSQL_PROJECT_ID \
          --resource=projects/CSQL_PROJECT_ID/instances/CSQL_INSTANCE_ID \
          --resource-type=sqladmin.googleapis.com/Instance \
          --backup-plan=projects/PROJECT_ID/locations/LOCATION/backupPlans/BACKUP_PLAN
    

    Substitua:

    • BACKUP_PLAN_ASSOCIATION_NAME: o nome da associação do plano de backup.

    • CSQL_REGION: a região em que as instâncias do Cloud SQL estão localizadas.

    • CSQL_PROJECT_ID: o nome do projeto em que as instâncias do Cloud SQL estão localizadas.

    • CSQL_INSTANCE_ID: o ID da instância do Cloud SQL.

    • PROJECT_ID: o nome do projeto em que os planos de backup existem.

    • LOCATION: o local da instância.

    • BACKUP_PLAN: o nome do plano de backup.

Terraform

É possível usar um recurso do Terraform para configurar um backup programado.


# Before creating a backup plan association, you need to create backup plan (google_backup_dr_backup_plan)
# and Cloud SQL Instance (google_sql_database_instance).
resource "google_backup_dr_backup_plan_association" "csql_association" {
  provider                   = google-beta
  location                   = "us-central1"
  backup_plan_association_id = "my-csql-bpa"
  resource                   = "projects/${google_sql_database_instance.default.project}/instances/${google_sql_database_instance.default.name}"
  resource_type              = "sqladmin.googleapis.com/Instance"
  backup_plan                = google_backup_dr_backup_plan.csql_default.name
}

Mudar o plano de backup associado a uma instância do Cloud SQL

É possível trocar o plano de backup aplicado a uma instância do Cloud SQL por outro plano de backup. O plano de backup que você quer usar precisa atender aos seguintes critérios:

  • O plano de backup está no mesmo backup vault.

  • O plano de backup está na mesma região que a instância do Cloud SQL.

Use as instruções a seguir para mudar o plano de backup associado a uma instância do Cloud SQL.

Console

  1. No console do Google Cloud , acesse a página Backups protegidos do Backup e DR.

    Acessar backups em vault

    A página Backups em vault lista apenas as instâncias que têm (ou tinham) planos de backup aplicados ou os backups armazenados em um backup vault em um projeto.

  2. Selecione a fonte de dados que vai receber um plano diferente. Na página de detalhes do backup ou no menu , selecione Alterar plano de backup. A janela Selecionar um plano de backup lista apenas os planos de backup válidos para essa instância.

  3. Selecione um plano de backup e clique em Aplicar.

gcloud

  • Mudar o plano de backup atribuído.

      gcloud backup-dr backup-plan-associations update BACKUP_PLAN_ASSOCIATION_NAME \
      --workload-project=INSTANCE_PROJECT_ID \
      --location=INSTANCE_REGION \
      --backup-plan=BACKUP_PLAN \
      --project=SELECTED_BACKUP_PLAN_PROJECT_ID
    

    Substitua:

    • BACKUP_PLAN_ASSOCIATION_NAME: o nome do recurso de associação do plano de backup.

    • INSTANCE_PROJECT_ID: o ID do projeto da instância do Cloud SQL.

    • INSTANCE_REGION: o local da instância do Cloud SQL.

    • BACKUP_PLAN: o nome do plano de backup para o qual você está mudando.

    • SELECTED_BACKUP_PLAN_PROJECT_ID: o ID do projeto do plano de backup selecionado.

Listar instâncias com backups programados

Use as instruções a seguir para listar as instâncias do Cloud SQL que têm backups programados.

Console

  1. No console do Google Cloud , acesse a página Backups protegidos.

    Acessar backups em vault

  2. Na parte de cima da tabela, selecione Filtrar tabela > Tipo de recurso. Selecione Cloud SQL. Isso limita a exibição apenas às instâncias do Cloud SQL com planos de backup aplicados e backups armazenados em um backup vault em um projeto.

gcloud

Liste as instâncias do Cloud SQL que têm backups programados usando o comando gcloud alpha backup-dr backup-plan-associations fetch-for-resource-type:

  gcloud alpha backup-dr backup-plan-associations fetch-for-resource-type sqladmin.googleapis.com/Instance \
  --location=LOCATION \
  --project=PROJECT_ID

Substitua:

  • LOCATION: o local dos backups programados.

  • PROJECT_ID: o nome do projeto em que as instâncias do Cloud SQL estão localizadas.

Backups sob demanda

É possível iniciar um backup on demand para uma instância do Cloud SQL com um plano de backup acionando a regra de backup de sua escolha para ser executada imediatamente. Os backups sob demanda geralmente capturam apenas os dados alterados desde o último backup incremental.

Ao criar um backup sob demanda, é possível escolher uma regra do plano de backup associado à instância do Cloud SQL. Essa regra determina quando o backup on demand é excluído. Verifique o status do job de backup na página Jobs. Para mais informações, consulte Monitorar jobs de backup e restauração no console do Google Cloud .

Criar um backup on demand

Use as instruções a seguir para criar um backup on demand.

Console

  1. No console do Google Cloud , acesse a página Backups protegidos.

    Acessar backups em vault

    A página Backups em vault lista apenas os recursos de dados que têm planos de backup aplicados e os backups armazenados em um backup vault em um projeto.

  2. Selecione o recurso para fazer backup. No menu ou na página de detalhes do recurso, selecione Criar backup sob demanda.

  3. Na janela Criar um backup sob demanda, selecione uma regra de backup para usar e clique em Criar.

  4. Para conferir o status do job de backup sob demanda, clique em Notificações.

gcloud

  1. Criar um backup on demand. Inicie um backup on demand usando uma associação de plano de backup atual. Especifique um ID de regra para determinar o período de validade desse backup único e sob demanda:

    gcloud backup-dr backup-plan-associations trigger-backup BACKUP_PLAN_ASSOCIATION_NAME \
    --backup-rule-id=RULE_ID \
    --project=PROJECT_ID \
    --location=LOCATION \
    [--no-async]
    

    Substitua:

    • BACKUP_PLAN_ASSOCIATION_NAME: o nome da associação do plano de backup.

      .
    • RULE_ID: o nome da regra de backup que você quer associar para executar backups on demand.

    • PROJECT_ID: o nome do projeto.

    • LOCATION: o local dos backups programados.

Remover a proteção de uma instância do Cloud SQL

Para remover a proteção de uma instância do Cloud SQL, remova o plano de backup aplicado a ela. A remoção de um plano de backup de uma instância do Cloud SQL não exclui os backups criados enquanto o plano estava em uso. Você ainda pode acessar e gerenciar esses backups até que eles expirem.

Use as instruções a seguir para remover a proteção de uma instância do Cloud SQL:

Console

  1. No console do Google Cloud , acesse a página Backups protegidos.

    Acessar backups em vault

  2. Clique no nome do banco de dados de que você quer remover um plano de backup.

  3. Selecione Remover plano de backup.

gcloud

Desproteger uma instância do Cloud SQL.

  gcloud backup-dr backup-plan-associations delete BACKUP_PLAN_ASSOCIATION_NAME \
  --project=PROJECT_ID \
  --location=LOCATION

Substitua:

  • BACKUP_PLAN_ASSOCIATION_NAME: o nome da associação do plano de backup que você quer excluir.

  • PROJECT_ID: o nome do projeto.

  • LOCATION: o local do backup programado.

Limitações

Para instâncias do Cloud SQL criptografadas com CMEK, o Backup e DR valida as permissões de forma proativa. Se o agente de serviço do Backup e DR do projeto do backup vault não tiver o papel roles/cloudkms.cryptoKeyEncrypterDecrypter necessário na chave do KMS da instância de origem, a criação da associação do plano de backup vai falhar. Verifique se as permissões do IAM necessárias estão em vigor antes de associar um plano de backup.

A seguir