Decay__头像
16_MySQL 运维监控与管理工具 —— MySQL Enterprise Monitor / ProxySQL / 中间件(对标 EMCC)封面图

16_MySQL 运维监控与管理工具 —— MySQL Enterprise Monitor / ProxySQL / 中间件(对标 EMCC)

16_MySQL 运维监控与管理工具 —— MySQL Enterprise Monitor / ProxySQL / 中间件(对标 EMCC)

系列定位:《MySQL 数据库全栈运维实战系列》第 16 篇,与《Oracle 数据库全栈运维实战系列(VMware 版)》同构对标(Oracle 16 EMCC:Enterprise Manager Cloud Control 集中纳管与深度诊断)。适用版本:MySQL 8.0(5.7 差异随文标注)。官方文档:MySQL Enterprise Monitor、ProxySQL 官方文档、MySQL Routers / ShardingSphere。


一、管理工具体系全景

图 1

图 1

图 2

图 2

工具定位类比 Oracle EMCC开源/商业
MySQL Enterprise Monitor (MEM)集中纳管、Advisor 建议、Query AnalyzerEMCC(深度诊断+纳管)商业(企业版)
ProxySQL高性能 SQL 代理、读写分离、查询路由、缓存Listener + 连接池 + 路由开源
MySQL RouterInnoDB Cluster 配套路由SCAN 服务开源
ShardingSphere / MyCat分库分表中间件(番外-02 详解)—开源

双轨定位(与 Oracle 16 同构):MEM 管"深度诊断 + 集中纳管"(对应 EMCC 的 Advisor/AWR 中心);Prometheus+Grafana 管"秒级实时告警"(第 17 篇);ProxySQL 管"连接与流量路由"。三者互补,EMCC 在 MySQL 侧的对应物就是 MEM + 可观测体系。


二、MySQL Enterprise Monitor(MEM)—— 对标 EMCC

图 3

图 3

能力说明类比 EMCC
实例纳管一次管理多个 MySQL 实例/集群EMCC Target 纳管
Query Analyzer实时抓取 SQL、执行计划、耗时排行SQL Performance Center
Advisors内建数百条健康/安全/复制建议Advisor / ADDM
自动备份巡检备份状态、复制延迟告警EM 备份巡检
可视化仪表盘实例状态、吞吐、连接趋势EM 控制台

VMware 注意事项:MEM 自身需要一个仓库库(repository),建议独立一台虚机(4C8G 起步),不要和被监控的业务库同机——否则 MEM 出问题会拖垮生产(这正是 Oracle 16 踩坑"资料库与目标同库"的同款教训)。MEM 仓库库会持续存储 SQL 审计数据,磁盘要预留 100G+。

-- MEM 纳管时在目标库建监控账号(解释:只读 + 审计抓取权限)
CREATE USER 'mem_user'@'%' IDENTIFIED BY 'Mem@Pass2026';
GRANT SELECT, SUPER, REPLICATION CLIENT ON *.* TO 'mem_user'@'%';

MEM 为商业组件,安装走 MySQL 企业版仓库;本篇以"对标 EMCC 的能力地图"为主,实际部署以官方 Enterprise Monitor 安装指南为准。


三、ProxySQL:高性能 SQL 代理(核心实操)

图 4

图 4

ProxySQL 是开源、支持 MySQL 协议的中间层代理,把应用的连接收拢,按规则把读打到从库、写打到主库,并做连接复用与查询缓存。

3.1 架构

图 5

图 5

端口用途
6033代理端口(应用连接这个,不是直连 MySQL)
6032管理端口(DBA 用 mysql 客户端连进来配置)

3.2 连接管理端口并配置读写分离

# ① 连接 ProxySQL 管理接口(解释:默认 admin/admin,库为 main)
mysql -uadmin -padmin -h127.0.0.1 -P6032 --prompt='Proxysql> '

-- ② 配置后端 MySQL 节点(解释:hostgroup 10=写组,20=读组)
INSERT INTO mysql_servers(hostgroup_id,hostname,port) VALUES
  (10,'192.168.10.51',3306),      -- 主库:写组
  (20,'192.168.10.52',3306),      -- 从库:读组
  (20,'192.168.10.53',3306);      -- 从库:读组

-- ③ 配置应用连接用的账号(解释:密码用 mysql_native_password 明文或 hash)
INSERT INTO mysql_users(username,password,default_hostgroup)
VALUES('app_user','App@Pass2026',10);   -- 解释:默认走写组

-- ④ 配置查询路由规则(解释:SELECT ... FOR UPDATE 走写组,普通 SELECT 走读组)
INSERT INTO mysql_query_rules(rule_id,active,match_digest,destination_hostgroup,apply)
VALUES
 (1,1,'^SELECT.*FOR UPDATE$',10,1),
 (2,1,'^SELECT',20,1);

-- ⑤ 生效并持久化(解释:LOAD 到运行内存,SAVE 到磁盘 sqlite)
LOAD MYSQL SERVERS TO RUNTIME;
LOAD MYSQL USERS TO RUNTIME;
LOAD MYSQL QUERY RULES TO RUNTIME;
SAVE MYSQL SERVERS TO DISK;
SAVE MYSQL USERS TO DISK;
SAVE MYSQL QUERY RULES TO DISK;

3.3 验证

-- 在 ProxySQL 管理接口查看路由统计(解释:stats 库看每条规则命中次数)
SELECT rule_id, match_digest, hits FROM stats_mysql_query_rules;

-- 查看各后端节点的连接数与流量(解释:确认读流量打到从库)
SELECT hostgroup, srv_host, ConnUsed, ConnFree, Queries
FROM stats_mysql_connection_pool;

应用连接方式:应用把连接地址改成 ProxySQL_IP:6033,账号 app_user。之后 ProxySQL 自动按规则把 SELECT 分到从库、写操作分到主库——业务零改动。


四、ProxySQL 高级能力

能力说明类比
连接复用应用短连接收拢为后端长连接连接池
查询缓存相同 SELECT 结果缓存(mysql_query_rules 的 cache_ttl)结果集缓存
故障摘除后端节点宕机自动踢出读组Listener 故障转移
读写拆分按 SQL 特征路由应用层读写分离的产品化
审计/重写重写 SQL、记录慢查询EM SQL 审计

-- 给某条规则加查询缓存(解释:相同 SELECT 5 秒内直接返回缓存)
UPDATE mysql_query_rules SET cache_ttl=5000 WHERE rule_id=2;
LOAD MYSQL QUERY RULES TO RUNTIME;

五、中间件选型对比

图 6

图 6

维度ProxySQLMySQL RouterShardingSphere/MyCat
核心目的代理+读写分离+缓存InnoDB Cluster 路由分库分表
读写分离强(规则引擎)简单(端口区分)支持
分库分表不支持不支持核心能力
查询缓存支持不支持部分
适用读写分离/连接收拢集群高可用接入数据量超单库、需水平拆分

衔接:分库分表中间件(ShardingSphere / MyCat)在番外-02 篇展开;本篇聚焦"集中纳管(MEM)+ 流量代理(ProxySQL)"这两个对标 EMCC 的管理工具。


六、与 Oracle EMCC 的能力对照

Oracle EMCC 能力MySQL 对应物说明
Target 纳管(多库集中)MEM 纳管 + 第17篇 Prometheus targets统一管理界面
SQL Performance CenterMEM Query Analyzer / performance_schemaTop SQL 抓取
Advisor / ADDMMEM Advisors + 巡检脚本(第18篇)健康建议
Listener / SCAN 路由ProxySQL / MySQL Router连接接入
连接池管理ProxySQL 连接复用短连接收拢
告警通知Alertmanager(第17/19篇)实时告警

结论:MySQL 生态没有一个"EMCC 全家桶"式的单一产品,而是 MEM(商业深度诊断)+ ProxySQL(流量代理)+ Prometheus/Grafana(开源可观测)+ 巡检脚本(第18篇) 组合出同等能力。


七、要点速记

  1. MEM 对标 EMCC:商业版,管集中纳管、Query Analyzer、Advisors;仓库库必须独立虚机。
  2. ProxySQL 是生产级读写分离代理:6033 代理 / 6032 管理,配置存在 sqlite,LOAD ... TO RUNTIME 生效、SAVE ... TO DISK 持久化。
  3. 读写分离靠 query_rules:写走 hostgroup 10,普通 SELECT 走 hostgroup 20。
  4. 应用连 ProxySQL 而非直连 MySQL,业务零改动即可享连接复用与缓存。
  5. 中间件分工:ProxySQL 管代理、MySQL Router 管集群接入、ShardingSphere 管分片。
  6. MySQL 没有 EMCC 全家桶,用 MEM + ProxySQL + Prometheus + 巡检脚本组合出等价能力。

八、踩坑记录(实测汇总)

#坑现象解决
1MEM 仓库与业务库同机MEM 拖垮生产仓库独立虚机、磁盘预留
2ProxySQL 管理密码未改admin/admin 裸奔改管理账号密码
3忘 LOAD 到 RUNTIME配置不生效INSERT 后必须 LOAD ... TO RUNTIME
4忘 SAVE 到 DISK重启后配置丢失生效后 SAVE ... TO DISK
5SELECT 带写语义被路由到从库读到旧数据FOR UPDATE/事务内 SELECT 强制走写组
6从库延迟大仍接读用户读到不一致配合第17篇延迟监控摘除读节点
7应用直连 MySQL 绕过代理代理形同虚设防火墙只开放 6033,禁直连 3306
8缓存 TTL 过大读到旧数据cache_ttl 按业务一致性要求设小
9后端密码 hash 不匹配应用连不上mysql_users 密码与后端账号一致
10ProxySQL 单点代理成单点故障多台 ProxySQL + 上层 VIP/Keepalived

九、参考资料(官方正式文档)

主题官方链接
MySQL Enterprise Monitor 文档https://dev.mysql.com/doc/enterprise-monitor/en/
MySQL 8.0 Reference Manualhttps://dev.mysql.com/doc/refman/8.0/en/
ProxySQL 官方文档https://proxysql.com/documentation/
ProxySQL GitHubhttps://github.com/sysown/proxysql
MySQL Routerhttps://dev.mysql.com/doc/mysql-router/8.0/en/
ShardingSphere 官方https://shardingsphere.apache.org/

本文章属于《MySQL 数据库全栈运维实战系列》高可用架构篇。欢迎收藏、交流。

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/dk843108982/article/details/169914988

文章来源转载

评论

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--