首页>参考读物>计算机科学与技术>软件与程序设计

MySQL DBA修炼之道
作者 : 陈晓勇 著
丛书名 : 数据库技术丛书
出版日期 : 2017-02-23
ISBN : 978-7-111-55841-5
定价 : 79.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 506
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书以实战讲解为主,摒弃了生产实践中不常用的知识和技术。书中内容主要分为6部分,在介绍、安装和入门篇会介绍MySQL的应用领域和适用场景,基础架构,常见生产环境部署方式,以及MySQL安装部署方式等内容。在开发篇会给出DBA、开发人员需要熟悉的一些知识,比如开发基础知识,如何选择选择合适的数据类型,事务的隔离级别和死锁避免等。测试篇则会介绍DBA及测试人员需要熟悉的测试知识,包括自动化压力测试、硬件性能测试。运维篇将对照DBA的工作讲述生产的实际操作步骤,包括如何部署、升级、迁移备份数据等内容。性能调优和故障诊断篇讲述性能调优的工具和手段,并且会提供一些性能和故障诊断案例分析。系统架构篇则讲述如何进行数据规划,如何设计高可用、高性能、伸缩性良好的系统。

图书特色

封面:
数据库技术专家撰写,多年数据库领域的经验结晶。实战性强,从架构、调优、运维、开发、测试等多个角度对MySQL管理和维护进行了全方位的归纳和总结,包含大量来自实际生产环境的经典案例,并深入阐述MySQL DBA进阶实战的技巧和方法!

封底:
MySQL作为一款广泛使用的开源数据库,因具有速度快、性能好、成本低,且开放源码等特点而深受用户喜爱,特别是互联网企业,随着互联网行业的高速成长,对MySQL人才的需求也更为迫切。本书从作者的实际经验出发,分别从架构、调优、运维、开发、测试等角度阐述了数据库的运维知识体系,并针对运维过程中可能出现的问题提供了解决思路,希望可以引领有志于深入MySQL领域的读者,掌握维护和管理MySQL的技巧和经验,成就自己的职业生涯。
本书特色:
结合作者在数据库管理实践中大量的经验,全面系统地介绍了MySQL的使用方法,帮助读者掌握运维和调优思路、方法与技巧,整体把握MySQL系统架构。
包含大量来自一线业务场景的实战案例,针对疑难杂症提供详细的解决方案和思路,从而指导读者对整个系统进行“调理”,在系统出现问题时能及时把握症结所在,并“一针见血”地解决问题。
除MySQL技能以外,本书也花了许多篇幅讲述架构,以及技术之外的一些运维管理规则,针对MySQL DBA的全局意识、思维的培养和提升进行了总结和探索。
不仅介绍了基础知识和技能,更是从思路和方法上给出了详细的归纳和总结;不仅仅是以DBA的角度,更多的是从一个系统架构师和运维管理者的角度来思考问题,相信这会有助于读者深刻领会和掌握实践方法,并应用于自己的工作中。

前勒口:
作者简介
陈晓勇,数据库技术专家,深耕数据库管理领域10多年,早期曾在大型国企任职开发工程师,后进入大型制造业工厂担任专职Oracle DBA,2008~2015年任职于优视科技,亲历MySQL从小规模到广泛使用的发展历程。目前主要从事IT的技术规划、项目管理,关注数据库的管理和调优。

后勒口:
内容简介
本书是目前MySQL运维领域相对全面和系统的著作。作者结合自己的实战经验,用通俗易懂的语言和大量案例,围绕运维、调优、架构,传授读者解决问题的思路、方法和技巧,培养读者整体把握系统架构的能力和意识。
第一篇“入门篇”,讲述了MySQL的基础架构、权限机制、常用的存储引擎、复制架构、安装以及常用命令等知识。如果是初次接触MySQL,那么可能需要花一些时间在这一篇上。
第二篇“开发篇”,将介绍MySQL数据库开发相关的基础知识和技巧。基础知识包括关系数据库模型、字符集、常用SQL语法、范式、索引、事务等内容。最后结合生产实际,提供了一份开发规范供大家参考。
第三篇“测试篇”,介绍了数据库基准测试所需要的理论知识和常用的测试工具,并且会给出一个MySQL的基准测试模型。
第四篇“运维篇”,介绍了MySQL运维工作的各项职责:监控、复制、升级、迁移、备份、恢复,然后通过一些案例分享一些维护技巧以及处理问题的思路。读者还将学习到规模化运维MySQL的一些知识和规则。
第五篇“性能调优与架构篇”,介绍了性能调优的一些理论知识,以及从应用程序到数据库到存储等各个环节的优化。由于架构和性能优化密切相关,本篇也将介绍一些MySQL DBA需要熟悉的架构优化知识。

图书前言

为什么要写本书
本书主要讲述MySQL DBA的必备技能,包括MySQL的安装部署、开发、测试、监控和运维,此外,读者还可从中学习到系统架构的一些知识。
我从业10多年,先是在传统行业做开发工程师、系统管理员、Oracle DBA,2008年因为机缘巧合投身互联网,开始从事MySQL运维工作。相对于成熟的商业数据库,MySQL缺乏高质量的技术文档和图书,我在接触MySQL的过程中,也感觉市面上的相关图书还存在一些不足,难以系统化地学习MySQL。
从一名Oracle DBA转型为一名MySQL DBA,从传统领域转投到互联网公司,即便我之前有丰富的经验,在学习MySQL的过程中也仍然走了一些弯路。成为一名MySQL DBA并不难,但成为一名高水平的MySQL DBA则需要时间、知识、技能、经验和意识的积累。
我在学习MySQL的过程中,有时会去看技术论坛,或者通过MSN群等聊天工具咨询他人一些问题,也得到过一些朋友的帮助。国内存在一批高素质的MySQL DBA,但由于各种现实因素,有心写一本关于MySQL DBA实战的书的人很少,所以市面上缺乏高质量的相关图书不足为奇。2013年年初,机械工业出版社华章分社的策划编辑杨绣国找到我,说希望我能写一本关于MySQL的书,我当时很犹豫,虽然我有时会在网上回答一些问题,也定期撰写个人博客,但是,写一本书,对于我来说,是一个艰巨的任务。经过一些交流,我慢慢明确了自己的想法,其实我一直是想写一本书的,既然我对市面上的相关图书不太满意,那么就自己写一本吧,当时我唯一欠缺的是写作经验以及时间。
我写这本书的目的是想做一个尝试——引领感兴趣的读者进入MySQL数据库运维领域。国内互联网行业正在高速发展,迫切需要大量的MySQL人才,希望这本书可以帮助一些读者顺利进入数据库领域。而且,我也想将自己的一些心得分享给读者,希望热爱数据库技术的同行们在工作中少走弯路。
在技术领域工作多年后,文字写作对于我来说其实已经很陌生了,弗朗西斯·培根说过,“阅读使人充实,谈论使人机敏,写作使人精确”。在本书的写作的过程中,其实我自己也获得了很多,不仅学到了更多的知识,对于自己的精神也是一种洗礼。写作真的是一种积极而富有价值的创作,我们只有正确地掌握所讲述的内容,才能为言行思想带来正能量。
希望在这个世界上,有越来越多的人愿意分享,且能享受分享的乐趣。
读者对象
本书的主要读者是MySQL DBA,在现实中,许多公司并没有配备专职的数据库维护人员,数据库的维护工作往往也是由开发工程师和系统管理员负责的,因此这本书也适用于他们。
这是一本偏向实战的技术书籍,不会过多地涉及技术的细节和原理,我会尽量直接地给出解决方案;本书除了讲MySQL技能,还花了大量篇幅讲述架构;本书不仅讲述技术,也讲述技术之外的一些运维管理规则。对数据库的使用、维护和管理感兴趣的运维工程师、架构师、运维经理、开发工程师、测试工程师都可以将本书作为参考图书,而了解其他领域会有助于你的职业发展。
本书也适合希望转行到数据库运维领域的人士。许多人想从事IT工作,但当下时间宝贵,要想进入一个行业或改变职业方向,往往会花费巨大的时间成本,所以这本书将尽量做到简单、易懂,以节省大家的学习成本。
如何阅读本书
本书将分为5个部分,分别从入门、开发、测试、运维、性能与架构这几个方面来介绍MySQL的使用。对于初次接触MySQL的读者,建议按照章节顺序逐步学习。对于已经有一定经验的读者,则可以选择自己感兴趣的篇章,跳过自己已经熟悉的内容。
第一部分讲述了MySQL的基础架构、权限机制、常用的存储引擎、复制架构、安装及常用命令等知识。如果读者是初次接触MySQL,那么可能还需要在这一部分上花一些时间。在掌握Linux和MySQL的基本使用方法之后,就可以开始第二部分的学习了。
第二部分将介绍MySQL数据库开发相关的基础知识和技巧。基础知识包括关系数据模型、字符集、常用的SQL语法、范式、索引和事务等。由于开发的领域很广,所以本部分仅仅选取了一些常用的技巧分享给大家。最后会结合实际生产,提供一份开发规范供大家参考。
第三部分介绍了数据库基准测试所需要的理论知识和常用的测试工具。本部分将介绍一个MySQL的基准测试模型。
第四部分介绍了MySQL运维工作的各项职责:监控、复制、迁移、升级、备份和恢复,然后通过一些案例向读者传授一些维护技巧及处理问题的方法。读者还将学习到规模化运维MySQL的一些知识和规则。
第五部分介绍了性能调优的一些理论知识,以及从应用程序到数据库,再到存储等各个环节的优化。由于架构和性能优化密切相关,本部分也介绍了一些MySQL DBA需要熟悉的架构优化知识。初次接触MySQL的读者对于架构优化的内容可能会感到难以理解,但随着经验的增长,再理解这些内容将不会再有问题。
本书假设读者已经对软硬件有了一定的认识,掌握了一门脚本语言,并且对Unix或Linux有一定的使用经验,对于数据库有了基本的认识。阅读本书时,读者不需要预先准备好上述的所有知识,但需要有意识地在阅读本书之外不断地补充自己的基础知识。我会对以上内容做深入的讲解,但如果读者有基础会更好,好的基础有利于快速吸收知识和深入思考问题。如果读者还不会使用Linux和编写Shell脚本,那么,建议尽快搭建一个学习环境。
由于DBA需要和研发、测试、产品、运营、监控等团队进行合作,所以对于相关领域所涉及的数据库知识,本书也会做一些介绍。但是,由于经验侧重的关系,本书将主要从DBA的角度来讲述这些知识和技能。
本书主要基于MySQL官方5.1版本写作,这也是目前最流行的版本,我会补充MySQL最新版本的少许内容,但跟踪MySQL新版本更合适的策略是关注官方发布的新特性说明、新版本的文档手册,跟踪业内专家的技术博客和社交媒体等。
通过阅读本书,读者可以学到MySQL的许多知识,但是仅通过阅读是难以获得技能和经验的。读者需要有一个适合自己的MySQL测试环境,并能够不断地思考和实践自己的想法,这样才能够掌握技能,并得到属于自己的经验。
勘误和支持
由于作者的水平有限,写作时间也很仓促,书中难免存在一些错误或不准确的地方,如有不妥之处,恳请读者批评指正。为此,我特意创建了在线支持页面http://www.db110.com/。你可以将书中的错误发布在勘误表页面,若遇到任何问题,也可以访问Q&A页面,我将尽量在线上为你提供最满意的解答。书中的全部源文件都将发布在这个网站上。如果你有更多的宝贵意见,也欢迎你发送邮件至我的邮箱ucgary@gmail.com,很期待听到你们的真挚反馈。
致谢
感谢机械工业出版社华章分社的策划编辑杨绣国的努力工作,没有她的投入和耐心,就不可能有本书的面世。本书写作的时间较长,我有时会充满愧疚,是杨绣国编辑的包容和鼓励,最终引导我顺利完成全部书稿。
感谢UC的旧同事,和你们的共事,是我职业生涯最宝贵的财富,我将一直铭记在心。
最后,我要感谢我的家人和朋友,是你们的支持,让我能够坚持下来。

陈晓勇(Gary Chen)
中国,长沙,2016年12月

上架指导

计算机\数据库

封底文字

MySQL作为一款广泛使用的开源数据库,因其具有速度快、性能好、成本低,且开放源码等特点而深受用户喜爱,特别是互联网企业,随着互联网行业的高速成长,MySQL人才的需求也更为迫切。本书从作者的实际经验出发,分别从架构、调优、运维、开发、测试等角度阐述了数据库的运维知识体系,并针对运维过程中可能出现的问题提供了解决思路,希望可以引领有志于深入MySQL领域的读者,掌握维护和管理MySQL的技巧和经验,成就自己的职业生涯。
本书特色:
? 结合作者在数据库管理实践中大量的经验,全面系统地介绍了MySQL的使用方法,帮助读者掌握运维和调优思路、方法与技巧,整体把握MySQL系统架构。
? 包含大量来自一线业务场景的实战案例,针对疑难杂症提供详细的解决方案和思路,从而指导读者对整个系统进行“调理”,在系统出现问题时能及时把握症结所在,并“一针见血”地解决问题。
? 除MySQL技能以外,本书也花了许多篇幅讲述架构,以及技术之外的一些运维管理规则,针对MySQL DBA的全局意识、思维的培养和提升进行了总结和探索。
? 不仅介绍了基础知识和技能,更是从思路和方法上给出了详细的归纳和总结;不仅仅是以DBA的角度,更多的是从一个系统架构师和运维管理者的角度来思考问题,相信这会有助于读者深刻领会和掌握实践方法,并应用于自己的工作中。

作者简介

陈晓勇 著:暂无简介

推荐序

我之前也看过很多数据库相关的图书,但是没有一本能像这本书一样,让我读起来感觉那么轻松愉快,读完后觉得必须要收藏一本作为案头必备。
本书的作者是互联网一线的数据库开发、运维专家,书中的内容是其对10多年工作中所遇问题的思考和总结,围绕着MySQL徐徐展开,犹如庖丁解牛,对MySQL的核心逻辑解释得相当清晰和透彻。本书以一个数据库专家的视角,解析其观察到的方方面面,内容涉及“业务系统设计”“测试体系”“运维管理”等。本书的很多内容已经不仅仅是从一个DBA的角度出发,更多的是从一个系统架构师和运维管理者的角度来思考问题。读完全书,你将会对整个研发、运维体系的相关领域都有一个概要的认识。这种提纲挈领的架构,对于某个知识领域的学习是非常有价值的。
之所以说本书读起来令人轻松愉悦,是因为书中提及的很多问题都是我所关心的,而笔者均以很简练的语言给予了回答和梳理,让人理解起来非常清晰、不费劲。我边看边忍不住想,这风格分明就是UC内部的培训资料嘛,有很强烈的亲切感。
本书对实战中的很多问题,都给出了详细的解题思路,方案成熟、观点中肯,体现了对技术应有的严谨和敬畏,我相信对从事DBA工作的很多技术人员来说,本书具有非常重要的参考价值。
毫不夸张地说,MySQL开源项目推动了整个互联网产品的发展。我们从中获益不少,同时也深刻体会到自由分享精神对社会进步的贡献。从晓勇写的这本书中,我也能感受到这一分享理念。我非常赞赏这种分享精神,也希望更多的技术人员都能有此回报社会的情怀。
20年前,互联网刚刚起步,工程师是靠掌握一批指令和娴熟的操作来执行运维工作的。现如今,开发和运维体系已经渐趋成熟,不少企业更是将基础运维工作交给云服务厂商,研发和运维人员得以从烦琐的技术细节中解放出来,从而更专注于业务分析和产品设计,这个进步是巨大的。
往后看,我们正从IT时代过渡到DT时代。在DT企业中,工程师使用贝叶斯变换和机器学习来操作数据,就好比当初使用“if()... else()”来编写程序一样,巨大的技术变革正在来临。
在这风起云涌之际,技术让我们再次感受到年轻和无知,希望我们能从MySQL出发,保持旺盛的好奇心和探索精神,迈向下一个崭新的时代。

梁捷(Jack)
UC联合创始人,神马搜索总裁
2016年12月

图书目录

推荐序
前 言
第一部分 入门篇
第1章 理解MySQL 2
1.1 MySQL介绍 2
1.1.1 应用领域和适用场景 2
1.1.2 为什么那么多公司和机构选择使用MySQL 3
1.1.3 MySQL的优势是什么,它解决了什么问题 3
1.2 MySQL的基础架构和版本 4
1.2.1 软件架构中数据库的定位 4
1.2.2 MySQL的基础架构 5
1.2.3 MySQL的版本及特性 6
1.2.4 MySQL的开发周期 8
1.3 查询执行过程概述 9
1.4 MySQL权限 10
1.4.1 MySQL权限机制 10
1.4.2 赋予权限和回收权限 10
1.5 长连接、短连接、连接池 10
1.5.1 短连接 10
1.5.2 长连接 11
1.5.3 连接池 12
1.5.4 持久连接和连接池的区别 12
1.6 存储引擎简介 12
1.6.1 InnoDB引擎 12
1.6.2 MyISAM引擎 13
1.6.3 MEMORY存储引擎 13
1.6.4 ARCHIVE存储引擎 14
1.6.5 选择合适的引擎 14
1.6.6 选择何种平台 14
1.7 MySQL复制架构 15
1.8 一些基础概念 15
第2章 MySQL安装部署和入门 17
2.1 如何选择MySQL版本 17
2.2 官方版本的安装 18
2.2.1 二进制包的安装 18
2.2.2 源码编译安装 20
2.3 其他MySQL分支的安装 21
2.4 安装InnoDB Plugin 21
2.5 常用命令 22
2.5.1 使用mysql命令 22
2.5.2 使用mysqladmin命令 26
2.5.3 使用mysqldump命令 26
2.6 MySQL的主要参数设置 27
第二部分 开发篇
第3章 开发基础 30
3.1 相关基础概念 30
3.2 数据模型 33
3.2.1 关系数据模型介绍 33
3.2.2 实体–关系建模 34
3.2.3 其他数据模型 35
3.3 SQL基础 38
3.3.1 变量 39
3.3.2 保留字 40
3.3.3 MySQL注释 42
3.3.4 数据类型 43
3.3.5 函数 51
3.3.6 操作符及优先级 53
3.3.7 MySQL示例employees数据库 54
3.3.8 SQL语法 55
3.4 PHP开发 69
3.4.1 概述 69
3.4.2 客户端访问过程 69
3.4.3 开发工具 72
3.4.4 操作数据 73
3.4.5 PHP数据库开发建议 78
3.5 索引 78
3.5.1 索引介绍 78
3.5.2 使用索引的场景及注意事项 79
3.5.3 索引的错误用法 82
3.5.4 如何使用EXPLAIN工具 83
3.5.5 优化索引的方法学 90
3.6 ID主键 91
3.7 字符集和国际化支持 93
3.7.1 什么是字符集 93
3.7.2 国际化支持 93
3.7.3 字符集设置 94
第4章 开发进阶 98
4.1 范式和反范式 98
4.1.1 范式 98
4.1.2 反范式 102
4.2 权限机制和安全 104
4.2.1 MySQL访问权限系统 104
4.2.2 强化安全 106
4.2.3 SQL注入 109
4.3 慢查询日志 112
4.3.1 查看慢查询日志 112
4.3.2 使用工具分析慢查询日志 114
4.4 应用程序性能管理 118
4.4.1 为什么需要性能管理 118
4.4.2 应用性能管理概述 119
4.4.3 应用性能管理的关注点 120
4.4.4 具体应用 120
4.5 数据库设计 122
4.5.1 逻辑设计 122
4.5.2 物理设计 123
4.6 导入导出数据 127
4.6.1 规则简介 127
4.6.2 使用mysqldump导出,使用mysql导入 128
4.6.3 使用SELECT INTO OUTFILE命令导出数据 130
4.6.4 使用LOAD DATA导入数据 130
4.6.5 用mysqlimport工具导入 132
4.6.6 用mysql程序的批处理模式导出 132
4.6.7 用split切割文件,加速导入数据 133
4.7 事务和锁 133
4.7.1 概述 133
4.7.2 MyISAM的表锁 134
4.7.3 事务定义和隔离级别 135
4.7.4 InnoDB的行锁 137
4.8 死锁 141
4.9 其他特性 142
4.9.1 临时表 142
4.9.2 分区表 142
4.9.3 存储过程、触发器、外键 147
4.9.4 视图 159
第5章 开发技巧 161
5.1 存储树形数据 161
5.2 转换字符集 163
5.3 处理重复值 165
5.4 分页算法 167
5.5 处理NULL值 167
5.6 存储URL地址 169
5.7 归档历史数据 169
5.8 使用数据库存储图片 170
5.9 多表UPDATE 170
5.10 生成全局唯一ID 171
5.11 使用SQL生成升级SQL 171
第6章 查询优化 172
6.1 基础知识 172
6.1.1 查询优化的常用策略 172
6.1.2 优化器介绍 173
6.1.3 MySQL的连接机制 175
6.2 各种语句优化 176
6.2.1 连接的优化 176
6.2.2 GROUP BY、DISTINCT、ORDER BY语句优化 177
6.2.3 优化子查询 178
6.2.4 优化limit子句 179
6.2.5 优化IN列表 180
6.2.6 优化UNION 181
6.2.7 优化带有BLOB、TEXT类型字段的查询 181
6.2.8 filesort的优化 181
6.2.9 优化SQL_CALC_FOUND_ROWS 183
6.2.10 优化临时表 183
6.3 OLAP业务优化 184
第7章 研发规范 187
7.1 命名约定 187
7.2 索引 188
7.3 表设计 189
7.4 SQL语句 190
7.5 SQL脚本 191
7.6 数据架构的建议 192
7.7 开发环境、测试环境的配置参数建议 193
7.8 数据规划表 193
7.9 其他规范 194
第三部分 测试篇
第8章 测试基础 196
8.1 基础概念 196
8.2 性能测试的目的 197
8.3 基准测试 197
8.4 性能/基准测试的步骤 199
8.5 测试的注意事项 199
第9章 测试实践 201
9.1 硬件测试 201
9.1.1 概述 201
9.1.2 CPU测试 202
9.1.3 内存测试 203
9.1.4 I/O测试 203
9.1.5 网络测试 207
9.2 MySQL测试 207
9.2.1 概述 207
9.2.2 常用测试工具的介绍和使用 208
9.2.3 MySQL基准测试模型 211
9.3 应用数据库性能测试 221
第四部分 运维篇
第10章 基础知识 224
10.1 文件和I/O管理 224
10.1.1 MySQL日志文件 224
10.1.2 InnoDB数据文件和日志文件 228
10.1.3 临时文件 232
10.1.4 MySQL套接字文件 232
10.2 MySQL如何进行灾难恢复 233
10.3 变量设置、配置文件和主要参数 234
10.3.1 概述 234
10.3.2 如何设置参数、变量 235
10.3.3 配置文件的读取顺序 235
10.3.4 环境变量、配置文件、命令行选项的优先级 237
10.3.5 配置文件详述 237
10.3.6 配置文件示例 238
10.4 MySQL Query Cache和优化器 239
10.5 SHOW INNODB STATUS解析 241
第11章 MySQL的监控 250
11.1 非数据库的监控 250
11.1.1 开源监控工具/平台 250
11.1.2 编写程序来收集信息 251
11.2 数据库的监控 251
11.2.1 数据库服务的基本监控方式 251
11.2.2 应该收集的信息和收集方法  252
11.2.3 MySQL需要关注的参数及状态变量 260
11.3 数据库监控的实现 263
11.3.1 Nagios 263
11.3.2 swatch 263
11.3.3 Cacti 267
11.3.4 如何打造一个强大的监控系统 274
11.4 数据库监控的可视化 275
11.4.1 折线图 276
11.4.2 散点图 276
11.4.3 热图 277
第12章 MySQL复制 279
12.1 基础知识 279
12.1.1 原理及注意事项 279
12.1.2 常用命令 281
12.1.3 参数设置 287
12.1.4 配置文件 290
12.1.5 复制模式 292
12.1.6 复制兼容性 294
12.2 配置主从复制 294
12.3 配置主主复制 296
12.4 配置级联复制、环形复制 297
12.5 跨IDC复制 297
12.6 多主复制 298
12.7 延时复制 298
12.8 半同步复制 299
12.9 在线搭建从库 299
12.9.1 操作系统下对打包文件配置主从 299
12.9.2 利用mysqldump制作从库 301
12.10 配置日志服务器 303
12.11 常见的复制问题及处理方法 305
12.11.1 跳过复制错误 305
12.11.2 临时表和复制 305
12.11.3 内存表和复制 306
12.11.4 主库宕机重新启动成功,但复制关系中断 306
12.11.5 主库宕机重启不成功 307
12.11.6 多个从库的server-id相同 307
12.11.7 锁定导致的复制延时 307
12.11.8 对MyISAM引擎的表恢复数据 307
12.11.9 如何彻底清除Slave设置 308
12.11.10 网络异常导致的复制延时 308
第13章 迁移、升级、备份、恢复数据库 309
13.1 升级 309
13.1.1 升级表结构或变更数据 309
13.1.2 MySQL版本升级 312
13.2 新业务部署上线 312
13.3 迁移 313
13.3.1 迁移步骤 313
13.3.2 切换数据库时长短连接的影响 314
13.4 生产环境常用的备份策略 315
13.4.1 备份策略 315
13.4.2 备份建议 316
13.5 常用备份方式和恢复方法 316
13.5.1 使用dd备份和恢复数据 317
13.5.2 使用mysqldump备份和恢复数据 317
13.5.3 使用Percona XtraBackup备份和恢复数据 319
13.5.4 使用mysqlbinlog进行时间点恢复 326
第14章 运维技巧和常见问题处理 328
14.1 MySQL运维技巧 328
14.1.1 使用lsof命令恢复文件 328
14.1.2 如何删除大文件 330
14.1.3 获取吞吐信息 331
14.1.4 传输大文件 331
14.1.5 记录连接用户 331
14.1.6 如何判断表的碎片 332
14.1.7 快速关闭MySQL 333
14.1.8 如何预热数据 333
14.1.9 临时禁止数据库访问 334
14.1.10 获取MySQL连接、用户 334
14.1.11 更改数据库名 334
14.1.12 批量KILL连接 335
14.1.13 记录运行时间长的查询 335
14.1.14 删除分表 335
14.2 常见问题 336
14.2.1 忘记root密码 336
14.2.2 InnoDB同时打开事务最大不能超1023个 336
14.2.3 连接不上MySQL 336
14.2.4 主机的host_name被屏蔽 337
14.2.5 连接数过多 337
14.2.6 处理磁盘满 338
14.2.7 表损坏 338
14.2.8 查看锁的等待 338
14.2.9 mysqldump备份报错 339
14.2.10 Table ''tbl_name''doesn''t exist 339
14.2.11 root账号权限异常 340
14.2.12 SHOW PROCESSLIST输出中有大量unauthenticated user连接 340
14.2.13 统计information_schema里面的元数据信息缓慢 340
14.2.14 Aborted_connects、Aborted_clients异常升高 341
14.2.15 MySQL server has gone away错误 342
14.2.16 信息包过大错误 342
14.2.17 内存溢出 343
14.2.18 MySQL单张表为多大才合适,为什么大表会慢 343
14.2.19 MySQL最大能支持多大的并发查询 344
14.2.20 创建索引出错 344
14.3 故障和性能问题处理 344
14.3.1 通过减少文件排序和临时表提高性能 344
14.3.2 通过慢查询快速定位导致性能问题的SQL 345
14.3.3 定位导致了性能问题的客户端/应用服务器 345
第15章 运维管理 346
15.1 规模化运维 346
15.1.1 基础环境 346
15.1.2 虚拟化 348
15.1.3 关于去IOE 349
15.1.4 资源利用和隔离 350
15.1.5 关于备机、备份 351
15.2 服务器采购 352
15.3 运维规则 352
15.3.1 确保基础网络稳定可靠 353
15.3.2 应构建性能模型,进行容量规划 353
15.3.3 优先扩容,再考虑优化 353
15.3.4 保持简单 353
15.3.5 监控一切 354
15.3.6 处理监控报警 354
15.3.7 不要重复“造轮子” 354
15.3.8 允许出错 354
15.3.9 设置备用角色 355
15.3.10 仔细阅读产品文档 355
15.3.11 画数据流图和物理部署图 355
15.3.12 要有版本控制 356
15.3.13 解决问题要用合适的工具 356
15.3.14 系统工程师要具备定位瓶颈的能力 356
15.3.15 确保无线网络的稳定 356
15.3.16 确保访问生产网络时有备用的访问方式 357
15.3.17 让优秀的人做工具/平台 357
15.3.18 要有分工,每个角色都很重要 357
15.3.19 其他团队应能轻松获取生产环境信息 358
15.3.20 由独立的系统处理代码性能问题 358
15.3.21 运维人员应介入产品开发的初期 358
15.3.22 关注安全 358
15.3.23 关注配置管理 358
15.3.24 对优先级进行管理 359
15.3.25 不要为了优化而优化 359
15.3.26 不要过早优化 359
15.3.27 要有知识分享系统 359
15.3.28 参加业内技术论坛 359
15.3.29 必须开周会 360
15.3.30 积极支持队友,和团队一起成长 360
15.3.31 从公司的利益出发 360
15.3.32 确保每个人都是可以被替换的 360
15.3.33 不要受绩效束缚 361
15.3.34 不断优化流程设计 361
15.3.35 要了解一些财务知识 361
15.3.36 了解其他领域 362
第五部分 性能调优与架构篇
第16章 基础理论和工具 364
16.1 性能调优理论 364
16.1.1 基础概念 364
16.1.2 阿姆达尔定律 367
16.1.3 通用扩展定律 370
16.1.4 排队论 373
16.2 诊断工具 375
16.2.1 OS诊断工具 375
16.2.2 MySQL诊断工具 392
16.3 调优方法论 417
16.3.1 性能调优的误区 417
16.3.2 调优指引 417
16.3.3 调优步骤 419
16.3.4 调优的方法 420
第17章 应用程序调优 421
17.1 程序访问调优 421
17.1.1 好的架构和程序逻辑 421
17.1.2 好的监控系统和可视化工具 424
17.1.3 良好的灰度发布和降级功能 425
17.1.4 合理地拆分代码 425
17.2 应用服务器调优 425
第18章 MySQL Server调优 427
18.1 概述 427
18.2 MySQL的主要参数 428
18.3 MySQL内存优化 433
18.3.1 如何避免使用swap 433
18.3.2 NUMA 434
18.4 MySQL CPU优化 437
18.5 MySQL I/O优化 438
18.5.1 概述 438
18.5.2 选择合适的I/O大小 439
18.5.3 日志缓冲如何刷新到磁盘 439
18.5.4 事务日志 440
18.5.5 二进制日志 441
18.5.6 InnoDB如何打开和刷新数据、日志文件 441
18.5.7 InnoDB共享表空间和独立表空间 441
18.5.8 UNDO暴涨的可能性 442
18.5.9 关于doublewrite buffer 442
18.5.10 数据库文件分类 442
18.5.11 何时运行OPTIMIZE TABLE 443
18.5.12 MySQL 磁盘空间 443
第19章 操作系统、硬件、网络的优化 445
19.1 基本概念 445
19.2 文件系统的优化 446
19.3 内存 448
19.4 CPU 448
19.5 I/O 449
19.5.1 概述 449
19.5.2 传统磁盘 449
19.5.3 关于RAID 450
19.5.4 关于SSD 451
19.6 网络 452
第20章 可扩展的架构 454
20.1 做好容量规划 454
20.2 扩展和拆分 455
20.3 读写分离 457
20.4 切勿过度设计 458
20.5 可扩展的方法 460
20.5.1 优化静态内容、动态内容 460
20.5.2 网络优化 461
20.5.3 解耦 461
20.6 使用云数据库 462
第21章 高可用性 464
21.1 概述 464
21.2 单点故障 465
21.3 MySQL数据库切换 466
21.4 跨IDC同步 468
第22章 其他产品的选择 469
22.1 列式数据库产品 469
22.2 NoSQL产品的选择 470
22.2.1 概述 470
22.2.2 灾难恢复性 472
22.2.3 可维护性 474
22.2.4 可靠性 475
22.2.5 高可用性 475
22.2.6 高性能 476
22.2.7 可扩展性 477
22.2.8 资源利用 479
22.2.9 功能特性实现 481
22.2.10 数据结构 484
22.2.11 选择数据库产品的建议 484
参考文献 487

教学资源推荐
作者: [美] 陆永祥(Yung-Hsiang Lu) 著
作者: Calvin Lin;Lawrence Snyder
作者: [美] 罗伯特·W. 塞巴斯塔(Robert W. Sebesta) 著
参考读物推荐
作者: [奥]斯特凡·鲍姆加特纳(Stefan Baumgartner) 著
作者: 黄隽实 著
作者: 张昆 戴艳 编著
作者: 马俊昌 著