Utilitários locais para trabalhar com MySQL, Redis e PostgreSQL via contêineres CLI compartilhando volumes de backup e arquivos, orquestrados pelo Docker Compose.
- 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)
| 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.
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
-
Configurar variáveis de ambiente
- MySQL: copie
config/mysql/.env.exempleparaconfig/mysql/.enve preencha host, usuário, senha e porta. - Redis: crie
config/redis/.enva partir deconfig/redis/.env.exemple. - PostgreSQL: crie
config/postgres/.enva partir deconfig/postgres/.env.exemple.
- MySQL: copie
-
Subir um contêiner CLI
docker compose up -d mysql-cli
-
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ç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.
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| 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á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 |
- Compose falha por
env_fileausente: crie os arquivos referenciados nodocker-compose.ymlou ajuste os caminhos. - Dump MySQL não roda: confira
DUMP_MYSQL_HOST,DUMP_MYSQL_USEReDUMP_MYSQL_PASSWORD. - Erro de DEFINER ao restaurar: veja
docs/mysql-definer-capatibility-issues.mdpara removerDEFINERdo dump antes do import. - Timeout ao conectar: verifique rede/firewall entre o contêiner e o servidor de destino.
- CLI container: contêiner com cliente de banco e shell, sem servidor de banco embutido.
- Dump: exportação SQL (
mysqldump); flags detalhadas emdocs/mysqldump.md. - Restore: importação de arquivo
.sqlno banco de destino; vejadocs/mysqlrestore.mdedocs/psql-restore.md.