04-MySQL 扩展学习资料

04-MySQL 扩展学习资料

04-MySQL 扩展学习资料

面向「能用、也懂原理」之后,向架构、运维、云与工程化方向扩展的开发者 / 技术负责人。涵盖高可用、云数据库、框架集成、安全合规、监控运维、生态工具与学习路线。

编程资源 https://pan.quark.cn/s/7f7c83756948 更多资源 https://pan.quark.cn/s/bda57957c548

1. 高可用架构

1.1 可用方案对比

方案原理RPO/RTO适用
主从 + 人工切换从库顶上,手动CHANGE MASTERRTO 分钟级小团队
MHA自动故障转移RTO 秒~十秒传统经典
Orchestrator拓扑管理 + 自动切换秒级中大型
InnoDB Cluster / MGR多主/单主 Raft 类共识近 0 丢失现代推荐
Keepalived + VIP漂移虚拟 IP秒级配合主从

1.2 MGR(MySQL Group Replication)

基于 Paxos 的成员共识,多数派存活即可服务,自动选主、自动剔除故障节点。8.0 后生产可用,是官方主推的高可用形态。

# 关键参数 plugin_load = "group_replication.so" group_replication_group_name = "uuid" group_replication_start_on_boot = ON

2. 云数据库

团队不想养 DB 时,直接用托管服务:

厂商产品亮点
阿里云RDS MySQL / PolarDBPolarDB 存算分离,弹性强
腾讯云TencentDB for MySQL (CDB)控制台易用,集成备份/审计
AWSRDS / AuroraAurora 三副本、高性能
华为云RDS for MySQL国内合规友好

云数据库价值:自动备份、自动故障切换、只读实例、参数模板、监控告警、SSL 加密一站式。团队只需关注 schema 与 SQL 质量。


3. 中间件与连接层

  • ProxySQL:高性能 MySQL 代理,做读写分离、查询路由、连接复用、限流。生产级首选。
  • ShardingSphere:分库分表 + 读写分离 + 分布式事务,Java 生态成熟。
  • MyCat:老牌分库分表中间件(社区活跃度下降,新项目建议 ShardingSphere)。
  • 连接池:HikariCP(Java)、Hikari-like(Go sql.DB)、mysql2池(Node)、SQLAlchemy池(Python)。

4. 与开发框架集成(ORM)

团队用 Laravel / Livewire 居多,这里重点给 Laravel,其余给要点。

4.1 Laravel (Eloquent)

// 模型定义classOrderextendsModel{protected$fillable=['user_id','amount','status'];publicfunctionuser(){return$this->belongsTo(User::class);}}// 查询构造器(参数化,安全)Order::with('user')->where('status','paid')->orderBy('amount','desc')->paginate(15);// 原生语句务必用绑定DB::select('SELECT * FROM orders WHERE user_id = ?',[$id]);

4.2 其他框架

  • Spring Boot (MyBatis/JPA):MyBatis 用#{}预编译防注入;JPA 注意 N+1 用@EntityGraph/JOIN FETCH
  • Django (ORM)Model.objects.filter()select_related/prefetch_related解决 N+1。
  • Node (Sequelize / Prisma / TypeORM):Prisma 类型安全、迁移友好,推荐新项目。
  • Python (SQLAlchemy)session.query().filter()joinedload做预加载。

通用陷阱:N+1 查询(循环里查关联)。务必用预加载 /JOIN一次性取出。


5. 安全与合规

  • 权限最小化:按应用建账号,只授所需库表的SELECT/INSERT/UPDATE,禁止GRANT ALL给应用账号。
  • SSL 连接REQUIRE SSL,防止链路明文被嗅探。
  • 防注入:永远参数化,ORM 正确用绑定,禁止字符串拼接。
  • 审计:企业版 Audit Log / 社区用init-connect+ binlog / 第三方。
  • 数据脱敏:手机号、身份证展示时掩码(138****8000)。
  • 合规:金融/医疗注意数据本地化、加密存储(字段级AES_ENCRYPT)。
CREATEUSER'app'@'%'IDENTIFIEDBY'strong_pwd'REQUIRESSL;GRANTSELECT,INSERT,UPDATEONshop.*TO'app'@'%';

6. 监控与运维

  • Prometheus + Grafanamysqld_exporter暴露指标,Grafana 看板。
  • Percona PMM:开箱即用的 MySQL 监控(含慢查询分析)。
  • pt-tools(Percona Toolkit)pt-query-digest分析慢日志、pt-online-schema-change在线改表不锁、pt-table-checksum主从一致性校验。
  • 关键监控项:QPS/TPS、连接数、缓冲命中率、慢查询数、主从延迟(Seconds_Behind_Master)、锁等待。
  • 在线 DDL:大表加列用pt-osc或 MySQL 8.0 的ALGORITHM=INSTANT(部分操作秒级完成)。

7. 生态工具

工具用途
MySQL Workbench官方 GUI,建模/管理
DBeaver跨库通用,免费开源
Navicat商业,体验好
Adminer单文件 PHP,轻量
phpMyAdminWeb 管理,PHP 环境常见

8. 与其他数据库的取舍

  • PostgreSQL:需复杂查询、JSONB、地理空间、强一致性时更优;MySQL 在简单 OLTP、生态成熟度上占优。
  • MongoDB:非结构化 / 文档型、灵活 schema;事务一致性弱于 MySQL。
  • Redis:缓存 / 计数器 / 队列,不替代关系库。
  • 选型原则:事务 + 关系强 → MySQL;灵活文档 → Mongo;极速 KV → Redis

9. 学习路线图与资源

路线

入门(01) → 练习(02) → 精通(03) → 扩展(04) ↓ 生产实战:搭主从 → 做备份演练 → 上监控 → 接框架 ORM → 性能调优

推荐资源

  • 文档:MySQL 官方手册(最权威)
  • 教程:菜鸟教程 MySQL(本资料基础)
  • 书单:《高性能 MySQL》(必读经典)、《MySQL 技术内幕:InnoDB 存储引擎》
  • 视频:各平台「MySQL 调优」「InnoDB 原理」专题
  • 认证:Oracle MySQL OCP(求职加分)

实战项目建议(团队练手)

  1. 用 Laravel + MySQL 写一个「订单中心」,含用户/商品/订单/库存,演示事务与并发扣减。
  2. 搭一主两从 + ProxySQL 读写分离,压测对比。
  3. 对一个 500 万行表做慢查询优化,写优化前后 EXPLAIN 对比报告。

扩展自测

  • 能画出主从复制的数据流
  • 知道 MGR 与 MHA 的区别
  • 能为团队选云数据库或自建方案并说明理由
  • 能指出 ORM 的 N+1 问题并解决
  • 会用 pt-query-digest 分析慢日志
  • 能按最小权限给应用账号授权

完成全部 → 你已是团队里的 MySQL 担当,可以带新人走一遍01→02了。

编程资源 https://pan.quark.cn/s/7f7c83756948 更多资源 https://pan.quark.cn/s/bda57957c548