# Backup e Restore — Fase 20.5

Procedimento de backup do banco de dados e restore para a Lotérica Premiada.

## Backup

### MySQL (mysqldump)

```bash
# Backup completo
mysqldump -h MYSQL_HOST -u MYSQL_USER -p MYSQL_DB > backup_$(date +%Y%m%d_%H%M%S).sql

# Exemplo Docker
docker compose exec db mysqldump -uroot -proot loteri31_premiada > backup_$(date +%Y%m%d_%H%M%S).sql

# Backup compactado
docker compose exec db mysqldump -uroot -proot loteri31_premiada | gzip > backup_$(date +%Y%m%d_%H%M%S).sql.gz
```

### Cron (backup automático)

```cron
# Diário às 3h
0 3 * * * cd /caminho/projeto && docker compose exec -T db mysqldump -uroot -pROOT loteri31_premiada | gzip > /backups/loterica_$(date +\%Y\%m\%d).sql.gz
```

### Retenção sugerida

- Diário: últimos 7 dias
- Semanal: últimos 4 semanas
- Mensal: últimos 12 meses

## Restore

### Restore a partir de .sql

```bash
# Restore
mysql -h MYSQL_HOST -u MYSQL_USER -p MYSQL_DB < backup_20250308_030000.sql

# Exemplo Docker
docker compose exec -T db mysql -uroot -proot loteri31_premiada < backup_20250308_030000.sql

# A partir de .gz
gunzip -c backup_20250308_030000.sql.gz | docker compose exec -T db mysql -uroot -proot loteri31_premiada
```

### Pré-requisitos

1. Parar aplicação ou colocar em manutenção
2. Verificar espaço em disco
3. Fazer backup do estado atual antes de restore (se necessário rollback)

### Pós-restore

1. Verificar integridade: `SELECT COUNT(*) FROM cliente;` etc.
2. Testar login, carrinho, finalização
3. Reiniciar aplicação

## Testes periódicos

Executar restore em ambiente de staging a cada trimestre para validar procedimento e integridade dos backups.

## Referências

- docs/v2/staging-e2e.md
- ideias-melhorias.md §11
