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.
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.
| Campo | Valores | Caracteres especiais |
|---|---|---|
| Minuto | 0–59 | *, ,, -, / |
| Hora | 0–23 | *, ,, -, / |
| Dia | 1–31 | *, ,, -, / |
| Mês | 1–12 | *, ,, -, / |
| Dia da semana | 0–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-appDuraçã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 dados | Duração esperada |
|---|---|
| Menos de 1 GB | 1–5 minutos |
| 1–5 GB | 5–15 minutos |
| 5–20 GB | 15–45 minutos |
| 20–50 GB | 45–120 minutos |
| Mais de 50 GB | 2+ 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=100Investigue 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 backupsValores 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.