内容简介
本书是一本面向广大DBA(数据库管理员)的MySQL数据库实用手册,分为10章,分别介绍了MySQL的基础知识和安装部署,体系架构特性,功能架构特性,升级与迁移,性能优化,运维管理,故障分析,安全管理,架构设计与应用开发,以及云数据库建设等内容,让读者对MySQL 8.0 数据库管理和运维更加得心应手。
本书的目标读者包括:数据库架构师、运维管理人员、开发人员,以及对相关技术感兴趣的人。非专业技术人员也可以从本书中了解MySQL 8.0 的技术特性,加深对数据库行业的了解。
目录
目录
序言
推荐序1
推荐序2
推荐序3
前言
第1章MySQL概述
1.1MySQL基础知识
1.1.1MySQL发展历史
1.1.2MySQL的版本生命周期
1.1.3MySQL的主要分支
1.1.4MySQL各版本特点
1.1.5MySQL开发过程版本标识
1.1.6MySQL版本选择原则
1.2MySQL 8.0的安装部署
1.2.1MySQL的安装部署流程
1.2.2MySQL 8.0的基本安装部署
1.2.3使用Shell脚本批量部署MySQL
环境
1.2.4定制化RPM包安装部署
1.2.5基于Docker环境安装MySQL
第2章MySQL 8.0体系架构特性
2.1数据字典
2.1.1全局事务性数据字典
2.1.2新的SDI元数据结构
2.1.3隐藏的数据字典表的可视化功能
2.1.4全新的各类表空间
2.1.5采用锁竞争算法的事务处理机制
2.2日志体系
2.2.1binlog的新增算法与功能
2.2.2Redo日志的新增功能
2.2.3慢查询日志的附加信息
2.3引擎
2.3.1InnoDB引擎底层结构的变化
2.3.2引入数据分析引擎HeatWave
第3章MySQL 8.0功能架构特性
3.1MySQL 8.0新增函数和新增集合操作
3.1.1窗口函数
3.1.2集合操作
3.2MySQL 8.0新增索引类型及特性
3.2.1隐藏索引
3.2.2降序索引
3.2.3函数索引
3.2.4Hash Join特性
3.2.5Skip Scan Range特性
3.2.6Anti Join(反连接)特性
3.3复制和高可用性方面的新增功能
3.3.1高可用组复制(MGR)功能
3.3.2异步复制源配置功能
3.3.3MGR集群容灾功能
3.3.4增强的多源复制功能
3.3.5MySQL Shell快速创建、纳管
副本集和MGR集群功能
3.3.6MySQL Router+MGR方式实现
高可用
3.3.7ProxySQL+MGR方式实现高可用
3.4MySQL 8.0新增功能
3.4.1角色管理
3.4.2直方图
3.4.3资源组
3.4.4优化器提示
3.4.5新增的优化器行为标志
3.4.6DDL即时操作
3.4.7增强密码机制
3.4.8增强的JSON功能
3.4.9增强的EXPLAIN功能
3.4.10GIPK隐藏主键可视化功能
3.4.11参数修改持久化功能
3.4.12克隆插件功能
3.4.13MySQL Shell的逻辑备份恢复API
功能
第4章MySQL 8.0的升级与迁移
4.1MySQL 8.0的版本升级
4.1.1MySQL数据库升级的方法
4.1.2MySQL 8.0升级的注意事项
4.1.3MySQL 5.7升级至MySQL 8.0的
步骤
4.2MySQL 8.0的迁移
4.2.1MySQL数据库迁移方案设计
4.2.2MySQL 8.0数据库迁移工具及注意
事项
目录第5章MySQL 8.0性能优化
5.1MySQL 8.0性能优化概述
5.1.1性能优化的作用与方法
5.1.2性能分析需要收集的11类
信息
5.1.3导致性能突发事件的十大原因
5.1.4性能监控指标
5.2MySQL 8.0性能优化的关键点
5.2.1数据库配置优化
5.2.2库、表、字段和索引的设计
优化
5.2.3SQL语句优化
5.3MySQL 8.0性能优化实践
5.3.1SQL语句执行性能的指标——
QRTi
5.3.2通过events_statements_summary_
by_digest表发现问题SQL语句
5.3.3使用statement_analysis视图分析
SQL语句
5.3.4通过分析sys库的存储过程排查
性能问题
5.3.5通过监控InnoDB存储引擎进行
性能优化
5.3.6问题SQL语句优化命令行
5.3.7定位导致CPU使用率高的问题
第6章MySQL 8.0的运维管理
6.1MySQL 8.0运维管理概述
6.1.1数据库运维管理的作用
6.1.2数据库运维管理的主要工作
6.2MySQL 8.0运维管理的关键点
6.2.1高频使用的运维管理操作
6.2.2运维管理中的高危操作
6.2.3运维管理中常用的官方工具
6.2.4运维管理中常用的周边工具
6.3MySQL 8.0运维实践
6.3.1binlog文件查看和解析
6.3.2利用setup_actors 命令进行资源
使用统计
6.3.3数据库备份和恢复实践
6.3.4数据库热数据加载设置
6.3.5Query Rewrite插件的使用
6.3.6控制InnoDB的并发线程
6.3.7备份中全局读锁FTWRL对数据库
的影响
6.3.8如何快速删除大量数据
第7章MySQL 8.0故障分析
7.1MySQL 8.0故障分析概述
7.1.1MySQL 8.0的故障类型
7.1.2MySQL 8.0故障分析方法
7.2MySQL 8.0故障分析关键点
7.2.1日志信息
7.2.2监控指标
7.2.3诊断工具
7.2.4SQL语句
7.3MySQL 8.0典型故障分析实践
7.3.1导致服务器OOM的故障分析
前言/序言
前言
MySQL 是当前最受欢迎的关系数据库之一,应用十分广泛。MySQL 的每个版本都有着自己的生命周期,目前最新版本为8.0。2022年,MySQL 5.6 Extended 的支持到期,经历了升级至5.7 版本的艰苦历程;2023年10月,MySQL 5.7版本生命周期已尽,同时MySQL 8.0 版本周期又延长至2026年。在MySQL 5.7 版本上新增诸多特性的MySQL 8.0 日益成为MySQL 的主要版本。
为了让广大同行更好地了解和运维MySQL 这个重要的数据库,为MySQL 开源社区的建设尽一份绵薄之力,我们把自己多年积累的、针对MySQL 数据库的开发运维工作经验毫无保留地通过本书展现给大家。
本书从知识结构上分为以下六大部分。
第一部分(第1~3 章)详细介绍MySQL 8.0 的各种安装部署方式、体系结构和功能,并针对这些内容进行了实例展示。
第二部分(第4 章)介绍如何将数据库迁移到MySQL 8.0,包含迁移的方法、迁移工具和迁移注意事项。
第三部分(第5~7 章)介绍MySQL的性能优化、运维管理、故障分析。以实际运行中的MySQL 案例为基础,说明如何分析性能问题、优化数据库性能的关键点,如何有效地管理MySQL ,以及碰到故障时如何应对,应该怎样避免故障发生。
第四部分(第8 章)为安全方面的内容,介绍如何利用社区版提供的特点,做好MySQL 的安全设置,包含数据加密、SLR 设置、账号密码安全设置、权限最小原则设置方法等内容。
第五部分(第9 章)为MySQL 8.0应用开发的内容,介绍MySQL 架构设计和应用开发的规范。
第六部分(第10 章)介绍MySQL 的云数据库建设。随着云计算的普及,MySQL 将向云原生架构演进。这一部分内容介绍如何实现云数据库上MySQL 的管理,包含基础架构承载层设计、资源池设计、一体化运维管理与服务设计、规范化和专业化体系建设。
致谢(崔虎龙)
古人云:“活到老,学到老。”在几十年的职业生涯里,感谢一起工作的同事,让我学到了很多MySQL 方面的知识。
感谢云和恩墨公司,让我有机会备战在项目交付一线,让我在MySQL 领域积累了丰富的经验和专业知识。
感谢机械工业出版社的编辑们,在这半年多的时间中始终支持我的写作,他们的鼓励和帮助十分有价值。
谨以此书献给我最亲爱的家人,以及众多热爱MySQL的朋友。
致谢(胡自贵)
非常开心能够和崔虎龙一起编写本书,让我有机会结合用户的实际需求场景,把我对MySQL 数据库的理解,构建MySQL云数据库的思路和大家分享。
MySQL 8.0实用手册——性能优化、架构设计、运维管理、应用开发与云数据库建设感谢云和恩墨公司给了我这个舞台,让我始终奋斗在面向客户的第一线,能够结合不同用户的需求场景制定出有针对性的解决方案。感谢机械工业出版社给予我出版图书、分享个人经验的机会。感谢所有关心、支持、信任我的朋友,你们是我坚持写作的动力源泉。
谨以此书献给我最亲爱的妻子和孩子们,因为有你们,我才一直充满了前进的动力。
由于作者的水平有限,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。您可以将书中的错误发到邮箱 cuihulong@163.com ,我们将尽力提供让您满意的解答。如果您有更多的宝贵意见,也欢迎发送邮件至邮箱,我们衷心期待您的真挚反馈。
编者