Salvaguarda
Visão geral
| Dado | Mecanismo | Frequência | Retenção | Localização |
|---|---|---|---|---|
Base de produção (pch_sig) | replicação PostgreSQL contínua para o servidor de recuperação | contínua | — | axone-dr |
| Base de produção | instantâneos cifrados restic no servidor de recuperação | diária | conforme a política restic | axone-dr |
Registos de produção (volume loki_data) | rsync incremental + restic | diária | o Loki guarda um ano | axone-dr |
| Base de pré-produção | pg_dump comprimido (~/scripts/backup-database.sh) | 02:00 | 30 dias | ~/backups no 220 |
| GitLab de pré-produção | gitlab-backup create + arquivo de /etc/gitlab (~/scripts/backup-gitlab.sh) | 02:30 | 14 dias | ~/backups/gitlab no 220 |
| Código-fonte | repositórios Git | a cada push | — | gitlab.com e gitlab.ucp-pch.org |
O servidor de recuperação (axone-dr) é administrado pela Axone; liga-se à produção através do contentor pch_pg_dr_proxy.
Pontos em aberto
- Os ficheiros carregados (volume
backend_uploads: fotos, anexos, documentos): a sua cópia fora do local está por confirmar com a equipa que gere o servidor de recuperação. - As salvaguardas do servidor 220 (pré-produção, GitLab) ficam nesse servidor: ainda não são copiadas para fora do local.
Salvaguarda manual da base
Antes de uma operação arriscada (migração pesada, importação em massa):
# Produção
docker exec pch_postgres sh -c 'pg_dump -U "$POSTGRES_USER" -d "$POSTGRES_DB"' | gzip > ~/backups/pch_sig_$(date +%Y%m%d_%H%M%S).sql.gz
# Pré-produção (nome de contentor com prefixo)
PG=$(docker ps --filter name=pch_postgres --format '{{.Names}}' | grep -v exporter | head -1)
docker exec "$PG" sh -c 'pg_dump -U "$POSTGRES_USER" -d "$POSTGRES_DB"' | gzip > ~/backups/pch_sig_$(date +%Y%m%d_%H%M%S).sql.gz
Verificar que o ficheiro não está vazio (ls -lh ~/backups | tail -3).
Salvaguarda dos ficheiros carregados
docker run --rm -v pch-sig_backend_uploads:/data:ro -v ~/backups:/out alpine \
tar -czf /out/uploads_$(date +%Y%m%d).tar.gz -C /data .
(O nome exato do volume é dado por docker volume ls | grep uploads.)
Salvaguardas da pré-produção
0 2 * * * /home/ubuntu/scripts/backup-database.sh >> /home/ubuntu/backups/cron.log 2>&1
30 2 * * * /home/ubuntu/scripts/backup-gitlab.sh >> /home/ubuntu/backups/cron.log 2>&1
A salvaguarda do GitLab inclui dois ficheiros por dia, ambos necessários a um restauro: o arquivo da aplicação (*_gitlab_backup.tar) e a configuração (gitlab-config_*.tar.gz, que contém gitlab-secrets.json). Detalhes em docs/GITLAB_SERVEUR.md.
Verificar
ls -lh ~/backups | tail -5 # dumps recentes e não vazios
tail -20 ~/backups/backup.log # registo do script da pré-produção
tail -20 ~/backups/gitlab-backup.log
Uma salvaguarda só é fiável se o seu restauro tiver sido testado: ver Restauro.
O que nunca se deve perder
~/pch-sig/.env.prode~/pch-sig/backend/.env(segredos),backend/config/jwt/(chaves JWT): o seu conteúdo está no gestor de segredos.~/smtp-relay/.env(relé SMTP),~/kobo-install/(configuração Kobo),~/gitlab(configuração GitLab).