Backup Dr

Backup e Disaster Recovery - C-Suite

Este documento descreve os procedimentos de backup e disaster recovery para o ecossistema C-Suite.

Visão Geral

O script scripts/backup_database.py fornece funcionalidade completa de backup e restore de bancos de dados MySQL/MariaDB.

Características

Uso

Backup Básico

python scripts/backup_database.py --database csuite

Backup com Opções

python scripts/backup_database.py \
  --database csuite \
  --backup-dir /backups \
  --retention-days 30 \
  --cleanup

Listar Backups

python scripts/backup_database.py --database csuite --list

Restore

python scripts/backup_database.py \
  --database csuite \
  --restore /backups/csuite_backup_20251201_120000.sql.gz

Configuração

Variáveis de Ambiente

# Database configuration (usa core_config)
CSUITE_DB_HOST=localhost
CSUITE_DB_PORT=3306
CSUITE_DB_USER=backup_user
CSUITE_DB_PASSWORD=password
CSUITE_DB_NAME=csuite

# Backup configuration
BACKUP_DIR=/backups
BACKUP_DATABASE=csuite
BACKUP_RETENTION_DAYS=30

Permissões de Usuário

Crie usuário de backup no MySQL:

CREATE USER 'backup_user'@'%' IDENTIFIED BY 'password';
GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER ON csuite.* TO 'backup_user'@'%';
FLUSH PRIVILEGES;

Agendamento Automático

Cron

Adicione ao crontab:

# Backup diário às 2:00 AM
0 2 * * * /usr/bin/python3 /path/to/scripts/backup_database.py --database csuite --cleanup >> /var/log/backup.log 2>&1

Systemd Timer

Crie backup-database.service:

[Unit]
Description=Database Backup
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/bin/python3 /path/to/scripts/backup_database.py --database csuite --cleanup
User=backup
Environment="BACKUP_DIR=/backups"

E backup-database.timer:

[Unit]
Description=Daily Database Backup
Requires=backup-database.service

[Timer]
OnCalendar=daily
OnCalendar=02:00
Persistent=true

[Install]
WantedBy=timers.target

Ative o timer:

sudo systemctl enable backup-database.timer
sudo systemctl start backup-database.timer

Estratégias de Backup

Backup Completo Diário

# Backup completo todos os dias
0 2 * * * /usr/bin/python3 /path/to/scripts/backup_database.py --database csuite --cleanup

Backup Incremental

Para backups incrementais, use mysqldump com --incremental ou configure MySQL binary logs.

Backup de Múltiplos Bancos

for db in csuite core staging; do
  python scripts/backup_database.py --database $db --cleanup
done

Disaster Recovery

Plano de Recuperação

  1. Identificar ponto de restauração: Determine qual backup usar
  2. Parar serviços: Pare todos os serviços que usam o banco
  3. Restaurar backup: Execute restore do backup
  4. Verificar integridade: Verifique se dados estão corretos
  5. Reiniciar serviços: Reinicie serviços gradualmente
  6. Monitorar: Monitore logs e métricas

Procedimento de Restore

# 1. Parar serviços
docker service scale csuite-api=0
docker service scale 4c-suite=0

# 2. Restaurar backup
python scripts/backup_database.py \
  --database csuite \
  --restore /backups/csuite_backup_20251201_120000.sql.gz

# 3. Verificar
mysql -u root -p csuite -e "SELECT COUNT(*) FROM policies;"

# 4. Reiniciar serviços
docker service scale csuite-api=1
docker service scale 4c-suite=1

Teste de Restore

Execute testes periódicos de restore:

# Criar banco de teste
mysql -u root -p -e "CREATE DATABASE csuite_test;"

# Restaurar backup no banco de teste
python scripts/backup_database.py \
  --database csuite_test \
  --restore /backups/csuite_backup_20251201_120000.sql.gz

# Verificar integridade
mysql -u root -p csuite_test -e "SELECT COUNT(*) FROM policies;"

Monitoramento

Verificar Backups

# Listar backups
python scripts/backup_database.py --database csuite --list

# Verificar tamanho
du -sh /backups/*

# Verificar idade
find /backups -name "*.sql.gz" -mtime +7

Alertas

O script envia alertas críticos quando backup falha:

from common.common_notifications import send_critical_alert

# Alertas automáticos em caso de falha

Configure alertas para:

Best Practices

  1. Backup regular: Execute backups diários no mínimo
  2. Retenção adequada: Mantenha backups por pelo menos 30 dias
  3. Teste restore: Teste restore regularmente
  4. Offsite backup: Copie backups para localização remota
  5. Monitoramento: Configure alertas para falhas de backup
  6. Documentação: Documente procedimentos de restore
  7. Automação: Automatize tanto quanto possível

Backup Offsite

S3 (AWS)

# Upload para S3 após backup
aws s3 cp /backups/csuite_backup_*.sql.gz s3://backup-bucket/csuite/

rsync

# Sincronizar com servidor remoto
rsync -avz /backups/ user@remote-server:/backups/

Referências

🔊 Text-to-Speech

1.0x
1.0
Pronto para reproduzir