04-MySQL 扩展学习资料

04-MySQL 扩展学习资料

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

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

1. 高可用架构

1.1 可用方案对比

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

1.2 MGR(MySQL Group Replication)

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

ini 复制代码
# 关键参数
plugin_load = "group_replication.so"
group_replication_group_name = "uuid"
group_replication_start_on_boot = ON

2. 云数据库

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

厂商 产品 亮点
阿里云 RDS MySQL / PolarDB PolarDB 存算分离,弹性强
腾讯云 TencentDB for MySQL (CDB) 控制台易用,集成备份/审计
AWS RDS / Aurora Aurora 三副本、高性能
华为云 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)

php 复制代码
// 模型定义
class Order extends Model {
    protected $fillable = ['user_id','amount','status'];
    public function user() { 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)。
sql 复制代码
CREATE USER 'app'@'%' IDENTIFIED BY 'strong_pwd' REQUIRE SSL;
GRANT SELECT, INSERT, UPDATE ON shop.* 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,轻量
phpMyAdmin Web 管理,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
相关推荐
Zldaisy3d2 小时前
连续纤维增材制造的机翼已飞上天,复材打印在低空飞行器上还需翻过几道坎?
java·前端·数据库
倔强的石头_2 小时前
连接池参数治理-HikariCP怎么配才稳
数据库
wWYy.2 小时前
Mysql:二级索引
数据库·mysql
jnrjian2 小时前
PG 导出表为excel iconv 乱码
数据库·postgresql
DLYSB_3 小时前
数据库连接池爆满导致全线宕机:我用 Go 写了个“现场声光报警器”,比钉钉快了 10 倍
数据库·golang·钉钉·报警灯
ClickHouseDB3 小时前
Postgres正则表达式性能优化:pg_re2扩展的引入与应用
数据库
艾莉丝努力练剑3 小时前
【MYSQL】MYSQL学习的一大重点:视图
android·服务器·数据库·学习·mysql·面试·视图
三江番长 陀舍古帝3 小时前
细说SQL Server中的加密
运维·服务器·数据库
艾莉丝努力练剑3 小时前
【MYSQL】MYSQL学习的一大重点:事务(下)- InnoDB 事务隔离性原理(MVCC 视角)
android·数据库·b树·sql·学习·mysql·面试