新書推薦:
《
甲骨文丛书·剑桥世界暴力史(第一卷):史前和古代世界(套装全2册)
》
售價:HK$
210.6
《
甲骨文丛书·中华早期帝国:秦汉史的重估
》
售價:HK$
300.2
《
欲望与家庭小说
》
售價:HK$
101.2
《
惜华年(全两册)
》
售價:HK$
72.2
《
甲骨文丛书·古代中国的军事文化
》
售價:HK$
99.7
《
中国王朝内争实录(套装全4册):从未见过的王朝内争编著史
》
售價:HK$
250.7
《
半导体纳米器件:物理、技术和应用
》
售價:HK$
181.7
《
创客精选项目设计与制作 第2版 刘笑笑 颜志勇 严国陶
》
售價:HK$
63.3
編輯推薦:
去哪儿DBA老大|ACE Director|MySQL用户组主席周彦伟领衔打造
源码专家强势加盟,集三大主流开源项目源码剖析与实战于一书
一呼百应,MySQL官方指定专家*NoSQL|Replication独家内幕
DBA案头必备,覆盖服务器性能|集群高可用|自动化运维高级话题
內容簡介:
MySQL能够处理拥有数十亿行的大型数据库,随着越来越多的公司和大型组织发现MySQL完全能够满足自己的数据库处理需求,其用户量一直还会持续高速增长。本书是一本介绍如何高效使用MySQL进行运维的高级实战指导用书,除MySQL核心技术之外,更是首次披露热门工具Galera与Inception的独家内幕。
關於作者:
周彦伟:去哪儿网数据库总监,中国MySQL用户组主席,Oracle MySQL ACE Director王竹峰:去哪儿网数据库技术专家,Inception开源项目作者,中国MySQL用户组主席团成员强昌金:去哪儿网高级DBA,Inception开源项目维护者和贡献者,Redis中国用户组创始人兼副主席
目錄 :
目录
第一部分 MySQL篇
1MySQL源代码入门
MySQL源代码的组织结构
Linux下的编译
安装MySQL库
MySQL 5.7权限处理
2MySQL启动过程
3连接的生命与使命
用户连接线程创建
MySQL处理请求
总结
4MySQL表对象缓存
表结构的实现原理
涉及的参数变量
优缺点总结
存在的问题
5InnoDB初探
InnoDB的源代码目录结构
InnoDB存储引擎文件组织
InnoDB体系结构
InnoDB存储引擎启动与关闭
InnoDB 存储引擎的启动
InnoDB存储引擎的关闭
6InnoDB数据字典
背景
系统表结构
字典表加载
Rowid管理
总结
7InnoDB数据存储结构
表空间文件组成结构
段
簇
页面
段、簇、页面组织结构
8InnoDB索引实现原理
背景
B 树及B树的区别
索引的设计
聚簇索引和二级索引
二级索引指针
神奇的B 树网络
InnoDB索引的插入过程
一个页面至少要存储几条记录
页面结构管理
文件管理头信息
页面头信息
最小记录和最大记录
页面数据空间管理
经典的槽管理
页面尾部
页面重组
索引页面的回收
9InnoDB记录格式
背景
从源码入手了解行格式
总结
10揭秘独特的两次写
单一页面刷盘
批量页面刷盘
两次写组织结构
批量刷盘两次写实现原理
两次写的作用
发散思维
总结
11InnoDB日志管理机制
InnoDB Buffer Pool
REDO LOG日志文件管理的用途
MTR InnoDB物理事务
日志的意义
日志记录格式
日志刷盘时机
REDO日志恢复
数据库回滚
数据库UNDO段管理
数据库UNDO日志记录格式
回滚时刻
总结
12MySQL 5.7中崭新的MySQL sys Schema
Performance Schema的改进
sys Schema介绍
sys Schema视图摘要
sys Schema重点视图与应用场景
使用风险
总结
13方便的MySQL GTID
GTID 相关概念
什么是GTID
GTID集合
GTID生命周期
GTID的维护
gtid_executed表
gtid_executed表压缩
GTID搭建主从
搭建主从时,需要注意的MySQL参数
开启GTID
搭建主从
使用GTID案例总结
如何跳过一个GTID
利用GTID模式快速改变主从复制关系
在线将传统模式复制改为GTID模式复制
在线将GTID模式复制改为传统模式复制
GTID的限制
14MySQL半同步复制
半同步特性
半同步主库端
半同步从库端
半同步实现
插件安装
半同步自动开关
15MySQL 5.7多线程复制原理
背景
行之有效的延迟优化方法
MySQL 5.6的多线程复制
MySQL 5.7的多线程复制
ordered commit
多线程复制分发原理
异常故障恢复
16大量MySQL表导致服务变慢的问题
背景
问题分析
案例解决
总结
17MySQL快速删除大表
背景
问题分析
案例解决
发散思维
总结
18两条不同的插入语句导致的死锁
背景
问题分析
发散思维
总结
19MySQL在并发删除同一行数据时导致死锁的分析
背景
问题分析
发散思维
总结
20参数SQL_SLAVE_SKIP_COUNTER的奥秘
21Binlog中的时间戳
背景
问题分析
发散思维
事务中的事件顺序
问题延伸
show processlist中的Time
总结
22InnoDB中Rowid对Binlog的影响
背景
问题分析
总结
23MySQL备份:Percona XtraBackup的原理与实践
备份背景及类型
认识Percona XtraBackup
XtraBackup的工作流程
XtraBackup的备份原理
XtraBackup 需要的权限
innobackupex常用的备份选项说明
XtraBackup备份实践
全量备份
增量备份
并行备份
其他备份
案例实践与心得
建议与提醒
24MySQL分库分表
分库分表的种类
分库分表的原则
分库分表实现
数据库层的实现
业务层的实现
25MySQL数据安全
单机安全
集群安全
备份安全
MySQL实例安全保证
Double Write
REDO LOG
MySQL集群安全保证
传统的主从模式如何保证数据库安全
Semi_Sync Replication方式的复制
MySQL集群化如何保证数据库安全
总结
26MySQL 性能拾遗
适当的数据文件大小
碎片空洞问题
设计问题
合理设计表结构
冗余存储
拆分存储
重复存储
特别提醒
正确使用索引
MySQL系统参数
内存和CPU
磁盘的革命
云中漫步
总结
27MySQL Group Replication
Group Replication概述
组的概念
多主复制
单独的通信机制
Group Replication服务模式
单主模式
多主模式
服务模式的配置
Binlog Event的多线程执行
group_replication_applier通道
基于主键的并行执行
搭建Group Replication复制环境
MySQL的参数设置
Group Replication插件的使用
Group Replication插件的基本参数设置
Group Replication的数据库用户
Group Replication组初始化
新成员加入组
Group Replication的高可用性
组内成员数量的变化
强制移除故障成员
Group Replication的监控
Group Replication的基本原理
状态机复制
分布式的状态机复制
分布式的高可用数据库
深入理解Group Replication中事务的执行过程
本地事务控制模块
成员间的通信模块
全局事务认证模块
异地事务执行模块
事务流程的总结
深入理解成员加入组的过程
组视图
加入组时视图的切换
View_change_log_event
恢复
28MySQL Document Store面面观
新的JSON数据类型和JSON函数
JSON数据类型
JSON函数详解
JSON函数的运用
MySQL X Plugin 和 X Protocol
支持NoSQL所做的努力
安装MySQL X Plugin
MySQL Shell
安装MySQL Shell
运行MySQL Shell
在MySQL Shell中操作JSON文档
用脚本执行MySQL Shell
X DevAPI
总结
参考资料
第二部分 Galera篇
29Galera Cluster的设计与实现
Galera Cluster的优点
Galera的引入
Galera接口
总结
30Galera 参数解析
状态参数
变量参数
31Galera的验证方法
Binlog与Galera的关系
验证方法
32Galera的消息传送
33GCache实现原理
配置参数
实现原理
发散思维
34大话SSTIST细节
初始化节点环境
连接到集群并且做SSTIST
如何提供增量数据
总结
35DonorDesynced详解
实现方式
意义何在
问答环节
36Galera的并发控制机制
数据复制
写集验证
写集APPLY
事务Commit
37Galera的流量控制
流量控制的定义
流量控制的实现原理及影响
两个问题
38Galera Cluster影响单节点执行效率的因素
单点验证
并发控制
等待GTID
总结
39grastate.dat文件揭秘
引子
分析研究
总结
40Galera Cluster从库的转移
没有开启Server级GTID的情况
开启了GTID(server级)的情况
总结
41Galera Cluster节点与其从库的随意转换
背景
从节点向PXC节点的转换
PXC节点向异步从节点的转换
42业务更新慢,不是由Galera引起的
43在线改表引发的Galera Cluster集群死锁
背景
用Binlog来代替触发器
表名交换
Galera Cluster中的问题
一个有趣的实验
解决方案
总结
第三部分 Inception篇
44Inception诞生记
关于SQL审核
半自动化方法
人肉法
不满现状的追求
何谓Inception
45Inception安装与使用
下载和编译
启动配置
线上配置需求
需要额外注意的点
使用方法
举例说明
环境变量的设置
46支持选项
选项说明
DDL与DML语句分离
小技巧
47Inception的备份回滚
备份存储架构
备份所需条件
48审核规范
支持的语句类型
公共检查项
插入语句检查项
更新、删除语句检查项
表属性检查项
列属性检查项
索引属性检查项
修改表语句检查项
总结
49参数变量
语法和变量
注意事
內容試閱 :
推荐序1
周彦伟,我们又称呼他为盐味。在浙江大学同窗七年的时间里,盐味给人的印象是聪明又很认真,幽默而又内向,专注却不失好奇。所以,在他毕业之后去了一家软件公司的时候,我们都觉得他会成为一名合格的程序员。但他却总有意外之举先是在写了五年程序之后,改行做了DBA;然后又以中国MySQL用户组主席的身份,把MySQL社区做得风风火火、红遍全国;紧接着又被Oracle授予象征Oracle和MySQL DBA至高荣誉的ACE Director;同时,他又领导了一个关于MySQL审核的开源项目Inception。作为他的大学同学和一名计算机技术教育从业者,我真心为他高兴。
最近得知,盐味的新书《MySQL运维内参》即将完稿出版,我深知写书的艰辛与不易,这是需要巨大的恒心和毅力,付出比常人更多的心血和汗水才能完成的,非常敬佩他和他的创作团队。
我曾在同济大学计算机科学与技术系参与过数据库课程的教学工作,遍观《MySQL运维内参》的内容,其对数据库系统原理和基础实现的讲解非常细致和认真,结合基本功能和源码实现的讲解又能让读者更清晰地理解MySQL技术,而理论与实践的结合更能维护论点、说明原理。相信此书能够帮助数据库特别是MySQL数据库学习者和使用者在学习工作中百尺竿头、更进一步。
王瀚漓
同济大学计算机科学与技术系教授、博导
推荐序2
MySQL是一个非常优秀的开源关系数据库管理系统。我第一次接触MySQL是在2002年,令业界称道的开源和高性能两大特性吸引我去尝试了解它。虽然后来由于种种原因没有在MySQL领域深耕,但一直很关注它的发展。MySQL的快速普及,除了得益于互联网的高速发展,其支持事务和行级并发的InnoDB存储引擎也功不可没,InnoDB设计上的简洁精美及其高性能令人叹服,值得数据库应用开发者、数据库管理员和数据库爱好者花时间去研读。学习它的设计思想,能帮助我们了解关系型数据库最核心的运作原理,我后来的工作深受其启发,获益良多!
《MySQL运维内参》不仅仅是一本关于MySQL运维的书。在第一部分MySQL篇,作者介绍了MySQL 服务器线程的启动和运行原理,并用相当大的篇幅详细介绍了InnoDB的数据字典对象和数据存储的细节,特别是InnoDB无处不在的索引和B 树算法,以及保证物理文件存储结构合法性的物理事务概念,这一概念对于关系型数据库系统的ACID特性至关重要。此外,还介绍了基于Binlog的复制,可用于经典的MySQL高可用场景。MySQL特有的嵌入式存储引擎架构在逻辑复制中可能引发ROWID问题,另外InnoDB半物理半逻辑的REDO方式,可能导致潜在的数据页断裂,因此需要引入特有的二次写入。这些MySQLInnoDB深层的特性和机制,随着MySQL篇的展开,都一一呈现在读者面前。阅读这些章节,如同和一个在数据库实现方面有深厚功底的专家对话,能让我们了解MySQLInnoDB的优势和局限,从而在实际工作中扬长避短,发挥MySQL及支撑它的硬件潜能。
保证数据安全有效是数据库运维的基本职责,作者以亲身经历,讲述了MySQL数据库在运行中可能碰到的故障和排查方式,以及如何规避可能的风险等。这些经验对于我们在实际工作中处理超长事务、死锁现象等都有很好的借鉴意义。
本书的第二篇讲述了高可用Galera集群的原理、实现细节,以及使用中可能碰到的问题和解决方式。Galera是一种基于复制的允许多点读写的高可用集群系统,而其他MySQL的高可用架构基本都是主从式的,这使得Galera在处理业务的负载均衡方面具有明显的优势。考虑到作者一手打造了国内最大的Galera集群,并已经投入到高并发大流量的互联网生产环境,本书关于Galera原理和运维的相关描述的权威性是毋庸置疑的,因此本书也是难得的Galera学习和使用的参考资料。
MySQL的小巧灵活及过于快速的成长,也让它付出了代价。MySQL擅长快速执行充分调优的相对简单的SQL,而处理复杂SQL的能力很弱,因此甄别那些有可能会拖跨MySQL的劣质SQL语句(这个问题对于其他数据库系统也存在,只是程度不同)成为每一个MySQL DBA的重要任务,而Inception正是帮助DBA自动处理这一工作的利器,能极大提升这方面的效率。本书的作者同时也是Inception软件的作者,他们无私地把Inception这一成果贡献给了社区,并在本书中讲述了Inception的起源、功能特性和使用方法。Inception的实现利用了很多编译知识,如果能结合Inception的源码阅读本书的相关章节,一定能收获更多。
我虽然不是MySQL领域的专家,但是数据库相关的很多原理知识都是相通的,有幸能在出版之前阅读到本书,我深切感受到其语言表达和技术内容之美。现在推荐给大家,希望本书能对大家的工作、学习有所帮助。
韩朱忠
达梦数据库高级副总经理
推荐序3
在DB-Engines网站上,维护着一个数据库流行度积分榜,最近两年的积分榜前两位一直是Oracle和MySQL,并且两者的积分已经相当接近,我查看了一下目前的分数,Oracle是1416,而MySQL是1366,由此可见MySQL的流行(2017年1月17日数据)。
一个开源的关系型数据库能够挑战Oracle数据库十几年来雄霸天下的位置,这本身就是开源领域的巨大成功。而一个产品的成功,不仅仅是靠技术层面的安全、稳定和高效,更重要的是要有活跃的社区和生态圈。在中国MySQL生态的构建过程中,彦伟的贡献有目共睹,他在完成自我的技术成长之后,又率先拉起大旗创立了ACMUG用户组,并且踏踏实实地在全国范围进行活动组织和技术分享,极大地活跃和带动了MySQL社区的发展,彦伟也因此而成为了国内第三位MySQL方向的Oracle ACE总监。
所谓同声相应、同气相求。在彦伟的影响下,一批MySQL俊彦汇聚到去哪儿网的数据库团队,其中就包括本书另两位作者年轻专家竹峰和昌金。在技术上的实践和积累需要长期的底蕴和实干,彦伟的团队近年在去哪儿网的践行也尤其值得关注。现在,他们将实践多年的积累汇聚成书,与行业里的同仁分享,这对大家实在是难得而宝贵的财富。
我阅读了本书的部分章节,对比了MySQL的两次写与Oracle数据库相关实现上的异同,感觉颇为受益;而Inception作为MySQL的SQL审核产品,与云和恩墨的z3有异曲同工之妙,从Inception的诞生到开源,我一直都在关注,好的思路和产品,也必然是殊途同归的。我一直认为,在开发测试阶段强化SQL质量审核,是DevOps在数据库领域的最佳落地点,也是DBA们将踩过的坑和开发经验进行分享的最具价值的呈现,防患于未然的事前审核优化,才是对企业和业务负责任的态度。现在,作者们把Inception的来龙去脉呈现出来,一定会让很多DBA们感同身受,并开始学习和借鉴。
一本好书,十年磨砺!愿读者朋友们能够体味其中甘苦,一同尽饮DBA们带来的佳酿!
而至于无穷回味、激发创新、转折演绎,则要靠各位去谱写新的篇章!
盖国强
云和恩墨创始人,Oracle ACE总监,ACOUG主席
推荐序4
由于ACMUG(中国MySQL用户组)的缘故,我很早就认识了彦伟,并且意气相投、一见如故。他是ACMUG的创始人兼主席,同时也是一名运维经验丰富的DBA,他曾经分享过在人人网鼎盛时期以区区几名DBA应对MySQL巨大访问量的经历,也谈起过在去哪儿网主导的针对电子商务和交易的MySQL运维架构的革新和SQL审核工具Inception的创作。从UGC类型的人人网到电商类型的去哪儿网,这对DBA本身就是一个进阶。从使用开源工具到自己创作并开源工具,这更是一个巨大的进步。
王竹峰就是Inception的主要开发者,他的数据库理论和源码功底非常深厚,而他边运维边进行源码开发和研究的工作方式更加促进了他对MySQL整个体系架构原理的理解,带着问题看源码,装着源码解决问题,通过源码解读MySQL的各种特性,这已经成了竹峰的标签。
我是以运维DBA的角色开始我的职业生涯的,经历了长期一线实战的积累和锻炼,随后才慢慢转为数据库内核开发。即便是现在,我跟阿里云的其他同事也会经常处理一线运维问题,通过对这些问题的处理,我们积累了经验和需求,再反馈到数据库源码中去,这是我们不断前进的原动力。一线运维经验与数据库理论和源码相结合的重要性,我有深刻的体会。
得知彦伟愿意牵头把他和团队这几年的经验和技术通过书的形式写出来分享,我非常欣喜并期待,这是对广大MySQLDBA最好的礼物。
彭立勋
MariaDB基金会成员,ORACLE MySQL ACE
推荐序5
自从2015年10月MySQL 5.7 GA,以及2016年9月8.0 DMR版本启动后,我们可以看到Oracle官方明显加大了对MySQL的开发力度,努力把MySQL打造成一个全明星产品,让我们对MySQL未来的发展更加坚定了信心。
作为一个从业多年的MySQL DBA,我从未停止探索理解MySQL中各方面的技术实现细节,包括最重要的Server层及InnoDB存储引擎。此外,我也关注MySQL的各种高可用实现方案,以及作为DBA非常迫切需要的自动化管理平台。
2016年12月,MySQL 5.7正式发布了MySQL Group Replication,我们终于可以用上这个官方的多节点同时写入高性能架构的方案了。当然,新事物总是需要有一个阶段才能完善,还不能大规模上线使用。那么,现阶段如果有这样的需求怎么办呢?毫无疑问,肯定是选择Galera
Cluster方案。
如果有这样一个工具,能帮助DBA完成SQL上线前的审核,审核通过后能自动上线,万一反悔或误操作还能倒带(回滚),相信您一定会很期待吧!如果这个工具还开源了,是不是更兴奋了呢?没错,这就