manuais-e-documentacao-itguys/documentacao bancos de dados/Nivel_2_[Nível 2] Manutençã...

2.4 KiB

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:

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):
    -- 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

-- 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:
    binlog_expire_logs_seconds = 604800  # 7 Dias
    
  2. Limpar manualmente (PURGE):
    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):
    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:

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)?