参考资料
本篇收拢系列里引用的官方文档和社区资源。遇到「参数行为对不上」「报错看不懂」「复制不动了」的情况,按这里的顺序翻,比搜索引擎翻半天快。
官方入口
- MySQL 官网:所有官方资源的起点,下载、文档、博客、认证都在这里,遇到版本相关的疑问优先从这里进。
- MySQL 8.0 参考手册:唯一权威口径,参数默认值、语法、权限、错误码都以它为准,中文资料对不上时以英文原版为准。
- MySQL 8.4 参考手册:新的 LTS 版本手册,8.4 禁用了一批旧特性(
mysql_native_password默认关闭等),升级前必读「What Is New」和「Deprecated and Removed」。 - MySQL 下载页:各平台安装包、Docker 镜像说明、APT/YUM 源配置都在这一页。
- Release Notes 索引:每个小版本修了什么 bug、改了什么行为,升级前扫一遍能避掉很多「升级后突然坏了」。
- MySQL 错误码手册:
1040、1205、1213这类错误码的官方解释,比看博客猜准。 - MySQL Server Blog:Oracle 官方团队的技术博客,新特性解读和版本发布说明质量很高。
查参数先看「Reference Manual → Server Administration → Server System Variables」,那里有默认值、作用域(全局/会话)、是否动态可改、单位;查语法看对应语句章节。不要背参数,知道去哪查就行。
复制与高可用
- 复制(Replication)总览:复制原理、线程模型、各复制模式的官方说明,第 6 篇的原理部分基本来自这里。
- GTID 复制:GTID 的生命周期、
gtid_purged的语义、在线切换步骤。 - 组复制(Group Replication):MGR 的成员管理、单主/多主模式、流控参数和限制条件。
- 半同步复制:8.0.26 之后插件名改成
semisync_source/semisync_replica,老教程的插件名会装不上。 - Orchestrator 文档:复制拓扑探测与自动切换,配置项和故障检测逻辑讲得很细。
- ProxySQL 文档:读写分离、连接池、查询规则的配置手册。
备份与恢复
- mysqldump 文档:
--single-transaction、--source-data(原--master-data)等参数逐条解释。 - mysqlbinlog 文档:按时间/位点解析 binlog,做时间点恢复(PITR)就靠它。
- Percona XtraBackup 文档:物理热备的完整流程,增量备份、
--prepare、部分恢复都有示例。 - Percona Toolkit 文档:
pt-query-digest(慢查询分析)、pt-heartbeat(复制延迟)、pt-table-checksum(主从校验)、pt-osc(在线 DDL)都在这里。 - gh-ost:GitHub 出品的在线 DDL 工具,基于 binlog 追增量,对大表比 pt-osc 更友好。
监控与诊断
- performance_schema 文档:
events_statements_summary_by_digest、data_locks等表的字段说明,自己写诊断 SQL 时必查。 - sys schema 文档:把 performance_schema 包装成人话视图,
sys.statement_analysis、sys.innodb_lock_waits用起来省事。 - mysqld_exporter:MySQL 的 Prometheus 采集器,collector 开关和权限要求写在 README 里。
- Prometheus 官方文档:PromQL、抓取配置、告警规则的权威说明。
- Prometheus 核心概念与架构:本站的 Prometheus 入门篇,理解拉模型和标签模型后再看 MySQL 指标会顺很多。
社区与博客
- Percona 博客:社区里最值得长期订阅的 MySQL 内容源,故障复盘、参数调优、版本对比写得扎实,很多坑别人已经踩过。
- Planet MySQL:聚合了各路 MySQL 博客的入口,想找某个具体问题的实践文章可以从这里翻。
- MySQL Community 论坛:官方社区论坛,复现步骤写清楚的情况下回答质量不错。
- DBA Stack Exchange:带
mysql标签的问答,执行计划和锁的问题常有高质量回答。 - awesome-mysql:社区维护的工具与资源清单,备份、监控、高可用方案一站收齐。
版本与升级
- MySQL 升级手册:原地升级(in-place)和逻辑升级(dump 再导入)两条路的完整步骤,跨大版本必须按它走。
- MySQL Shell 升级检查器:
util.checkForServerUpgrade()能在升级前扫出废弃语法、保留字冲突、字符集问题,比升完再炸好。 - MySQL 版本策略:LTS 与 Innovation 两条发布线的区别,决定你该选 8.0、8.4 还是 9.x。
- MySQL 8.0 变化总览(What Is New):8.0 相对 5.7 的变化清单,含查询缓存移除、默认字符集与认证插件变更,老系统迁移前对照自查。
- 读目标版本的 Release Notes 和废弃清单;
- 跑
util.checkForServerUpgrade(); - 在预发环境用真实数据量演练一次,记录耗时;
- 升级前做全备 + binlog 归档,并确认回滚方案。
四步里最容易被跳过的是第 3 步,也是最容易出事的。
安全与加固
- MySQL 安全指南:账号管理、权限模型、SSL/TLS 配置、审计插件(
audit_log)的官方说明。 - 密码策略组件:
validate_password的强度等级和参数,生产环境别关。 - CIS MySQL Benchmark:社区公认的加固基线,逐条对应到具体配置项,做等保/合规时常用。
- MySQL 企业版审计:需要留存 SQL 审计日志时看这个;社区版可以用 MariaDB Audit Plugin 或代理层审计替代。
官网安全章节反复强调的一点:应用账号只给业务库的 DML 权限,绝不给 GRANT OPTION、FILE、SUPER。FILE 权限可以读服务器任意文件,SUPER 能改全局变量和 kill 任何连接,这两个是提权的关键跳板。
客户端与工具
- MySQL Shell:官方的新一代命令行工具,支持 JS/Python 脚本、并行导入导出、升级检查,替代 mysql 客户端做批量运维很顺手。
- MySQL Workbench:官方图形客户端,建模、ER 图、性能面板都有,适合本地开发和临时排查。
- DBeaver:开源通用数据库客户端,跨 MySQL/PostgreSQL/Redis 都能连,团队里统一工具时省事。
- mycli:带语法高亮和自动补全的 MySQL 命令行,交互体验比原生
mysql好很多。 - Percona Toolkit 安装说明:Ubuntu 上加 Percona 源后
apt install percona-toolkit即可,第 7 篇的pt-query-digest依赖它。
云上 MySQL
- 阿里云 RDS MySQL 文档:备份恢复、只读实例、数据库代理、参数模板的说明,云上运维的日常入口。
- 腾讯云 CDB for MySQL 文档:与阿里云类似的托管能力,跨云迁移时对照参数差异很有用。
- AWS RDS for MySQL 文档:参数组、只读副本、自动备份窗口的概念,海外业务常用。
- Amazon Aurora MySQL 文档:计算存储分离架构,兼容 MySQL 但有行为差异,迁上去之前要测。
云数据库的很多「故障」其实是平台侧行为:主备切换、备份窗口、参数模板未生效、连接数被规格限制。排查时先看云监控和事件中心,再去查 SQL——方向搞反了会白忙一场。
症状对照:该翻哪一份
排障时最耗时间的不是解决问题,是不知道该信谁。下面这张表按「现象 → 首选资料」整理,照着翻能少走弯路:
| 现象 | 先看 | 再看 |
|---|---|---|
| 报错码不认识(1040/1205/1213) | 官方错误码手册 | 第 8 篇对应故障章节 |
| 参数行为跟预期不一致 | 8.0 参考手册的系统变量章节 | Release Notes 确认版本变更 |
| 复制断了、GTID 对不上 | 复制手册 + GTID 章节 | 主从状态字段说明 |
| 慢查询优化没头绪 | 执行计划章节(EXPLAIN) | Percona 博客的案例文章 |
| 备份恢复失败 | XtraBackup 文档 / mysqldump 文档 | 第 5 篇恢复演练步骤 |
| 想监控但不知道采什么 | mysqld_exporter README | 第 7 篇核心指标 |
| 云上实例行为异常 | 云厂商 RDS 文档 | 云监控与事件中心 |
| 升级后功能报错 | 废弃特性清单 | 升级检查器输出 |
官方手册 > 官方博客 / Release Notes > Percona 等厂商博客 > 个人博客 > 论坛问答。不是后面几类不能用,而是冲突时以前面的为准;尤其参数默认值这种东西,各版本都在变,只有手册写的是当前版本的事实。
进阶读物
- 《高性能 MySQL》(第 4 版):偏架构与调优,索引设计、复制、分库分表几章值得反复看。
- 《MySQL 技术内幕:InnoDB 存储引擎》:讲清 Buffer Pool、B+ 树、事务和锁的底层实现,配合第 1 篇一起看效果最好。
- MySQL 8.0 新特性系列(官方博客):数据字典、原子 DDL、直方图、降序索引这些 8.0 变化的背景。
MySQL 8.0 改动很大:查询缓存被删、默认字符集变 utf8mb4、默认认证插件变 caching_sha2_password、CHANGE MASTER 语法被 CHANGE REPLICATION SOURCE 取代。看到 5.7 时代的教程先确认版本,尤其是 my.cnf 参数名和复制命令,照抄很容易报错。
- 先看错误码,确定问题类别(官方错误码手册);
- 再查对应语句/参数的官方文档,确认行为不是 bug;
- 然后看 Release Notes,确认是不是版本变更导致;
- 最后再去社区博客找实践案例,对照自己的版本和场景。
按这个顺序,大部分「疑难杂症」在第二步就能定位。