Skip to content

CarlosNeto2804/db-utils

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

db-utils

Utilitários locais para trabalhar com MySQL, Redis e PostgreSQL via contêineres CLI compartilhando volumes de backup e arquivos, orquestrados pelo Docker Compose.

Pré-requisitos

  • Docker e Docker Compose v2
  • Credenciais e rede de acesso aos bancos que você for consultar ou fazer dump (fora do escopo deste repositório)

Mapa do repositório

Caminho Descrição
docker-compose.yml Serviços mysql-cli, redis-cli, postgres16-cli
config/mysql/.env.exemple Variáveis de exemplo para dump/restore MySQL
config/redis/.env.exemple Variáveis de exemplo para Redis
config/postgres/.env.exemple Variáveis de exemplo para PostgreSQL
scripts/mysql/ Scripts auxiliares de dump e restore (ignorados pelo Git)
docs/ Cheatsheets SQL e exemplos de linha de comando
volumes/ Dados montados nos contêineres — ignorados pelo Git

Os diretórios scripts/, volumes/ e exports/ estão no .gitignore; ajuste localmente sem versionar segredos.

Visão geral

graph TD
  classDef host fill:#2d333b,stroke:#6d5dfc,color:#e6edf3
  classDef vol fill:#1a1a2e,stroke:#e94560,color:#eee
  classDef db fill:#0f3460,stroke:#6d5dfc,color:#eee

  DC[Docker Compose]:::host --> M[mysql-cli]:::host
  DC --> R[redis-cli]:::host
  DC --> P[postgres16-cli]:::host

  M --> VB[(volumes/mysql8/backup)]:::vol
  M --> VS[(volumes/mysql8/shared)]:::vol
  R --> RB[(volumes/redis/backup)]:::vol
  R --> RS[(volumes/redis/shared)]:::vol
  P --> PB[(volumes/postgres16/backup)]:::vol
  P --> PS[(volumes/postgres16/shared)]:::vol

  M -.-> RM[(MySQL remoto)]:::db
  P -.-> RP[(PostgreSQL remoto)]:::db
Loading

Primeiros passos

  1. Configurar variáveis de ambiente

    • MySQL: copie config/mysql/.env.exemple para config/mysql/.env e preencha host, usuário, senha e porta.
    • Redis: crie config/redis/.env a partir de config/redis/.env.exemple.
    • PostgreSQL: crie config/postgres/.env a partir de config/postgres/.env.exemple.
  2. Subir um contêiner CLI

    docker compose up -d mysql-cli
  3. Executar comandos dentro do contêiner

    docker compose exec mysql-cli bash

Volumes úteis: backups em volumes/<engine>/backup e compartilhamento de arquivos em volumes/<engine>/shared.

Serviços

Serviço Imagem env_file
mysql-cli mysql:8.0 ./config/mysql/.env
redis-cli redis ./config/redis/.env.exemple
postgres16-cli postgres:16 ./config/postgres/.env.exemple

O comando padrão dos três é /bin/bash — o contêiner fica em idle aguardando exec.

Scripts auxiliares (scripts/mysql/)

Os scripts ficam fora do versionamento (scripts/* no .gitignore). Copie-os do exemplo ou crie os seus.

Script Função
dump.sh Dump completo (estrutura + dados) com mysqldump
dump-dataonly.sh Dump somente dados (--no-create-info)
dump-no-data.sh Dump somente estrutura (--no-data)
restore.sh Restore de um .sql via mysql CLI

Uso típico (dentro do contêiner ou montando o script):

docker compose exec mysql-cli bash /shared/dump.sh

Documentação em docs/

Arquivo Conteúdo
docs/mysql.md lower_case_table_names, tamanho do BD, processlist, locks e kill
docs/postgres.md Tamanho do BD, pg_stat_activity, sessões idle e kill
docs/mysqldump.md Exemplos de mysqldump: completo, data-only, structure-only e all-databases
docs/mysqlrestore.md Restore MySQL via CLI com variáveis de ambiente
docs/psql-restore.md Restore PostgreSQL via psql
docs/mysql-definer-capatibility-issues.md Problemas de DEFINER entre versões e fix com sed

Variáveis de ambiente (MySQL)

Variável Propósito
DUMP_MYSQL_HOST Host do servidor de origem (dump)
DUMP_MYSQL_USER Usuário do dump
DUMP_MYSQL_PASSWORD Senha do dump
DUMP_MYSQL_PORT Porta do servidor de origem
DUMP_MYSQL_OUTPUT Caminho de saída (padrão: /backup/all-databases.sql)
RESTORE_MYSQL_HOST Host do servidor de destino (restore)
RESTORE_MYSQL_USER Usuário do restore
RESTORE_MYSQL_PASSWORD Senha do restore
RESTORE_MYSQL_PORT Porta do servidor de destino
RESTPRE_MYSQL_DATABASE Banco de dados a restaurar

Solução de problemas

  • Compose falha por env_file ausente: crie os arquivos referenciados no docker-compose.yml ou ajuste os caminhos.
  • Dump MySQL não roda: confira DUMP_MYSQL_HOST, DUMP_MYSQL_USER e DUMP_MYSQL_PASSWORD.
  • Erro de DEFINER ao restaurar: veja docs/mysql-definer-capatibility-issues.md para remover DEFINER do dump antes do import.
  • Timeout ao conectar: verifique rede/firewall entre o contêiner e o servidor de destino.

Glossário

  • CLI container: contêiner com cliente de banco e shell, sem servidor de banco embutido.
  • Dump: exportação SQL (mysqldump); flags detalhadas em docs/mysqldump.md.
  • Restore: importação de arquivo .sql no banco de destino; veja docs/mysqlrestore.md e docs/psql-restore.md.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages