Ir para o conteúdo

DevOps - Backup e Recovery

Este documento descreve a estratégia de backup e recuperação de dados do Billings Ease.

Índice

  1. Visão Geral
  2. Backup do Banco de Dados
  3. Backup de Arquivos
  4. Recovery
  5. Testes de Backup

Visão Geral

O Billings Ease utiliza backups automáticos do Railway para o banco de dados e Cloudflare R2 para arquivos.

Estratégia: - Banco de Dados: Backups automáticos diários (Railway) - Arquivos: Replicação automática (Cloudflare R2) - Retenção: 7 dias (banco), indefinido (arquivos)


Backup do Banco de Dados

Railway PostgreSQL

Backups Automáticos: - Railway faz backups automáticos diários - Retenção: 7 dias - Armazenamento: Railway infrastructure

Acesso: 1. Railway Dashboard 2. Selecionar serviço PostgreSQL 3. Aba "Backups" 4. Ver backups disponíveis


Backup Manual

Via Railway CLI:

railway db:backup

Via pg_dump:

# Obter connection string do Railway
pg_dump $DATABASE_URL > backup_$(date +%Y%m%d).sql

Via Script Go:

// Criar script de backup
// Executar periodicamente


Restaurar Backup

Via Railway Dashboard: 1. Selecionar backup 2. Clicar em "Restore" 3. Confirmar restauração

Via psql:

psql $DATABASE_URL < backup_20240115.sql


Backup de Arquivos

Cloudflare R2

Replicação: - R2 replica automaticamente entre zonas - Durabilidade: 99.999999999% (11 nines) - Sem necessidade de backup manual

Versionamento: - Habilitar versionamento no bucket (futuro) - Manter versões anteriores de arquivos


Backup Manual (Opcional)

Exportar arquivos:

# Usar AWS CLI (compatível com R2)
aws s3 sync s3://bucket-name ./backup/ \
  --endpoint-url https://account-id.r2.cloudflarestorage.com


Recovery

Recuperação do Banco de Dados

Cenário 1: Restaurar backup recente 1. Acessar Railway Dashboard 2. Selecionar backup 3. Restaurar

Cenário 2: Restaurar backup local

# 1. Baixar backup
# 2. Restaurar
psql $DATABASE_URL < backup.sql

Cenário 3: Recuperação de dados específicos

-- Restaurar tabela específica
pg_restore -t users backup.dump


Recuperação de Arquivos

Cloudflare R2: - Arquivos estão replicados - Recuperação automática em caso de falha - Sem ação manual necessária


Disaster Recovery

Plano: 1. Identificar falha - Monitoramento detecta problema - Alertas acionados

  1. Avaliar impacto
  2. Dados afetados
  3. Tempo de inatividade aceitável

  4. Executar recovery

  5. Restaurar backup mais recente
  6. Verificar integridade

  7. Validar

  8. Testar funcionalidades críticas
  9. Verificar dados

  10. Comunicar

  11. Notificar usuários (se necessário)
  12. Documentar incidente

Testes de Backup

Teste Mensal

Procedimento: 1. Criar ambiente de teste 2. Restaurar backup 3. Validar dados 4. Testar funcionalidades 5. Documentar resultados


Validação de Backup

Checklist: - [ ] Backup foi criado - [ ] Tamanho do backup é razoável - [ ] Backup pode ser restaurado - [ ] Dados estão íntegros após restore - [ ] Todas as tabelas presentes - [ ] Relacionamentos preservados


Retenção

Banco de Dados

Railway: - 7 dias de backups automáticos - Backups manuais: conforme necessário

Recomendação: - Manter backups semanais por 1 mês - Manter backups mensais por 1 ano


Arquivos

Cloudflare R2: - Retenção indefinida (até deletar manualmente) - Versionamento (futuro) manterá versões anteriores


Segurança

Criptografia

Backups: - Backups do Railway são criptografados - Transferência via TLS

Armazenamento: - Backups em infraestrutura segura - Acesso restrito


Acesso

Permissões: - Apenas administradores podem restaurar backups - Logs de acesso mantidos


Automatização

Scripts de Backup

Backup diário (futuro):

#!/bin/bash
# Backup diário
DATE=$(date +%Y%m%d)
pg_dump $DATABASE_URL > backups/backup_$DATE.sql
# Upload para storage externo

Cron job:

# Executar diariamente às 2h
0 2 * * * /path/to/backup.sh


Referências