
互联网公司里面几乎很少有公司不用MySQL,国内互联网巨头都在大规模使用MySQL。如果把MySQL比喻成数据库界的一条巨龙,则性能优化和高可用架构设计实践就是点睛之笔。本书将详细讲解 MySQL 5.7高可用和性能优化技术,细致梳理思路,并与真实生产案例相结合,通过原理阐述到实战部署,帮助读者将所学知识点运用到实际工作中。
本书分为13章,详解MySQL 5.7数据库体系结构,InnoDB存储引擎,MySQL事务和锁,性能优化,服务器全面优化、性能监控,以及MySQL主从复制、PXC、MHA、MGR、Keepalived+双主复制等高可用集群架构的设计与实践过程,并介绍海量数据分库分表和Mycat中间件的实战操作。
本书既适合有一定基础的 MySQL数据库学习者、MySQL数据库开发人员和 MySQL数据库管理人员阅读,同时也能作为高等院校和培训学校相关专业师生的参考用书。
前 言
数字化转型开始从IT 时代进入DT 时代。面对大量的数据和业务,更多的公司意识到了数据价值的重要性,如何管理和利用好数据变得越来越重要。MySQL 是开源数据库方向的典型代表,以MySQL为主的开源技术生态正变得越来越流行。它的发展历程见证了互联网的成长。
相对于成熟的商业数据库,MySQL缺乏高质量的技术文档,我在接触MySQL的过程中,也感觉市面上的相关图书还存在一些不足,基础运维工作(安装部署、备份恢复等)的内容比较多,而高可用架构设计和性能优化方面的图书比较少,技术人员也需要技能提高升级。
说到写书的缘由,我从国企大胆走出来, 去了知名外企工作, 从外企出来后也做过独立顾问和自由讲师。人到中年的时候, 独自一人求职进互联网大厂做架构师,一路走来,才发现克服中年危机的秘诀就是十六个字 “不忘初心,永不止步,锐意进取,砥砺前行”。虽然写书的过程着实是一件很辛苦的事情,但还是坚持了下来。写书就是一种记忆打卡,不但能提升自我,而且能够帮助到别人。
关于本书
目前生产环境中主流的版本是MySQL 5.7,本书知识结构主要包括MySQL 5.7性能优化和高可用架构设计实践两方面。全书共13章,内容覆盖MySQL 5.7数据库体系结构、InnoDB存储引擎、MySQL事务和锁、性能优化、服务器全面优化、性能监控、主从复制,以及PXC集群、MHA自动故障转移群集、MGR组复制、Keepalived+双主复制等高可用集群架构的设计与实践,还有针对海量数据进行分库分表和Mycat中间件介绍和实战操作。全书秉承“实践为主、理论够用”的原则,将实战操作融入各个知识点的讲解之中。
资源下载
本书使用的源码、工具软件等资源,可以扫描右边二维码通过出版社网盘下载,资源中有技术支持信息。如果下载有问题,请联系booksaga@163.com,邮件主题为“MySQL性能优化和高可用架构实践”。
致谢
完成本书也离不开家庭的大力支持,感谢妻子给予支持和理解,为此她承担了更多家庭事务;感谢父母默默地支持我的想法,虽然看不懂我写的内容,但总是会询问写书的进度;还有我可爱的女儿,看着她活泼可爱的模样,我理解了陪伴是最深情的告白。
感谢清华大学出版社的编辑夏毓彦和其他工作人员对本书的大力支持,帮助我出版了这本有意义的著作。
同时感谢领导及同事们在这段时间里对我工作的支持与帮助,在这里我学到了很多。
宋立桓
腾讯云架构师
2020年3月
目 录
第1章 MySQL架构介绍 1
1.1 MySQL简介 1
1.2 MySQL主流的分支版本 2
1.3 MySQL存储引擎 4
1.4 MySQL逻辑架构 6
1.5 MySQL物理文件体系结构 8
第2章 InnoDB存储引擎体系结构 14
2.1 缓冲池 14
2.2 change buffer 17
2.3 自适应哈希索引 19
2.4 redo log buffer 19
2.5 double write 20
2.6 InnoDB后台线程 22
2.6.1 InnoDB主线程 22
2.6.2 InnoDB后台I/O线程 23
2.6.3 InnoDB脏页刷新线程 24
2.6.4 InnoDB purge线程 25
2.7 redo log 25
2.8 undo log 26
2.9 Query Cache 27
第3章 MySQL事务和锁 28
3.1 MySQL事务概述 28
3.2 MySQL事务隔离级别 30
3.3 InnoDB的锁机制介绍 33
3.4 锁等待和死锁 36
3.4.1 锁等待 36
3.4.2 死锁 38
3.5 锁问题的监控 39
第4章 SQL语句性能优化 42
4.1 MySQL查询过程 42
4.2 创建高性能索引 44
4.2.1 索引的原理 44
4.2.2 聚集索引和辅助索引 46
4.2.3 Index Condition Pushdown 47
4.2.4 Multi-Range Read Optimization 50
4.2.5 Batched Key Access 52
4.3 慢SQL语句优化思路 54
4.3.1 抓取慢SQL语句 54
4.3.2 利用explain分析查询语句 57
4.3.3 利用show profiles分析慢SQL语句 60
4.4 索引使用的原则及案例分析 61
4.4.1 索引使用的原则 61
4.4.2 没有使用到索引的案例分析 62
第5章 MySQL服务器全面优化 64
5.1 MySQL 5.7 InnoDB存储引擎增强特性 64
5.2 硬件层面优化 68
5.3 Linux操作系统层面优化 69
5.4 MySQL配置参数优化 70
5.5 MySQL设计规范 72
第6章 MySQL性能监控 75
6.1 监控图表的指导意义 75
6.2 Lepus数据库监控系统实战 76
6.2.1 Lepus数据库监控系统简介 76
6.2.2 Lepus数据库监控系统部署 77
6.2.3 监控MySQL服务器 85
6.2.4 Lepus慢查询分析平台 89
第7章 MySQL主从复制详解 93
7.1 主从复制的概念和用途 93
7.2 主从复制的原理及过程描述 94
7.3 主从复制的重点参数解析 95
7.4 主从复制的部署架构 97
7.5 异步复制 98
7.6 半同步复制 102
7.6.1 半同步复制概念和原理 102
7.6.2 半同步复制配置 104
7.7 GTID复制 105
7.7.1 GTID特性和复制原理介绍 105
7.7.2 GTID复制配置实战 106
7.8 多源复制 109
7.9 主从复制故障处理 111
7.10 主从延迟解决方案和并行复制 114
第8章 PXC高可用解决方案 118
8.1 PXC概述 118
8.2 PXC的实现原理 119
8.3 PXC集群的优缺点 120
8.4 PXC中的重要概念 121
8.5 PXC集群部署实战 122
8.6 PXC集群状态监控 131
8.7 PXC集群的适用场景和维护总结 132
第9章 基于MHA实现的MySQL自动故障转移集群 134
9.1 MHA简介 134
9.2 MHA原理 135
9.3 MHA的优缺点 136
9.4 MHA工具包的功能 136
9.5 MHA集群部署实战 137
第10章 MySQL Group Replication 156
10.1 MGR概述 156
10.2 MGR基本原理 157
10.3 MGR服务模式 160
10.3.1 单主模式 160
10.3.2 多主模式 160
10.4 MGR的注意事项 161
10.5 MGR部署实战 162
10.6 MGR的监控 166
10.7 MGR的主节点故障无感知切换 170
第11章 Keepalived+双主复制的高可用架构 171
11.1 Keepalived+双主架构介绍 171
11.2 Keepalived介绍 171
11.3 双主+Keepalived集群搭建 172
第12章 数据库分库分表与中间件介绍 179
12.1 关系数据库的架构演变 179
12.1.1 数据库读写分离 179
12.1.2 数据库垂直分库 180
12.1.3 数据库水平分库与水平分表 180
12.2 分库分表带来的影响 182
12.3 常见的分库分表中间件介绍 183
第13章 Mycat中间件详解 185
13.1 Mycat简介 185
13.2 Mycat核心概念 186
13.3 Mycat安装部署 188
13.4 Mycat配置文件详解 193
13.4.1 schema.xml 193
13.4.2 server.xml 196
13.4.3 rule.xml 198
13.5 Mycat分库分表实战 201
13.6 Mycat读写分离实战 208
本书详解MySQL 5.7性能优化和高可用技术,细致梳理思路,并与真实生产案例相结合,通过原理阐述和实战部署帮助读者将所学知识点运用到实际工作中。
宋立桓,IT资深技术专家、布道师,主要负责为企业客户提供顾问咨询、培训和方案设计服务。目前是腾讯云架构师,专注于云计算 、大数据和人工智能,对区块链的相关技术也有深入的研究。著有图书《Cloudera Hadoop大数据平台实战指南》和《AI制胜:机器学习极简入门》。