# MANUAL TÉCNICO - BACKUP E RESTORE MANUAL (DUMP)

**Código:** ITGSUP 0021/26 | **Classificação:** RESTRITO
**Responsável:** João Pedro Toledo Gonçalves | **Data:** {{DATA_ATUAL}}

## 1. HISTÓRICO DE REVISÃO

| Data | Versão | Descrição | Autor |
| :--- | :--- | :--- | :--- |
| {{DATA_ATUAL}} | 1.0 | Criação Inicial | João Pedro Toledo Gonçalves |

## 2. OBJETIVO
Executar backups pontuais (Dumps) e restaurações de emergência em bancos de dados, incluindo a exportação segura para servidores remotos (Storage/NFS).

## 3. PRÉ-REQUISITOS
*   [ ] Espaço em disco suficiente para o dump.
*   [ ] Senhas de administração dos bancos.

---

## 4. POSTGRESQL (pg_dump)

### Backup (Exportar)
```bash
# Backup de UM banco
pg_dump -U usuario_admin -h localhost nome_do_banco > backup.sql

# Backup de TODOS os bancos (Cluster)
pg_dumpall -U usuario_admin > backup_full.sql
```

### Restore (Importar)
```bash
# Se o banco ja existe (Sobrescreve estruturas)
psql -U usuario_admin -d nome_do_banco < backup.sql

# Se foi gerado com pg_dumpall
psql -U usuario_admin -f backup_full.sql postgres
```

---

## 5. MYSQL / MARIADB (mysqldump)

### Backup (Exportar)
```bash
# Backup de UM banco
mysqldump -u root -p nome_do_banco > backup.sql

# Backup de VÁRIOS bancos
mysqldump -u root -p --databases db1 db2 > backup_db1_db2.sql
```

### Restore (Importar)
```bash
# O banco DEVE existir antes (mysqladmin create nome_do_banco)
mysql -u root -p nome_do_banco < backup.sql
```

---

## 6. REDIS (RDB Snapshot)

O Redis trabalha em memória, mas salva arquivos `.rdb`.

### Backup (Snapshot Force)
1.  Acesse o CLI: `redis-cli`
2.  Execute: `BGSAVE` (Salva em background).
3.  Verifique o diretório de dados (geralmente `/var/lib/redis/dump.rdb`).
4.  Copie o arquivo `dump.rdb` para local seguro.

### Restore
1.  Pare o serviço: `systemctl stop redis`
2.  Substitua o arquivo `dump.rdb` pelo seu backup.
3.  Garanta as permissões: `chown redis:redis dump.rdb`
4.  Inicie o serviço: `systemctl start redis`

---

## 7. EXPORTAÇÃO REMOTA (OFF-SITE)

> ⚠️ **IMPORTANTE:** Nunca deixe o backup apenas no próprio servidor. Mova-o.

### Opção A: Cópia via SCP (Windows/Linux Seguro)
Envia o arquivo para outro servidor via SSH.
```bash
scp backup.sql usuario@192.168.1.50:/home/usuario/backups/
```

### Opção B: Montagem NFS (Storage Linux)
Se você tem um storage montado em `/mnt/backup`:
```bash
# Gera direto na pasta remota
pg_dump -U postgres meu_banco > /mnt/backup/pg_$(date +%F).sql
```

### Opção C: Montagem SMB/CIFS (Windows Share)
Para enviar para uma pasta do Windows Server.
1.  Instale: `apt install cifs-utils`
2.  Monte:
    ```bash
    mount -t cifs -o username=user,password=pass //servidor/share /mnt/windows
    ```
3.  Copie: `cp backup.sql /mnt/windows/`

## 8. VALIDAÇÃO FINAL
- [ ] O arquivo `.sql` foi gerado e tem tamanho maior que 0?
- [ ] O arquivo está salvo em local externo (SCP/NFS)?
