# MANUAL TÉCNICO - MANUTENÇÃO PREVENTIVA E LOGS DE BANCO **Código:** ITGINF 0022/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 Descrever as rotinas de limpeza de espaço (Vacuum/Optimize), desfragmentação e verificação de logs para evitar paradas por disco cheio ou corrupção. --- ## 3. POSTGRESQL (VACUUM) O Postgres usa MVCC, gerando "tuplas mortas" quando dados são deletados/alterados. ### Manutenção Automática (Autovacuum) Geralmente já vem ativo. Verifique: ```sql SHOW autovacuum; -- Deve ser 'on' ``` ### Manutenção Manual (Recuperar Espaço) Se o banco inchou muito após um DELETÃO em massa. 1. Acesse o `psql`. 2. Rode em horário de baixo pico (Pode travar mesas se usar FULL): ```sql -- Limpa e otimiza estatisticas (Rapido) VACUUM ANALYZE; -- (PERIGOSO) Recria o arquivo do disco para liberar espaço físico. Bloqueia escrita! VACUUM FULL; ``` --- ## 4. MYSQL / MARIADB (OPTIMIZE) Tabelas InnoDB podem ficar fragmentadas. ### Otimizar Tabelas ```sql -- Reconstrói a tabela e indices (Bloqueia a tabela durante a execução!) OPTIMIZE TABLE nome_da_tabela; ``` ### Logs Binários (Binlog) Cuidado: Eles podem encher o disco. 1. Verifique a expiração no `my.cnf`: ```ini binlog_expire_logs_seconds = 604800 # 7 Dias ``` 2. Limpar manualmente (PURGE): ```sql PURGE BINARY LOGS BEFORE '2023-10-01 00:00:00'; ``` --- ## 5. REDIS (Memory Defrag) O Redis pode alocar memória fragmentada. 1. Verifique a fragmentação: `INFO MEMORY` * `mem_fragmentation_ratio > 1.5` indica fragmentação alta. 2. Ativar Desfragmentação Ativa (Config): ```bash CONFIG SET activedefrag yes ``` --- ## 6. ROTAÇÃO DE LOGS (Logrotate) Garanta que os logs de erro (`/var/log/mysql`, `/var/log/postgresql`) não estão gigantes. Verifique se existem arquivos em `/etc/logrotate.d/`: * `mysql-server` * `postgresql-common` Force uma verificação se achar que não está rodando: ```bash sudo logrotate -f /etc/logrotate.d/mysql-server ``` ## 7. VALIDAÇÃO FINAL - [ ] PostgreSQL: `VACUUM` rodou sem erro? - [ ] MySQL: Disco liberado após Purge de Binlogs? - [ ] Logs antigos estão compactados (.gz)?