promovaweb-devops-review-mysql-stack
Review MySQL (Percona) Stack
Executa uma auditoria completa do arquivo mysql.yaml e reporta conformidade, problemas e sugestões.
Instruções de Execução
Quando esta skill for invocada, siga exatamente este roteiro:
Passo 1 — Ler os arquivos
Leia o arquivo mysql.yaml completo. Leia também mautic.yaml para verificar a consistência das credenciais de banco usadas pelos serviços dependentes.
Passo 2 — Executar todos os checks abaixo
Execute cada bloco de verificação e registre os resultados (✅ OK / ⚠️ Atenção / ❌ Erro).
Passo 3 — Gravar o resultado
Grave o relatório completo em um arquivo chamado mysql.audit.md.
Checks de Verificação
1. Imagem (Percona)
Verifique o anchor x-percona-image:
- A imagem deve ser
percona/percona-server:<versão>(nãomysql:latest) - A versão deve ser fixada (ex:
8.4.7) — não usarlatestem produção - Verificar se a versão é compatível com os clients MySQL dos serviços dependentes (Mautic)
2. Variáveis de Ambiente
Verifique o anchor x-percona-env:
MYSQL_ROOT_PASSWORD— deve existir e não deve ser o placeholderSENHA_ROOT- Verificar se
MYSQL_DATABASEestá definido para o banco do Mautic (ex:mautic) - Verificar se
MYSQL_USERestá definido para o usuário do Mautic (ex:mautic) - Verificar se
MYSQL_PASSWORDestá definido para o usuário do Mautic — não deve serSENHA_MAUTIC - Alertar se apenas
MYSQL_ROOT_PASSWORDestiver definido (serviços devem usar usuário dedicado, não root)
3. Serviço
Verifique se o serviço mysql está presente e corretamente configurado.
4. Portas Expostas
3306:3306— verificar se a porta está exposta externamente- Alertar se a porta 3306 estiver exposta em produção (risco de segurança)
- Recomendar uso de rede interna Docker Swarm sem exposição de porta se não for necessário acesso externo
5. Volumes
percona_data— deve ser declarado comoexternal: true- Verificar se o volume está montado em
/var/lib/mysql - Alertar se o volume não for externo (dados perdidos em redeploy)
6. Réplicas
| Serviço | Réplicas Esperadas | Observação |
|---|---|---|
mysql |
1 | MySQL standalone — não deve ter mais de 1 réplica sem configuração de cluster |
Alertar se houver mais de 1 réplica (pode causar corrupção de dados sem configuração de replicação adequada).
7. Recursos do Container
| Serviço | CPU Mínimo | Memória Máxima |
|---|---|---|
mysql |
"1" | 1024M |
- Alertar se memória for inferior a 512M
- Verificar se os limites são adequados para a carga esperada
8. Configuração de Deploy
mode: replicated— deve serreplicatedplacement.constraints— deve incluirnode.role == manager- Verificar se há constraints adicionais de hostname para fixar o banco em um nó específico
- Verificar se há
update_configcomfailure_action: rollback
9. Redes
- O serviço deve estar na rede
network_swarm_public - A rede deve ser declarada como
external: true
10. Segurança
MYSQL_ROOT_PASSWORDnão deve serSENHA_ROOT(placeholder)MYSQL_PASSWORDnão deve serSENHA_MAUTIC(placeholder)- Porta 3306 exposta externamente — alertar como risco se não houver firewall configurado
- Recomendar uso de usuário dedicado por aplicação (não root)
- Verificar se o usuário
mautictem permissões apenas no bancomautic(princípio do menor privilégio)
Formato do Relatório de Saída
Ao final, produza um relatório estruturado:
# Relatório de Auditoria — mysql.yaml
Data: <data atual>
## Resumo
- Total de checks: X
- ✅ OK: X
- ⚠️ Atenções: X
- ❌ Erros: X
## Resultados por Categoria
### 1. Imagem
✅ percona/percona-server:8.4.7: versão fixada
...
### 2. Variáveis de Ambiente
❌ MYSQL_ROOT_PASSWORD: usando placeholder SENHA_ROOT — troque antes do deploy
⚠️ MYSQL_USER/MYSQL_PASSWORD: não definidos — serviços como Mautic usarão root?
...
### 3. Serviço
✅ mysql: presente
### 4. Portas
⚠️ Porta 3306 exposta externamente — garanta que firewall está configurado
...
### 5. Volumes
✅ percona_data: volume externo configurado em /var/lib/mysql
...
### 6. Réplicas
✅ mysql: 1 réplica (correto para standalone)
...
### 7. Recursos
✅ 1024M de memória configurada
...
### 8. Deploy
✅ node.role == manager: placement correto
⚠️ update_config não definido
...
### 9. Redes
✅ network_swarm_public: configurado como external
...
### 10. Segurança
❌ MYSQL_ROOT_PASSWORD: placeholder SENHA_ROOT detectado
⚠️ Porta 3306 exposta: certifique-se de que firewall bloqueia acesso externo
⚠️ Sem usuário dedicado para Mautic — use MYSQL_USER/MYSQL_DATABASE/MYSQL_PASSWORD
...
## Ações Recomendadas (por prioridade)
### Crítico (fazer antes do deploy)
1. ...
### Recomendado
1. ...
### Opcional
1. ...
More from promovaweb/skills-devops
promovaweb-devops-docker
Verifica o ambiente Docker do servidor — versão do Docker Engine, status do Swarm, nós do cluster, rede network_swarm_public, volumes externos e conformidade geral com as recomendações da Promovaweb.
10promovaweb-devops-review-evolution-go-stack
Verifica a Stack do Evolution Go. Além disso analisa parâmetros, rotas Traefik, volumes, recursos e conformidade do stack Evolution Go de Acordo com as Recomendações da Promovaweb.
9promovaweb-devops-docker-volumes
Implemente armazenamento persistente com Docker volumes, bind mounts e estratégias de backup
9promovaweb-devops-dockerfile-basics
Aprenda os fundamentos do Dockerfile e as melhores práticas para criar imagens de container prontas para produção
9promovaweb-devops-docker-networking
Configure a rede (networking) do Docker para containers, incluindo bridge, overlay e service discovery
9promovaweb-devops-review-kestra-stack
Verifica a Stack do Kestra. Além disso analisa parâmetros, rotas Traefik, volumes, recursos e conformidade do stack Kestra de Acordo com as Recomendações da Promovaweb.
9