Nesta página, mostramos como fazer backup e restaurar seus dados do AlloyDB Omni
usando o operador AlloyDB Omni no Kubernetes. Isso requer conhecimento
básico sobre como atualizar um cluster do Kubernetes usando arquivos de manifesto e a
ferramenta de linha de comando kubectl
. Para mais informações sobre como instalar e executar o AlloyDB Omni em um cluster do Kubernetes, consulte Instalar o AlloyDB no Kubernetes.
Para ativar o backup e a recuperação contínuos do AlloyDB Omni, crie um plano de backup para cada cluster de banco de dados. Os backups são feitos com base nas programações definidas no recurso backupPlan
. Se não houver uma programação de backup definida no plano, os backups contínuos serão feitos diariamente por padrão. É possível restaurar ou clonar backups de qualquer carimbo de data/hora na janela de recuperação com granularidade de segundos.
Para informações sobre como fazer backup e restaurar dados do AlloyDB Omni em implantações que não são do Kubernetes, consulte Configurar o Barman para o AlloyDB Omni e Configurar o pgBackRest para o AlloyDB Omni.
Ativar e programar backups
Os backups contínuos são ativados quando você cria um recurso de plano de backup para o cluster do banco de dados. É necessário criar um recurso backupPlan
para cada cluster de banco de dados para ativar o backup contínuo. Esse recurso de plano de backup
define os seguintes parâmetros:
O local em que o operador do AlloyDB Omni armazena backups. Isso pode ser local para seu cluster do Kubernetes ou para um bucket do Cloud Storage.
Uma opção para definir várias programações de backup que criam automaticamente backups
full
,incremental
edifferential
. É possível pausar essa programação a qualquer momento, inclusive ao definir o plano de backup pela primeira vez. Se um plano de backup estiver pausado, os backups programados não serão criados, mas você ainda poderá usá-lo para criar backups manualmente.Se nenhuma programação de backup for especificada, o padrão será "0 0 * * *", que faz um backup completo diário à meia-noite, no horário local.
Um período de armazenamento para backups armazenados. Isso pode levar de um dia a 90 dias. O valor padrão é 14.
O cluster de banco de dados pode ter vários planos de backup, cada um com o próprio nome
e configuração. Se você criar vários recursos backupPlan
com programações de backup diferentes para um cluster de banco de dados, será necessário definir um local de backup
exclusivo para cada recurso.
Criar um plano para armazenar backups localmente
Para ativar os backups armazenados localmente, aplique o seguinte manifesto:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: BackupPlan
metadata:
name: BACKUP_PLAN_NAME
namespace: NAMESPACE
spec:
dbclusterRef: DB_CLUSTER_NAME
backupSchedules:
full: "FULL_CRON_SCHEDULE"
differential: "DIFF_CRON_SCHEDULE"
incremental: "INCR_CRON_SCHEDULE"
backupRetainDays: RETENTION_DAYS
paused: PAUSED_BOOLEAN
Substitua:
BACKUP_PLAN_NAME
: um nome para esse recurso de plano de backup, por exemplo,backup-plan-1
.NAMESPACE
: o namespace do Kubernetes para esse plano de backup. Ele precisa corresponder ao namespace do cluster do banco de dados.DB_CLUSTER_NAME
: o nome do cluster de banco de dados, que você atribuiu ao criar o cluster.FULL_CRON_SCHEDULE
: uma programação de backup para criar um backup completo, contendo todos os dados, expressos no formatocron
. Por exemplo, defina como "0 0 * * 0" para fazer um backup completo às 00h de todos os domingos.DIFF_CRON_SCHEDULE
: uma programação de backup para criar backups que são inicialmente backups completos. Os backups subsequentes são diferenciais, com base nas mudanças intermediárias nos dados, expressas no formatocron
. Por exemplo, defina "0 22 * * 3" para fazer um backup diferencial às 22h todas as quartas-feiras.INCR_CRON_SCHEDULE
: uma programação de backup para criar backups que incluem dados alterados desde o último backup completo, diferencial ou incremental. Ele é expresso no formatocron
. Por exemplo, defina como "0 21 * * *" para fazer um backup incremental às 21h todos os dias.RETENTION_DAYS
: o número de dias em que o operador AlloyDB Omni retém esse backup. Ele precisa ser um número inteiro entre1
e90
. O valor padrão é14
.PAUSED_BOOLEAN
: especifica se o plano de backup está pausado ou não. Informe um dos seguintes valores:true
: os backups são pausados e nenhum backup programado é criado.false
: o operador AlloyDB Omni cria backups de acordo com a programação especificada porcronSchedule
. Esse é o valor padrão, se não for definido explicitamente comotrue
.
O valor padrão é
false
.
Criar um plano que armazena backups no Cloud Storage
Para ativar os backups armazenados no Cloud Storage, siga estas etapas:
Criar um bucket do Cloud Storage Anote o nome atribuído a esse bucket, porque você vai precisar dele em uma etapa posterior.
Crie uma conta de serviço para adicionar backups ao bucket.
Conceda o papel do Identity and Access Management
storage.objectAdmin
à conta de serviço.Crie uma chave para a conta de serviço. Isso faz o download da chave privada para o ambiente local.
Renomeie o arquivo de chave transferido por download para
key.json
.Crie um secret do Kubernetes que contenha a chave privada:
kubectl create secret generic SECRET_NAME --from-file=KEY_PATH -n NAMESPACE
Substitua:
SECRET_NAME
: o nome do secret do Kubernetes que você está criando, por exemplo,gcs-key
.KEY_PATH
: o caminho do sistema de arquivos local para o arquivokey.json
que você fez o download nas etapas anteriores.NAMESPACE
: o namespace do cluster do banco de dados.
Aplique o seguinte manifesto:
apiVersion: alloydbomni.dbadmin.goog/v1 kind: BackupPlan metadata: name: BACKUP_PLAN_NAME namespace: NAMESPACE spec: dbclusterRef: DB_CLUSTER_NAME backupSchedules: full: "FULL_CRON_SCHEDULE" differential: "DIFF_CRON_SCHEDULE" incremental: "INCR_CRON_SCHEDULE" backupRetainDays: RETENTION_DAYS paused: PAUSED_BOOLEAN backupLocation: type: GCS gcsOptions: bucket: BUCKET_URL key: BACKUP_PATH secretRef: name: SECRET_NAME namespace: NAMESPACE
Substitua:
BACKUP_PLAN_NAME
: um nome para esse recurso de plano de backup, por exemplo,backup-plan-1
.NAMESPACE
: o namespace do Kubernetes para esse plano de backup. Ele precisa corresponder ao namespace do cluster do banco de dados.DB_CLUSTER_NAME
: o nome do cluster de banco de dados, que você atribuiu ao criar o cluster.FULL_CRON_SCHEDULE
: uma programação de backup para criar um backup completo, contendo todos os dados, expressos no formatocron
. Por exemplo, defina como "0 0 * * 0" para fazer um backup completo às 00h de todos os domingos.DIFF_CRON_SCHEDULE
: uma programação de backup para criar backups que são inicialmente backups completos. Os backups subsequentes são diferenciais, com base nas mudanças intermediárias nos dados, expressas no formatocron
. Por exemplo, defina "0 22 * * 3" para fazer um backup diferencial às 22h todas as quartas-feiras.INCR_CRON_SCHEDULE
: uma programação de backup para criar backups que incluem dados alterados desde o último backup completo, diferencial ou incremental. Ele é expresso no formatocron
. Por exemplo, defina como "0 21 * * *" para fazer um backup incremental às 21h todos os dias.RETENTION_DAYS
: o número de dias em que o operador AlloyDB Omni retém esse backup. Ele precisa ser um número inteiro entre1
e90
. O valor padrão é14
.PAUSED_BOOLEAN
: especifica se o plano de backup está pausado ou não. Informe um dos seguintes valores:true
: os backups são pausados e nenhum backup programado é criado.false
: o operador AlloyDB Omni cria backups de acordo com a programação especificada porcronSchedule
. Esse é o valor padrão, se não for definido explicitamente comotrue
.
O valor padrão é
false
.
BUCKET_URL
: o nome do bucket do Cloud Storage criado em uma etapa anterior. Esse não é o URL completo do bucket. Não use o prefixogs://
no nome do bucket.BACKUP_PATH
: o caminho do diretório em que o operador do AlloyDB Omni grava backups no bucket do Cloud Storage. O caminho precisa ser absoluto e começar com/
.SECRET_NAME
: o nome escolhido para o secret do Kubernetes criado em uma etapa anterior.
Criar um backup manualmente
É possível criar um recurso de backup manualmente a qualquer momento usando qualquer plano de backup que já tenha sido aplicado a um cluster de banco de dados. O operador do AlloyDB Omni aplica o local de armazenamento e o período de armazenamento do plano de backup escolhido ao novo backup manual.
Para criar um backup manualmente, aplique o seguinte manifesto:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: Backup
metadata:
name: BACKUP_NAME
namespace: NAMESPACE
spec:
dbclusterRef: DB_CLUSTER_NAME
backupPlanRef: BACKUP_PLAN_NAME
manual: true
physicalBackupSpec:
backupType: BACKUP_TYPE
Substitua:
BACKUP_NAME
: um nome para o backup, por exemplo,backup-1
.NAMESPACE
: o namespace do Kubernetes desse restabelecimento. Ele precisa corresponder ao namespace do cluster do banco de dados.BACKUP_PLAN_NAME
: o nome do recurso do plano de backup a que esse backup pertence. Ele precisa corresponder ao nome escolhido ao criar o plano de backup.DB_CLUSTER_NAME
: o nome do cluster do banco de dados, que você atribuiu ao criar o cluster.BACKUP_TYPE
: especifica o tipo de backup manual que você quer criar. Escolha um dos seguintes valores:full
: cria um backup completo, contendo todos os dados.diff
: cria um backup diferencial que depende do último backup completo. Os backups subsequentes são diferenciais, com base nas mudanças intermediárias dos dados.incr
: cria um backup incremental que depende do backup completo ou diferencial anterior para incluir dados que foram alterados desde o último backup completo ou diferencial.
Monitorar e listar backups
Seus planos de backup e backups são todos recursos no cluster do Kubernetes. Para conferir informações sobre eles, use o comando
kubectl
get
.
Conferir o resumo de um plano de backup
Para conferir informações sobre os planos de backup do cluster de banco de dados, execute o seguinte comando:
kubectl get backupplan.alloydbomni.dbadmin.goog -n NAMESPACE
Substitua NAMESPACE
pelo namespace do cluster do banco de dados.
A saída será assim:
NAME PHASE LASTBACKUPTIME NEXTBACKUPTIME
backup-plan-prod Ready 2023-10-26T17:26:43Z 2023-10-27T00:00:00Z
Visualizar uma lista de backups
Para conferir uma lista de backups disponíveis para o cluster do banco de dados, execute o seguinte comando:
kubectl get backup.alloydbomni.dbadmin.goog -n NAMESPACE
Substitua NAMESPACE
pelo namespace do cluster do banco de dados.
A saída será assim:
NAME PHASE COMPLETETIME TYPE
backup-plan-prod-20231026172643 Succeeded 2023-10-26T17:26:53Z full
manual-backup-1 Succeeded 2023-10-26T18:15:27Z full
manual-backup-2 InProgress full
Cada linha na tabela de saída representa um recurso de backup com os seguintes atributos:
- O nome do backup.
- O estado do backup, com
Succeeded
marcando um backup pronto para ser restaurado. - O carimbo de data/hora de criação do backup.
Restaurar a partir de um backup
O AlloyDB permite restaurar backups individuais ou clonar um cluster usando um backup de um momento específico.
Restaurar de um backup nomeado
Para restaurar de um backup, substituindo os dados no cluster de banco de dados pelos dados no backup, siga estas etapas.
Liste todos os backups com a fase
Succeeded
.kubectl get backup.alloydbomni.dbadmin.goog -n NAMESPACE | grep Succeeded
Substitua
NAMESPACE
pelo namespace do cluster do banco de dados.Se pelo menos um candidato de backup válido existir, a saída será semelhante a esta:
backup-plan-prod-20231026172643 Succeeded 2023-10-26T17:26:53Z manual-backup-1 Succeeded 2023-10-26T18:15:27Z
Escolha um dos backups listados na etapa anterior para restaurar. Anote o nome dele, que será usado na próxima etapa.
Aplique o seguinte manifesto:
apiVersion: alloydbomni.dbadmin.goog/v1 kind: Restore metadata: name: RESTORE_NAME namespace: NAMESPACE spec: sourceDBCluster: DB_CLUSTER_NAME backup: BACKUP_NAME
Substitua:
RESTORE_NAME: um nome a ser usado com o recurso de restauração de dados criado por esse manifesto. Por exemplo,
restore-1
.DB_CLUSTER_NAME: o nome do cluster de banco de dados, que você atribuiu ao criar o cluster.
BACKUP_NAME: o nome do backup escolhido na etapa anterior.
Clonar um cluster de um momento específico
O operador do AlloyDB Omni permite clonar os dados do cluster a qualquer momento dentro de uma janela de recuperação. A duração da janela de recuperação é determinada diretamente pelo período de armazenamento.
Por exemplo, se o período de armazenamento estiver definido como 14 dias, não será possível recuperar dados com mais de 14 dias. É possível restaurar para qualquer ponto no tempo dentro do período de recuperação. O operador do AlloyDB Omni retém backups e registros por um dia a mais do que o valor especificado.
Monitore a janela de recuperação para identificar o ponto de restauração:
kubectl get backupplan.alloydbomni.dbadmin.goog BACKUP_NAME -n NAMESPACE -o json | jq .status.recoveryWindow
Confira a seguir um exemplo de resposta:
recoveryWindow: begin: "2024-01-31T02:54:35Z"
O valor do carimbo de data/hora no formato RFC 3339 é usado no recurso de restauração.
Crie e aplique o seguinte manifesto de recursos de restauração:
apiVersion: alloydbomni.dbadmin.goog/v1 kind: Restore metadata: name: RESTORE_NAME namespace: NAMESPACE spec: sourceDBCluster: DB_CLUSTER_NAME pointInTime: "DATE_AND_TIME_STAMP" clonedDBClusterConfig: dbclusterName: NEW_DB_CLUSTER_NAME
Substitua:
RESTORE_NAME: um nome a ser usado com o recurso de restauração de dados criado por esse manifesto, por exemplo,
restore-1
.DB_CLUSTER_NAME: o nome do cluster de banco de dados, que você atribuiu quando o criou.
DATE_AND_TIME_STAMP: o carimbo de data/hora RFC 3339 na granularidade de minutos do backup contínuo que você quer restaurar, por exemplo,
2024-03-05T15:32:10Z
.NEW_DB_CLUSTER_NAME: o nome do novo cluster de banco de dados.
Conferir o status da restauração
Confira o progresso da operação de restauração:
kubectl get restore.alloydbomni.dbadmin.goog -n NAMESPACE
Substitua
NAMESPACE
pelo namespace do cluster do banco de dados.Para executar o comando continuamente, adicione a flag
-Aw
.A saída será assim:
NAME PHASE COMPLETETIME RESTOREDPOINTINTIME restore-1 RestoreInProgress
Quando o valor da coluna
PHASE
na tabela de saída forProvisionSucceeded
, a restauração será concluída.Confira o progresso do cluster de banco de dados restaurado ou clonado que está sendo colocado on-line:
kubectl get dbclusters -A -n NAMESPACE
Substitua
NAMESPACE
pelo namespace do cluster do banco de dados.Para executar o comando continuamente, adicione a flag
-Aw
.A saída será assim:
NAMESPACE NAME PRIMARYENDPOINT PRIMARYPHASE DBCLUSTERPHASE default db-cluster-1 10.128.0.55 Ready DBClusterReady
Quando o valor da coluna
DBCLUSTERPHASE
na tabela de saída forDBClusterReady
, o cluster de banco de dados restaurado ou clonado estará pronto para uso.
Excluir um backup
Normalmente, não é necessário excluir backups manualmente. O operador AlloyDB Omni exclui automaticamente backups mais antigos que o período de armazenamento especificado ao criar um plano de backup.
Se você quiser excluir um backup manualmente, ele precisará atender a estes requisitos:
O backup não é o único armazenado para o plano de backup. O operador AlloyDB Omni exige que pelo menos um backup exista por plano de backup.
O backup não tem outros backups dependentes dele. Por exemplo, um backup completo com backups diferenciais ou incrementais que dependem dele ou um backup incremental com backups diferenciais que dependem dele.
Para excluir um backup, execute o seguinte comando:
kubectl delete backup.alloydbomni.dbadmin.goog/BACKUP_NAME -n NAMESPACE
Substitua:
BACKUP_NAME
: o nome do backup a ser excluído.NAMESPACE
: o namespace do cluster do banco de dados.
Redimensionar um disco de backup
Para redimensionar o disco local que armazena seus backups no cluster do Kubernetes, siga estas etapas:
Atualize o campo
resources.disks
do manifesto do DBCluster da seguinte maneira:spec: primarySpec: resources: disks: - name: BACKUP_DISK size: 10Gi
Substitua
BACKUP_DISK
pelo nome do disco que armazena seus backups.Aplique o manifesto para aplicar a atualização.
O operador AlloyDB Omni aplica as especificações atualizadas ao DBCluster imediatamente.
As restrições a seguir se aplicam à modificação do disco de backup de um cluster de banco de dados em execução:
- Só é possível aumentar o tamanho de um disco se o
storageClass
especificado oferecer suporte à expansão de volume. - Não é possível diminuir o tamanho de um disco.
Atualizar um plano de backup
Cada plano de backup é um recurso do Kubernetes. Para atualizar a configuração, siga um destes procedimentos:
Edite e reaplique o arquivo de manifesto do plano de backup.
Use o comando
kubectl patch
.
Por exemplo, para pausar um plano de backup em execução, mude o atributo paused
do
manifesto para true
e aplique o manifesto novamente.
Excluir um plano de backup
Para excluir um plano de backup e remover todos os recursos de backup dele, execute o seguinte comando:
kubectl delete backupplan.alloydbomni.dbadmin.goog/BACKUP_PLAN_NAME -n NAMESPACE
Substitua:
BACKUP_PLAN_NAME
: o nome do plano de backup a ser excluído.NAMESPACE
: o namespace do cluster do banco de dados.
Para pausar um plano de backup sem excluí-lo, defina o atributo paused
do recurso do plano de backup como true
. Um plano de backup pausado continua armazenando
backups e permite a criação manual.