mysql dba工作笔记电子版书-MySQL DBA工作笔记pdf免费在线阅读

mysql dba工作笔记电子版书-MySQL DBA工作笔记pdf免费在线阅读

编辑点评:数据库管理、架构优化与运维开发

ACE,腾讯云TVP,一线数据库专家多年运维经验凝聚成简,全面理解新时代DBA技术转型思路和运维心得,MySQLDBA工作笔记:数据库管理、架构优化与运维开发,源自2000篇原创技术博客的点滴积累,精品下载站免费提供下载。

MySQL DBA工作笔记pdf免费在线阅读

MySQL DBA工作笔记pdf图片预览

mysql dba工作笔记电子版书-MySQL DBA工作笔记pdf免费在线阅读插图(1)

mysql dba工作笔记电子版书-MySQL DBA工作笔记pdf免费在线阅读插图(2)

mysql dba工作笔记电子版书-MySQL DBA工作笔记pdf免费在线阅读插图(3)

mysql dba工作笔记电子版书-MySQL DBA工作笔记pdf免费在线阅读插图(4)

mysql dba工作笔记电子版书-MySQL DBA工作笔记pdf免费在线阅读插图(5)

mysql dba工作笔记电子版书-MySQL DBA工作笔记pdf免费在线阅读插图(6)

内容简介

本书是来自一线MySQLDBA的技能进阶笔记,凝结了作者多年数据库管理心得。全书从运维管理、架构优化和运维开发三个层面娓娓道来,精心筛选了作者在实际工作中总结的技巧、对常见问题的处理方法以及对于运维体系的思考和实践;尤其是运维开发章节从0到1构建运维体系,能够对DBA已有知识体系和技能栈做到全新梳理。

关于作者

杨建荣,技术爱好者,dbaplus社群发起人之一,OracleACE,腾讯云TVP,YEP成员。拥有十多年数据库开发和运维经验,目前专注于开源技术、运维自动化和性能调优。拥有Oracle10gOCP、OCM、MySQLOCP认证,对Shell、Java、Python有一定功底。每天通过微信、博客进行技术分享,已连续坚持2000多天。

目录大全

第1章MySQL发展和技术选型

1.1如何看待MySQL…………1

1.1.1MySQL始出………1

1.1.2MySQL学习周期和难度….1

1.1.3解读DB-Engines的正确姿势……….2

1.1.4MySQL主要的一些分支….3

1.1.5如何看待MySQL的技术发展………3

1.2如何看待MySQL存储引擎……….5

1.2.1InnoDB发展时间线………..6

1.2.2存储引擎之战…….7

1.2.3存储引擎矩阵图…7

1.3MySQL软件和版本选型.8

1.3.1选择官方版的原因………….9

1.3.2Percona分支的优劣对比….9

1.3.3选择MariaDB的原因……10

1.3.4MySQL版本选型………….10

1.3.5分支选择的参考和标准….11

1.3.6初步结论………….13

1.4MySQL常用工具选择和建议…..13

1.4.1运维管理类工具.14

1.主流运维管理工具…….14

2.数据备份恢复工具…….14

3.MySQL审计插件……..15

1.4.2应用工具………….15

1.客户端工具….15

2.数据库版本管理工具…15

1.4.3监控管理类工具.16

1.操作系统监控16

2.性能监控工具16

1.4.4诊断和优化工具.16

1.诊断工具……..16

2.性能测试工具18

3.慢日志分析工具……….18

1.4.5初步结论………….18

1.5MySQL安装….19

1.5.1常见的三种安装方式……..19

1.5.2MySQL安装规范………….20

1.5.3MySQL5.7安装部署实践与总结..20

1.5.4搭建从库………….23

案例1-1:MySQL频繁停库的问题分析..25

第2章理解MySQL体系结构

2.1通过文件来了解MySQL体系结构………..29

2.1.1从例子来理解MySQL存储结构…32

2.1.2慢日志诊断………32

案例2-1:MySQL日志故障的处理和分析…………35

2.2玩转MySQL数据字典..38

2.2.1MySQL巡检模块:SysSchema的设计……39

2.2.2解惑:MySQL关于数据字典的一个疑问…47

2.3InnoDB体系结构……….50

2.3.1InnoDB体系结构图………51

2.3.2查看InnoDB状态的小技巧………..52

2.3.3InnoDB的多线程技术……53

2.3.4InnoDB的缓存池管理技术…………55

2.3.5InnoDB中的脏页管理……58

2.3.6InnoDB的日志管理………60

2.3.7InnoDB中的检查机制……62

2.3.8MySQL是如何保证数据完整性的63

2.4换个角度看MySQL…….66

2.4.1MySQL里的一些极限值..66

案例2-2:关于MySQL中的一些极限值的初步验证纠错…67

2.4.2mysql.service启动脚本浅析……….68

2.4.3MySQL待改进的一些问题…………71

2.5MySQL参数解析……….72

2.5.1MySQL参数变化分析……73

2.5.2MySQL5.7参数解析……..74

第3章MySQL基础运维面面观

3.1环境部署和构建…………76

3.1.1源码安装MySQL………….76

3.1.2在eclipse中配置MySQL源码环境…………80

3.1.3分分钟搭建MySQL一主多从环境87

3.2MySQL服务管理……….88

3.2.1Socket连接………88

3.2.2TCP/IP连接……..89

3.2.3MySQL访问模式的演进..89

3.2.4无密码登录………90

案例3-1:通过shell脚本检测MySQL服务信息..91

案例3-2:MySQL密码加密认证的简单脚本………93

案例3-3:MySQL中如何得到权限信息..94

方法1:重新导出导入整个数据库94

方法2:导出mysql的权限配置….94

方法3:pt工具导出……..95

3.3MySQL备份恢复……….97

3.3.1数据安全警示录.97

3.3.2常规备份方案…..98

备份工具1:mysqldump..99

备份工具2:xtrabackup工具……101

备份工具3:mysqlpump102

备份工具4:mysqlbackup…………104

备份工具5:binlog备份工具……105

数据导出小技巧………….105

数据导入小技巧………….106

3.3.3MySQL数据恢复………..106

恢复方法1:使用xtrabackup进行数据全量恢复…107

恢复方法2:使用xtrabackup进行数据增量恢复…109

恢复方法3:使用mysqlbinlog手工恢复..112

恢复方法4:使用开源工具恢复数据binlog2sql….115

恢复方法5:使用参数innodb_force_recovery……..117

恢复方法6:基于逻辑的数据恢复…………117

恢复方法7:基于冷热数据分离的恢复思路……….118

恢复方法8:基于句柄的无备份恢复……..119

恢复方法9:直接恢复物理文件..121

3.4MySQL安全审计……..122

3.4.1常用方法………..122

3.4.2性能测试结果…123

3.4.3测试小结………..123

第4章SQL开发规范和基础

4.1数据库开发规范……….124

4.1.1配置规范………..124

4.1.2建表规范………..125

ivMySQLDBA工作笔记:数据库管理、架构优化与运维开发

4.1.3命名规范………..125

4.1.4索引规范………..125

4.1.5应用规范………..126

4.1.6分表规范………..127

4.1.7存储过程规范…127

4.1.8安全规范………..127

4.1.9数据安全规范…128

案例4-1:MySQL无法创建表的问题分析……….131

4.2解读MySQL数据类型135

4.2.1MySQL整数类型………..135

案例4-2:数值类型在binlog中需要注意的细节.136

4.2.2MySQL小数类型………..138

4.2.3MySQL字符串类型…….139

案例4-3:MySQL中需要注意的字段长度……….140

4.2.4MySQL日期类型………..142

案例4-4:MySQL多版本的时间类型问题……….143

4.2.5JSON类型……..144

4.3MySQL特有的SQL….146

4.3.1新增类146

4.3.2删除类147

4.3.3修改类148

专题4-1:解读Replaceinto语句………..148

4.3.4查询类153

4.4MySQL常用函数……..153

4.4.1数学函数………..154

案例4-5:MySQL字符串中抽取数值的方法…….155

案例4-6:orderby的妙用………156

4.4.2字符串函数…….157

案例4-7:MySQL字符函数的压力测试160

案例4-8:字符串动态匹配…….162

4.4.3条件控制函数…162

4.4.4日期和时间函数………….163

案例4-9:Now()和sysdate()的差别……..166

4.4.5系统信息函数…169

4.4.6其他常用的MySQL函数………….169

第5章MySQL运维管理实践

5.1数据变更管理171

5.1.1MySQL脚本部署的四种策略……171

案例5-1:实战对比四种脚本部署策略的优劣…..172

5.1.2通过对比来了解onlineDDL……..175

案例5-2:MySQL5.5版本原生的DDL代价测试………….176

案例5-3:MySQL5.7版本原生的DDL代价测试………….176

5.1.3OnlineDDL的两种算法.177

案例5-4:对比测试onlineDDL的两种算法(copy和inplace)…177

5.1.4pt-osc的原理和实现…….181

案例5-5:源码分析pt-osc的实现原理..181

案例5-6:平滑删除数据的小技巧……….184

5.2MySQL复制管理……..186

5.2.1MySQL复制的四种类型186

5.2.2MySQL半同步复制…….187

案例5-7:简单测试半同步复制190

5.2.3GTID的管理模式………..191

案例5-8:修复GTID复制失败的分析…195

5.2.4如何看待主从延迟………200

案例5-9:MySQL5.6、5.7版本并行复制测试….203

5.2.5主从数据不一致的分析..209

案例5-10:经典的自增列问题测试……..210

案例5-11:主从不一致的修复过程……..212

第6章MySQL查询优化

6.1MySQL优化基础……..215

6.1.1MySQL索引解析………..216

6.1.2推理SQL的解析过程….221

案例6-1:groupby问题浅析….224

6.1.3读懂执行计划…227

6.1.4使用MySQLProfile定位性能瓶颈…………234

案例6-2:合理评估新特性的使用……….238

6.2SQL查询优化240

6.2.1MySQL中的派生表…….240

6.2.2MySQL中的半连接…….243

6.2.3MySQL反连接.247

6.2.4行值表达式优化………….250

6.3MySQL优化技巧……..251

6.3.1MySQL分页逻辑优化…251

6.3.2数据隐式转换…254

案例6-3:一条update语句引发的“血案”……..256

第7章MySQL事务和锁

7.1MySQL并发控制……..263

7.1.1为什么需要事务………….263

7.1.2MySQL并发控制技术方案……….265

7.1.3MySQL中的MVCC…….266

7.2事务隔离级别269

7.2.1MySQL中的隔离级别RR和RC.270

7.2.2RR隔离级别下的unique失效…..272

7.2.3RR隔离级别下的更新冲突……….274

7.3MySQL锁机制…………275

7.3.1MySQL锁的类型………..275

7.3.2索引加锁过程的差异……278

7.3.3这样分析一个死锁问题..280

7.4经典的死锁案例集……283

场景1:3条insert语句导致的死锁问题283

场景2:事务回滚导致的死锁…285

场景3:自增列导致的死锁…….287

场景4:事务提交导致的死锁问题………288

场景5:delete和insert混合的死锁……..291

场景6:2条delete语句导致的死锁问题………….293

7.5事务降维……..294

降维策略1:存储过程调用转换为透明的SQL调用………295

降维策略2:Drop操作转换为可逆的DDL操作.295

降维策略3:Truncate操作转换为安全的DDL操作………295

降维策略4:DDL操作转换为DML操作…………296

降维策略5:Delete操作转换为高效操作…………296

降维策略6:Update操作转换为Insert操作……..296

第8章MySQL集群和高可用设计

8.1MySQL高可用方案…..297

8.1.1MySQL高可用方案概览298

8.1.2MySQL高可用方案的建议……….298

8.1.3MySQL高可用的迭代方案思考..299

8.2MySQL高可用方案之MHA…..300

8.2.1MHA原理和架构………..300

8.2.2如何系统的测试MHA…303

8.2.3快速测试MHA的步骤..304

8.2.4从代码关系图理清MHA的脉络.308

8.2.5我们可能不知道的MHA逻辑…..312

8.2.6MHA的缺点和局限性…313

8.2.7MHA的补充和改进…….314

8.3MySQL高可用方案之InnoDBCluster…315

8.3.1InnoDBCluster三大件…316

8.3.2快速入手InnoDBCluster的建议.317

8.3.3使用sandbox快速部署InnoDBCluster…..318

8.3.4InnoDbCluster核心组件:MGR.323

8.3.5部署MGR的几种姿势…324

方法1:分分钟搭建MGR单主/多主测试环境……324

方法2:线上环境规范部署………325

8.3.6常见的MGR问题……….327

问题1:单主模式加入节点失败..328

问题2:模式配置错误导致无法启动集群328

问题3:节点配置不统一导致集群无法启动……….328

问题4:数据写入失败修复………329

问题5:模拟灾难……….329

问题6:如何判断一个复制组中的主节点330

8.3.7迁移到MGR需要思考的问题…..331

案例8-1:切换到MGR的参考步骤………332

案例8-2:大事务导致的运维系统无法访问………..336

8.4基于consul的高可用扩展方案.339

8.4.1基于consul服务的高可用方案….339

8.4.2基于MHAConsul的MySQL高可用设计………….340

8.4.3MySQL高可用方案:MGRconsul组合测试………341

第9章MySQL性能测试

9.1sysbench压测MySQL.344

9.1.1压测MySQL——环境部署和硬件压测…..344

9.1.2压测MySQL起步……….348

9.1.3压测MySQL——提高吞吐量测试………….351

9.1.4压测MySQL——定位压测瓶颈..356

9.1.5定制sysbench的Lua模板………..360

9.2批量初始化数据性能测试………363

9.2.1批量初始化数据初步想法…………363

9.2.2批量初始化数据的方案..363

方案1:存储过程导入…363

方案2:使用内存表…….364

方案3:使用程序/脚本生成数据,批量导入………365

方案4:使用内存表和外部文件导入混合365

viiiMySQLDBA工作笔记:数据库管理、架构优化与运维开发

方案5:存储过程显式事务提交..365

方案6:批量生成insert语句使用管道导入………..366

方案7:批量生成insert语句显式事务提交………..366

方案8:sysbench工具生成………366

方案9:Oracle的极简方案………367

精彩试读

MySQL是开源数据库方向的典型代表,它拥有成熟的生态体系,同时在可靠性、性 能、易用性方面表现出色,它的发展历程见证了互联网的兴衰与成长。 在DeveloperWeek上曾发起一个调查,超过3/5的受访者使用SQL,其中MySQL 以38.9%的使用率高居榜首,其后依次是MongoDB(24.6%)、PostgreSQL(17.4%)、 Redis(8.4%)和Cassandra(3.0%)。毫无疑问,以MySQL为主的开源技术生态正变得越

来越流行。

随着客户要求不断变化,网络环境日趋可信和安全,企业不断释放出“倍增创新”能力, 也就意味着数字化转型开始从IT时代进入DT时代。面对大量的数据和业务,更多的公司 意识到了数据价值的重要性,如何管理和利用好数据已经变得越来越重要,MySQL是其 中的排头兵。

现如今云计算已经越来越普及,很多企业的业务都在逐步迁移到云端,对于MySQL 来说是机遇也是挑战,目前可以看到行业里MySQLDBA的市场缺口依然很大,优秀的 MySQLDBA正在成为各个互联网公司的抢手人才。在工作内容方面,原来DBA需要花费 大量精力去做的基础运维工作(安装部署、备份恢复等),现在比例在逐步减少,不是这 些事情不重要,而是DBA也需要技能升级,其实在传统数据库运维工作之外,还有运维 管理、运维架构和SQL优化工作,因为我们面对的可能是成百上千套数据库环境,我们更 需要考虑工作效率和质量,Devops这些年在数据库运维方向提供了很好的思路和实践,我 们现在听到地更多是自动化平台、智能化平台。如果前几年是在喊口号,那么这几年已经落地开花,甚至看到一些产出了,所以对于MySQLDBA来说任重道远,不光对运维业务和技术要精深,而且必须要懂得运维开发技术。

写书的缘起

我是一个坚持写技术博客的人,内容不局限于技术,也包含一些生活感悟,从2014年2月的一天开始每天一篇博客,这一路竟然坚持了下来,在2016年6月,我完成《OracleDBA工作笔记》,汇聚了近800天的学习笔记,目前已经重印7次,而截止到2019年6月,我已经坚持了2000多天,当然我还会继续坚持下去,就如同我最开始给自己的目标一样。

从最开始的满腔热情,到融入成为生活的一部分,这其中的挑战还是很多的,尤其是近些年,发现对于体力的挑战更为明显,对我来说,在每天23:59之前能够完成博客就是一种记忆打卡。

随着博客的内容量越来越多,有些网友在博客和我的互动也越来越多,我发现原本是利己的事情慢慢变得利人了,当然这种状况很快会碰到另外一个瓶颈,那就是当博客内容达到一定数量的时候,你会发现如何有效地管理和梳理这些内容远比想象的要复杂,同时DBA方向也相比过去有了更高的要求和压力,为了保持竞争力和更好地完成工作,我需要不断的拥抱变化,学习新技能。正是和网友的互动互助中,让我对已有的知识体系产生了疑问,也决定开始行动,改进方法。

古人云:“若起不得法,则杂乱浮泛”。虽然写书的想法是好的,但是如果没有花时间去梳理一个完整的知识体系,是很难把这些经验利用起来的,而这也是我DBA笔记系列的缘起。

另外,在内容的编排上,我选择了数据库管理、架构和SQL优化、运维开发这三个方面。一方面能够突出工作笔记的特色,避免写出过多重复经验的容,另外一方面是目前市面上运维管理的书籍相对多一些,但是工作中对于架构和SQL优化的内容相对较少,而对于运维开发的内容就更少了,算是一个补充吧。

现在社会的焦虑比以往要多一些,简单来说,感觉到威胁、找不到突破口,内心空洞,这就是焦虑。我在前几年的焦虑达到了顶点,总是会不断地焦虑自己的未来,焦虑团队的未来等,而这些心路历程都在书中给出了一些解决思路。《一代宗师》中这样说道:“从此只有眼前路,没有身后身,回头无岸”,我想技术之路也是如此,我们只有继续坚持走下去,才能找到答案。

本书适合的读者对象

MySQLDBA或者开发人员。

有一定的SQL基础,并且期望能够提升自我的读者。

给读者的一些建议

(1)要有一个清晰的规划;凡事预则立,不预则废,制定计划是给自己的一个心理暗示。给自己一个阶段性目标,然后把它做分解,拆分成为自己能够实现的一些任务。对于规划,要有长期规划和短期规划,长期规划就是几年内希望自己有什么样的成长,同时短期内希望达到什么目标,都可以做到统筹。一种行之有效的方法就是:拿着若干期望的目标,然后反推过程,应该怎么去落实,实践效果要好一些。

(2)建立技术连接的思维;我们很多同学就是专注在了技术线,对于某一个技术有较为深入的学习,但是对于其他方向的技术却有欠缺,这样很容易形成技术壁垒,思考问题的方式也会更局限于你所熟悉的方式和领域,对成长是不利的。我们不要钻牛角尖,不要什么都要用MySQL来实现,面对需求,永远没有最好的数据库,只有最适合的业务场景,一旦你开始更理性的思考,你才会更接近于问题的本质。

(3)充分利用碎片时间;有很多人说,我现在可忙了,没时间。其实细细观察,总是会有很多的碎片时间:早高峰、午饭后、晚高峰、晚饭后、睡觉前,这些都是碎片化相对集中的时间,可以充分利用起来做很多的事情。

(4)多参加社区、社群的活动和技术交流问答;对于参加社区、社群活动,自己也是深有感触,可能技术圈子的人性格相对比较内敛,在技术上态度还是开放的。多参加一些社区、社群的交流,可以让自己少走很多弯路,因为不是所有的坑都需要你完整地踩一遍,而在这个过程中你收获的不仅仅是知识,还可能是友情。

本书内容预览

本书会以工作笔记的形式循序渐进地讲解DBA工作中的一些常见问题和处理方法。全书共分为三篇,共15章,全面介绍数据库管理、架构和SQL优化、运维开发相关的工作内容,在这些知识点中也穿插了大量实例。第一篇(第1~5章)详细介绍了MySQL的发展,技术选型和体系结构,以运维场景作为切入点,通过梳理SQL开发规范,总结运维管理实践来还原DBA的日常管理工作。

第二篇(第6~10章)包含SQL查询优化,并发控制内容和性能测试的一些相关内容,在这个基础上补充了MySQL高可用架构和集群相关内容,提供基于业务的架构设计思路。

第三篇(第11~15章)包含整个运维开发体系从0到1的建设思路,包含运维开发基础,架构设计和规划,运维管理模块设计,自助服务设计等几个部分。

感谢

写书的过程还是比较漫长的,从策划到出稿,整个过程涉及很多的环节和细节,而且因为个人时间的原因导致进度多次受阻,也犯了很多低级错误和失误。最开始对笔记的梳理和整合,然后成为知识体系,这个难度比预想的大了许多,书中的技术术语是否得当、举例和比喻是否恰当等,在书的结构和内容的考量上,我和本书策划编辑荆波老师也反复进行了讨论和校正。在工作忙碌之余,坚持写技术博客,同时又花费不少时间来编排图书内容,着实是一件很辛苦的事情,但还是坚持了下来,想到读者能够在我的一些案例中得到一些启示和帮助,其实是一件很让人欣喜的事情。

当然书的内容质量也离不开朋友们的支持,感谢周彦伟,周军为本书作序,同时感谢杨奇龙,贺春旸,杨尚刚,卢飞,赵飞祥,陈晨,王伟,房晓乐,贾艳燕,张海林,韩锋对于部分书稿的审阅,他们是奋斗在一线的DBA或者技术管理者,在工作中积累了大量的实践经验,对本书给出了很多宝贵的建议,感谢dbaplus社群和腾讯云对于图书的支持工作,在此一并感谢。

完成本书也离不开家庭的大力支持,感谢妻子雪丽给予支持和理解,为此她承担了更多家庭事务,感谢父母默默地支持我的想法,虽然他们看不懂我写的内容,但是总是会问问写书的进度。还有我可爱的女儿珊珊,看着她活泼可爱的模样,我理解了陪伴是最深情的告白。

感谢荆波老师对于本书的大力支持,在所有的环节都严格把关,有了之前的合作,这一次的合作多了一些默契,能够写成本书,与他的帮助是分不开的。由于本人知识水平有限,书中难免存在着一些错误和不妥之处,敬请批评指正,如果您有更多的宝贵意见,也欢迎在我的微信公众号(jianrong-notes)讨论交流,大家一起学习交流,共同进步。

杨建荣

2019年6月

MySQL DBA工作笔记pdf免费在线阅读截图

mysql dba工作笔记电子版书-MySQL DBA工作笔记pdf免费在线阅读插图(7)mysql dba工作笔记电子版书-MySQL DBA工作笔记pdf免费在线阅读插图(8)mysql dba工作笔记电子版书-MySQL DBA工作笔记pdf免费在线阅读插图(9)mysql dba工作笔记电子版书-MySQL DBA工作笔记pdf免费在线阅读插图(10)

评分及评论

无用户评分

来评个分数吧

  • 5 分
    0
  • 4 分
    0
  • 3 分
    0
  • 2 分
    0
  • 1 分
    0

Comments