promovaweb-devops-review-mysql-stack

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Review MySQL (Percona) Stack

MySQL(Percona)栈审核

Executa uma auditoria completa do arquivo
mysql.yaml
e reporta conformidade, problemas e sugestões.
mysql.yaml
文件执行完整审计,并报告合规性、问题及优化建议。

Instruções de Execução

执行说明

Quando esta skill for invocada, siga exatamente este roteiro:
调用本技能时,请严格遵循以下流程:

Passo 1 — Ler os arquivos

步骤1 — 读取文件

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.
完整读取
mysql.yaml
文件,同时读取
mautic.yaml
文件,校验依赖服务使用的数据库凭证一致性。

Passo 2 — Executar todos os checks abaixo

步骤2 — 执行以下所有检查

Execute cada bloco de verificação e registre os resultados (✅ OK / ⚠️ Atenção / ❌ Erro).
执行每个检查项并记录结果(✅ 正常 / ⚠️ 注意 / ❌ 错误)。

Passo 3 — Gravar o resultado

步骤3 — 保存结果

Grave o relatório completo em um arquivo chamado mysql.audit.md.

将完整报告保存为名为mysql.audit.md的文件。

Checks de Verificação

检查项

1. Imagem (Percona)

1. 镜像(Percona)

Verifique o anchor
x-percona-image
:
  • A imagem deve ser
    percona/percona-server:<versão>
    (não
    mysql:latest
    )
  • A versão deve ser fixada (ex:
    8.4.7
    ) — não usar
    latest
    em produção
  • Verificar se a versão é compatível com os clients MySQL dos serviços dependentes (Mautic)

检查锚点
x-percona-image
  • 镜像必须为
    percona/percona-server:<版本号>
    (不得使用
    mysql:latest
  • 版本必须固定(例如:
    8.4.7
    )——生产环境禁止使用
    latest
    标签
  • 校验版本是否与依赖服务(Mautic)的MySQL客户端兼容

2. Variáveis de Ambiente

2. 环境变量

Verifique o anchor
x-percona-env
:
  • MYSQL_ROOT_PASSWORD
    — deve existir e não deve ser o placeholder
    SENHA_ROOT
  • Verificar se
    MYSQL_DATABASE
    está definido para o banco do Mautic (ex:
    mautic
    )
  • Verificar se
    MYSQL_USER
    está definido para o usuário do Mautic (ex:
    mautic
    )
  • Verificar se
    MYSQL_PASSWORD
    está definido para o usuário do Mautic — não deve ser
    SENHA_MAUTIC
  • Alertar se apenas
    MYSQL_ROOT_PASSWORD
    estiver definido (serviços devem usar usuário dedicado, não root)

检查锚点
x-percona-env
  • MYSQL_ROOT_PASSWORD
    — 必须存在,且不得为占位符
    SENHA_ROOT
  • 校验
    MYSQL_DATABASE
    是否设置为Mautic的数据库名(例如:
    mautic
  • 校验
    MYSQL_USER
    是否设置为Mautic的数据库用户名(例如:
    mautic
  • 校验
    MYSQL_PASSWORD
    是否设置为Mautic用户的密码——不得为占位符
    SENHA_MAUTIC
  • 如果仅设置了
    MYSQL_ROOT_PASSWORD
    需发出告警(业务服务应使用专用数据库用户,不得使用root)

3. Serviço

3. 服务

Verifique se o serviço
mysql
está presente e corretamente configurado.

检查
mysql
服务是否存在且配置正确。

4. Portas Expostas

4. 暴露端口

  • 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

  • 3306:3306
    — 校验端口是否对外暴露
  • 生产环境如果暴露3306端口需发出告警(存在安全风险)
  • 若无外部访问需求,建议使用Docker Swarm内部网络,不暴露端口

5. Volumes

5. 卷

  • percona_data
    — deve ser declarado como
    external: true
  • Verificar se o volume está montado em
    /var/lib/mysql
  • Alertar se o volume não for externo (dados perdidos em redeploy)

  • percona_data
    — 必须声明为
    external: true
  • 校验卷是否挂载到
    /var/lib/mysql
    路径
  • 如果卷不是外部卷需发出告警(重新部署时会丢失数据)

6. Réplicas

6. 副本数

ServiçoRéplicas EsperadasObservação
mysql
1MySQL 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).

服务预期副本数备注
mysql
1单机版MySQL——若无合适的集群配置,副本数不得超过1
如果副本数超过1需发出告警(无合理复制配置时可能导致数据损坏)。

7. Recursos do Container

7. 容器资源

ServiçoCPU MínimoMemó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

服务最低CPU配置最大内存配置
mysql
"1"1024M
  • 如果内存低于512M需发出告警
  • 校验资源限制是否适配预期负载

8. Configuração de Deploy

8. 部署配置

  • mode: replicated
    — deve ser
    replicated
  • placement.constraints
    — deve incluir
    node.role == manager
  • Verificar se há constraints adicionais de hostname para fixar o banco em um nó específico
  • Verificar se há
    update_config
    com
    failure_action: rollback

  • mode: replicated
    — 必须设置为
    replicated
  • placement.constraints
    — 必须包含
    node.role == manager
  • 校验是否有额外的主机名约束,将数据库固定在特定节点
  • 校验是否配置了
    update_config
    且设置了
    failure_action: rollback

9. Redes

9. 网络

  • O serviço deve estar na rede
    network_swarm_public
  • A rede deve ser declarada como
    external: true

  • 服务必须加入
    network_swarm_public
    网络
  • 该网络必须声明为
    external: true

10. Segurança

10. 安全

  • MYSQL_ROOT_PASSWORD
    não deve ser
    SENHA_ROOT
    (placeholder)
  • MYSQL_PASSWORD
    não deve ser
    SENHA_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
    mautic
    tem permissões apenas no banco
    mautic
    (princípio do menor privilégio)

  • MYSQL_ROOT_PASSWORD
    不得为占位符
    SENHA_ROOT
  • MYSQL_PASSWORD
    不得为占位符
    SENHA_MAUTIC
  • 3306端口对外暴露——若无防火墙配置需作为风险项告警
  • 建议每个应用使用专用数据库用户(不得使用root)
  • 校验
    mautic
    用户是否仅拥有
    mautic
    库的权限(最小权限原则)

Formato do Relatório de Saída

输出报告格式

Ao final, produza um relatório estruturado:
undefined
执行完成后,输出结构化报告:
undefined

Relatório de Auditoria — mysql.yaml

Relatório de Auditoria — mysql.yaml

Data: <data atual>
Data: <data atual>

Resumo

Resumo

  • Total de checks: X
  • ✅ OK: X
  • ⚠️ Atenções: X
  • ❌ Erros: X
  • Total de checks: X
  • ✅ OK: X
  • ⚠️ Atenções: X
  • ❌ Erros: X

Resultados por Categoria

Resultados por Categoria

1. Imagem

1. Imagem

✅ percona/percona-server:8.4.7: versão fixada ...
✅ percona/percona-server:8.4.7: versão fixada ...

2. Variáveis de Ambiente

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? ...
❌ 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

3. Serviço

✅ mysql: presente
✅ mysql: presente

4. Portas

4. Portas

⚠️ Porta 3306 exposta externamente — garanta que firewall está configurado ...
⚠️ Porta 3306 exposta externamente — garanta que firewall está configurado ...

5. Volumes

5. Volumes

✅ percona_data: volume externo configurado em /var/lib/mysql ...
✅ percona_data: volume externo configurado em /var/lib/mysql ...

6. Réplicas

6. Réplicas

✅ mysql: 1 réplica (correto para standalone) ...
✅ mysql: 1 réplica (correto para standalone) ...

7. Recursos

7. Recursos

✅ 1024M de memória configurada ...
✅ 1024M de memória configurada ...

8. Deploy

8. Deploy

✅ node.role == manager: placement correto ⚠️ update_config não definido ...
✅ node.role == manager: placement correto ⚠️ update_config não definido ...

9. Redes

9. Redes

✅ network_swarm_public: configurado como external ...
✅ network_swarm_public: configurado como external ...

10. Segurança

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 ...
❌ 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)

Ações Recomendadas (por prioridade)

Crítico (fazer antes do deploy)

Crítico (fazer antes do deploy)

  1. ...
  1. ...

Recomendado

Recomendado

  1. ...
  1. ...

Opcional

Opcional

  1. ...
undefined
  1. ...
undefined