Agendando backups

Configure e gerencie agendamentos automatizados de backup do PostgreSQL para o IBM Bob, incluindo expressões cron, políticas de retenção, suspensão e retomada, e monitoramento.

Os backups agendados automatizam a proteção do banco de dados e reduzem o risco de perda de dados. O IBM Bob usa CronJobs do Kubernetes para executar backups de acordo com o agendamento definido na configuração de backup.

Nota:

Por padrão, os backups são executados usando o Tempo Universal Coordenado (UTC).

Configurando agendamentos de backup

Configure um agendamento de backup atualizando o campo schedule no ConfigMap de configuração de backup. O valor usa a sintaxe cron padrão e determina a frequência de execução dos jobs de backup.

apiVersion: v1
kind: ConfigMap
metadata:
  name: bob-postgres-backup-config
  namespace: <bob-instance-namespace>
  labels:
    bob.ibm.com/backup-config: "true"
data:
  config.yaml: |
    # Backup schedule in cron format (UTC timezone)
    schedule: "0 2 * * *"  # Daily at 2:00 AM UTC

    # ... other configuration ...

Entendendo a sintaxe cron

Os agendamentos cron consistem em cinco campos que definem a frequência de execução.

CampoValoresCaracteres especiais
Minuto0–59*, ,, -, /
Hora0–23*, ,, -, /
Dia1–31*, ,, -, /
Mês1–12*, ,, -, /
Dia da semana0–7 (0 e 7 representam domingo)*, ,, -, /

Selecione um agendamento que esteja alinhado com seus objetivos de ponto de recuperação (RPOs) e requisitos de negócios.

Considerações sobre agendamento

Fuso horário (UTC)

Todos os agendamentos são executados no fuso horário UTC. Planeje os agendamentos de acordo com o horário UTC, não com o seu horário local. Por exemplo:

  • 0 2 * * * = 2:00 AM UTC = 4:00 AM CEST (verão) ou 3:00 AM CET (inverno)

Backups simultâneos

Todos os clusters configurados fazem backup simultaneamente no mesmo agendamento. Isso multiplica a carga de I/O de armazenamento e compartilha a largura de banda de rede entre todos os backups. Para escalonar backups em ambientes com recursos limitados, crie múltiplos ConfigMaps com agendamentos diferentes:

# ConfigMap 1: bob-db at 2 AM
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: bob-db-backup-config
  labels:
    bob.ibm.com/backup-config: "true"
data:
  config.yaml: |
    schedule: "0 2 * * *"
    clusters:
      - name: bob-db
        database: bob
        secretName: bob-db-app
---
# ConfigMap 2: keycloak-db at 3 AM
apiVersion: v1
kind: ConfigMap
metadata:
  name: keycloak-db-backup-config
  labels:
    bob.ibm.com/backup-config: "true"
data:
  config.yaml: |
    schedule: "0 3 * * *"
    clusters:
      - name: bob-keycloak-db
        database: app
        secretName: bob-keycloak-db-app

Duração do backup

Considere o tamanho do banco de dados ao agendar para evitar sobreposição entre execuções de backup.

Tamanho do banco de dadosDuração esperada
Menos de 1 GB1–5 minutos
1–5 GB5–15 minutos
5–20 GB15–45 minutos
20–50 GB45–120 minutos
Mais de 50 GB2+ horas

Horários de baixo uso

Agende backups durante períodos de baixo uso. Evite horários de pico de negócios e monitore o desempenho do banco de dados durante os backups.

Alterando o agendamento

Para atualizar o agendamento de backup, edite o ConfigMap de backup:

oc edit configmap bob-postgres-backup-config -n <bob-instance-namespace>

Atualize o campo schedule e salve. O controller detecta automaticamente a mudança e atualiza os CronJobs.

Verifique o agendamento atualizado:

oc get cronjob bob-db-backup-cronjob -n <bob-instance-namespace> -o jsonpath='{.spec.schedule}'

Suspendendo e retomando backups

Se você precisar pausar os backups durante a manutenção sem remover a configuração de backup, suspenda os backups no recurso personalizado Bob:

oc patch bob bob-instance -n <bob-instance-namespace> --type=merge \
  -p '{"spec":{"postgresBackup":{"suspend":true}}}'

A suspensão dos backups preserva todos os recursos de backup existentes enquanto impede a execução de novos jobs.

Verifique se os CronJobs estão suspensos:

oc get cronjobs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup
# The SUSPEND column should show "True"

Retome os backups após a conclusão da manutenção:

oc patch bob bob-instance -n <bob-instance-namespace> --type=merge \
  -p '{"spec":{"postgresBackup":{"suspend":false}}}'

Monitorando a atividade de backup

O monitoramento regular ajuda a garantir que os jobs de backup continuem sendo executados com sucesso e que os objetivos de recuperação possam ser atendidos.

# List recent backup jobs
oc get jobs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup \
  --sort-by=.metadata.creationTimestamp

# Check CronJob status
oc get cronjobs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup

# View last scheduled time
oc get cronjob bob-db-backup-cronjob -n <bob-instance-namespace> \
  -o jsonpath='{.status.lastScheduleTime}'

# View backup logs
oc logs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup --tail=100

Investigue falhas prontamente para evitar lacunas na cobertura de backup.

Gerenciando a retenção de backups

As políticas de retenção determinam quantas cópias de backup são armazenadas antes que os backups mais antigos sejam removidos automaticamente.

data:
  config.yaml: |
    # Number of backups to retain per cluster
    retention: 7  # Keep last 7 backups

Valores de retenção mais altos melhoram a flexibilidade de recuperação, mas requerem armazenamento adicional.

Comportamento da retenção:

  • Os backups mais antigos são excluídos automaticamente após cada backup bem-sucedido.
  • A retenção é por cluster — cada cluster mantém sua própria contagem.
  • A limpeza ocorre imediatamente após a criação do backup.

Por exemplo, com retention: 7:

  • Dias 1–7: Acumulam 7 backups.
  • Dia 8: Cria um novo backup, exclui o backup do dia 1.
  • Dia 9: Cria um novo backup, exclui o backup do dia 2.

Acionando um backup manual

Para acionar manualmente um backup fora do agendamento:

# Create a job from the CronJob
oc create job --from=cronjob/bob-db-backup-cronjob \
  manual-backup-$(date +%s) -n <bob-instance-namespace>

# Monitor the job
oc get jobs -n <bob-instance-namespace> -l app.kubernetes.io/component=postgres-backup

# View job logs
oc logs -n <bob-instance-namespace> job/manual-backup-<timestamp>

Boas práticas

  • Agende backups em horários de baixo uso (normalmente entre 2h e 4h no horário local).
  • Use um agendamento consistente para previsibilidade.
  • Lembre-se do fuso horário UTC ao definir os agendamentos.
  • Escalone os backups se os recursos forem limitados.
  • Monitore o sucesso dos backups regularmente.
  • Teste os procedimentos de restauração mensalmente.
  • Documente o agendamento e a justificativa.
  • Configure alertas para falhas de backup.
Como está este tópico?