MySQL 8.0 连接器
MySQL 8.0 连接器(Connector/J)从架构原理到产线最佳实践 · 完整版详解1. 整体架构:MySQL 8 Connector/J 到底是什么?1.1 定位官方纯 Java JDBC 驱动(Type 4)实现 MySQL 8 通信协议(TCP + 协议帧)负责:连接建立、认证、SQL 执行、结果集解析、事务、故障转移是应用 ↔ MySQL之间的唯一桥梁1.2 核心模块架构应用层 ↕ JDBC API (Connection/Statement/ResultSet) ↕ Connector/J 核心层 ├─ 连接管理 ├─ 网络协议(MySQL Protocol v9) ├─ 认证插件(caching_sha2_password) ├─ SQL 执行与批处理优化 ├─ 结果集解析 数据类型映射 ├─ 故障转移 / 负载均衡 └─ SSL/TLS 安全层 ↕ TCP Socket ↕ MySQL Server1.3 MySQL 8 相比 5.x 架构级变化默认认证从 mysql_native_password → caching_sha2_passwordSSL 默认开启,强制加密驱动包路径从com.mysql.jdbc→com.mysql.cj移除了大量废弃方法,更严格内置支持复制拓扑、故障转移、读写分离2. 通信流程:一次 SQL 查询在驱动里经历了什么应用获取 Connection驱动 TCP 三次握手建立连接SSL 握手(MySQL8 默认开启)认证交换(用户名 + sha256 密码)发送 SQL 命令帧MySQL 执行并返回结果集帧驱动解析结果集,封装成 JDBC 对象连接归还连接池(非关闭)关键点:Connection 本质是一个长生命周期的 TCP Socket频繁创建销毁 = 频繁 TCP 握手/挥手 = 性能灾难3. 产线必懂:核心机制详解3.1 认证机制(MySQL8 最大坑点)3.1.1 caching_sha2_password密码哈希:SHA256首次连接需要公钥加密或SSL无 SSL 时必须开启:allowPublicKeyRetrieval=true3.1.2 产线安全策略外网/公网:必须SSL + VERIFY_CA内网 VPC:可使用sslMode=REQUIRED(只加密不验证书)3.2 批处理机制(性能核心)rewriteBatchedStatements=true驱动会把 N 条INSERT重写为:INSERT