首页>参考读物>计算机科学与技术>数据库

MySQL管理之道:性能调优、高可用与监控(第2版)
作者 : 贺春旸 著
丛书名 : 数据库技术丛书
出版日期 : 2016-09-10
ISBN : 978-7-111-54779-2
定价 : 79.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 383
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

以构建高性能MySQL服务器为核心内容,介绍了MariaDB 10版本的新特性,从故障诊断与优化、性能调优、备份与恢复、MySQL高可用集群搭建与管理、MySQL服务器性能和服务监控等多方面多角度深入讲解了如何去管理与维护MySQL服务器。以实战性为导向,所有内容都来自于笔者多年实践经验的总结和新知识的拓展,同时也给出了很多实用的情景模拟,都是运维人员、DBA等相关工作者遇到的有代表性的疑难问题,并给出了解决方案。

图书特色

数据库领域经典著作全面升级,从实战出发,增补MySQL 5.7和MariaDB 10.1版本的全新内容
以构建高性能MySQL服务器为核心,从故障诊断与优化、性能调优、备份与恢复、高可用集群架构搭建与管理、读写分离和分布式DB架构搭建与管理、性能和服务监控等多角度深入分析管理与维护MySQL服务器的技巧和方法,是指导MySQL DBA进阶修炼的最佳实践之作

贺春旸老师是业界知名的一线MySQL实战技术专家。从51CTO技术博客专家到51CTO学院签约讲师,他用一篇篇博文和一节节实战课程分享着自己的实践经验,诠释着他对MySQL管理的全新认知。如今,这本书又让我眼前一亮,本书不仅仅是对第1版的简单修正,更加入了MariaDB 10.1和MySQL 5.7版本的全新内容,融入了贺老师近几年思考总结的经典实战经验。如果你有空品读此书,一定受益匪浅。
—— 51CTO学院(edu.51cto.com)
MariaDB是MySQL的一个重要分支,是MySQL之父主导研发的开源产品。随着版本迭代,其优秀的性能也得到更多公司的认可;包括Wikipedia、Google在内的越来越多的公司从MySQL迁移到MariaDB。虽然MariaDB已经广泛使用,但市面上关于MariaDB的实战类资料还比较欠缺,这本书则填补了这方面的空缺。书中所述的MySQL高可用集群搭建与管理、故障诊断与优化等都是当今最前沿的MySQL数据库技术,为市面上不可多得的精彩资料。作者热衷于技术分享,读者在阅读本书的过程中有任何困惑,都可以随时与作者交流。 
—— 毕江涛 磨盘网络(imopan.com&gfan.com)机锋平台研发部总监 
在第1版中已经感受了作者对MySQL有自己的理解与解决问题的思路,受益良多,也体会到了作者辛劳与智慧的付出。
例如,对于SQL编程中遇到的种种技术难题,作者不仅给出了具体的解决办法,还结合实践经验,告诉读者为什么要这样去解决。又比如,数据库容灾、高可用性是DBA实际生产运维的重点,作者针对多种MySQL中间件进行了深入讲解,并结合实践给出了操作性更强、更灵活的方案,更重要的是,给出了解决MySQL高可用架构问题的拓展思路。诸如之类,不胜枚举。
近几年,随着MySQL的发展,其分支在性能与架构方面都有所突破,如何在应用中更好地发挥MySQL的优势,如何做好数据库的容灾与数据保护,如何结合业务做好高可用架构等,都对MySQL DBA提出了挑战,深入理解MySQL新的特性成为DBA必备的知识,而作者恰好在第2版中针对以上内容给出了自己的见解,并提供了富有远见的解决方案,非常值得期待。
—— 黄锡峰 PP租车数据运维负责人
MySQL作为一款开源的数据库在越来越多的场景下得到应用,并且在互联网电商、互联网金融等领域都有成功案例。作者以目前最新的MySQL 5.7和MariaDB 10.1版本为主进行讲解,以当前流行架构作为拓展,相信可以让更多的DBA在日常工作中借鉴书中内容。
—— 董伟 迅达云(speedycloud.cn) CTO

作者曾任职多家知名互联网企业,致力于MySQL性能调优与框架设计,具有丰富的实战经验,曾在51CTO博客分享200余篇实战博文,深受好评。本书针对MariaDB 10.1和MySQL 5.7进行讲解,填补了此类书籍的空白,是广大MySQL从业者的福音。
—— 张丽妍 51CTO技术社区总编
本书的作者贺春旸有非常丰富的数据库管理和运维经验,本书的第1版中详细说明了MySQL数据库管理的相关知识,是一本非常好的MySQL DBA入门书籍,曾帮助众多MySQL相关的从业人员学习和掌握MySQL数据库知识。本书更是基于最新的MySQL 5.7和MariaDB 10.1为大家展现了一个全新的MySQL世界。
—— 张磊 顺丰商业MySQL数据库专家 
 MySQL作为最为流行的开源数据库之一,已经在越来越多的公司投入使用。随着使用量的增大、社区持续升温,Oracle官方也加快了其新版本的迭代速度。
作者以其扎实的理论基础,并结合多年的实践经验,针对MySQL新版本的方方面面做了详细的阐述。相信通过此书,会对广大读者更快速、全面地了解新版本带来帮助。
此外,本书还兼顾介绍了MySQL管理的各个方面,既是一本不错的学习资料,也可作为案头必备的手册随时翻阅。
 —— 韩锋 宜信公司数据库架构师

本书从实际工作经验出发,针对最新版本MySQL 5.7和MariaDB 10.1分别从故障处理、高可用架构、分布式架构、性能优化等角度分析了在数据库运维过程中需要注意的地方及解决问题的思路,为今后的数据库升级奠定了基础。书中内容以实战为导向,所有内容均来自于笔者多年实践经验的总结和新知识的拓展,同时也针对运维人员、DBA等相关工作者会遇到的有代表性的疑难问题给出了实用的情景模拟,并给出了解决方案。不论你目前有没有遇到过此类问题,相信都会有借鉴意义。

作者简介







贺春旸,从事数据库管理工作多年,有管理和维护高并发海量数据的经验,曾经任职于中国移动飞信、聚美优品、机锋网、普惠金融等企业,致力于MySQL、Linux等开源技术的研究,主要负责MySQL性能调优和架构设计。

图书前言

为什么要写这本书
首先要感谢读者对第1版的认可。随着技术的更新,第1版的内容已逐渐变老,为了与时俱进,所以准备再写一本关于MariaDB 10和MySQL 5.7的数据库图书,把自己学到的新知识做一个系统性总结来呈现给大家。目前市面上针对相关知识进行介绍的书还寥寥无几,大多数读者只能通过阅读英文手册去获取新的知识,希望本书的出版能对大家有所帮助。
本书以构建高性能MySQL服务器为核心内容,介绍了MariaDB 10和MySQL 5.7的新特性,并从故障诊断与优化、性能调优、备份与恢复、MySQL高可用集群搭建与管理、MySQL服务器性能和服务监控等角度深入讲解了如何去管理与维护MySQL服务器。书中内容均来自于笔者多年实践经验的总结和新知识的拓展,同时也包含很多实用的情景模拟,并针对运维人员、DBA等相关工作者常遇到的有代表性的疑难问题给出了解决方案。不论你目前有没有遇到过此类问题,相信都会有借鉴意义。
如何阅读本书
本书的知识结构分四部分:
第一部分(第1章至第2章)介绍MySQL5.7/MariaDB 10的新特性、注意事项、安装和升级方法。
第二部分(第3章至第6章)为故障诊断与优化,涉及生产环境下MySQL故障处理,以及性能调优等内容,包括表设计阶段范式的理解、字段类型的选取、采用表锁还是行锁、MySQL默认的隔离级别与传统SQL Server,以及Oracle数据库默认的隔离级别的区别、SQL语句的优化,以及合理利用索引等。
第三部分(第7章至第10章)为架构篇,内容包括当前互联网流行的高可用架构MHA(Master High Availability)、分库分表中间件Oneproxy和读写分离中间件MariaDB MaxScale,以及Percona/MariaDB Galera Cluster集群管理。
第四部分(第11章)阐述慢SQL管理平台的搭建与维护,主要介绍集中收集慢日志查询。
本书的每个部分都可以单独作为一本迷你书阅读,如果你未接触MySQL5.7/MariaDB 10,建议从第一部分开始阅读。本书提供的脚本和相关软件,请在华章网站(www.hzbook.com)的本书页面下载。
勘误和支持
由于作者的水平有限,编写的时间也很仓促,书中难免会出现一些错误或者不准确的地方,不妥之处恳请读者批评指正。你可以将书中的错误,发送邮件至我的邮箱chunyang_he@139.com或者通过QQ联系我:3783414,我很期待能够听到你们真挚的反馈。
致谢
在这里感谢沃趣科技公司高级DBA邱文辉提供《MariaDB 10 Hash Join索引优化》一文。
感谢机械工业出版社华章分社的编辑杨绣国老师,感谢你的魄力和远见,在这一年多的时间中始终支持我的写作,你的鼓励和帮助引导我顺利完成全部书稿。

贺春旸
2016年5月于北京

上架指导

计算机\数据库

封底文字

赞誉
贺春旸老师是业界知名的一线MySQL实战技术专家。从51CTO技术博客专家到51CTO学院签约讲师,他用一篇篇博文和一节节实战课程分享着自己的实践经验,诠释着他对MySQL管理的全新认知。如今,《MySQL管理之道(第2版)》又让我眼前一亮,本书不仅仅是对第一版的简单修正,更加入了MariaDB 10和MySQL 5.7版本的全新内容,融入了贺老师近几年思考总结的经典实战经验。如果你有空品读此书,一定不虚此行。

——51CTO学院(edu.51cto.com)



MariaDB是MySQL的一个重要分支,是MySQL之父主导研发的开源产品。随着版本迭代,其优秀的性能也得到更多公司的认可;包括Wikipedia、Google在内的越来越多的公司从MySQL迁移到MariaDB。虽然MariaDB已经广泛使用,但市面上关于MariaDB的实战类资料还比较欠缺,这本书则填补了这方面的空缺。书中所述的MySQL高可用集群搭建与管理、故障诊断与优化等都是当今最前沿的MySQL数据库技术,为市面上不可多得的精彩资料。作者热衷于技术分享,读者在阅读本书的过程中有任何困惑,都可以随时与作者交流。 

——磨盘网络(imopan.com&gfan.com)机锋平台研发部总监 毕江涛




在第一版中已经感受了作者对MySQL有自己的理解与解决问题的思路,收益良多,也可体会到作者辛劳与智慧的付出。
例如,对于SQL编程中遇到种种技术难题,不仅给出了具体的解决办法,还结合实践经验,告诉读者为什么要这样去解决。
又比如,数据库容灾、高可用性是DBA实际生产运维的重点,作者针对多种MySQL中间件进行了深入讲解,并结合实践给出了操作性更强、更灵活的方案,更重要的是,给出了解决MySQL高可用架构问题的拓展思路,诸如之类,不胜枚举。
近几年,随着MySQL的发展,其分支在性能与架构方面都有所突破,如何在应用中更好地发挥MySQL的优势,如何做好数据库的容灾与数据保护,如何结合业务做好高可用架构等,都对MySQL DBA提出了挑战,深入理解MySQL新的特性成为DBA必备的知识,而作者恰好在第二版中针对以上内容给出了自己的见解,并提供了富有远见的解决方案,非常值得期待。
——PP租车数据运维负责人 黄锡峰


MySQL作为一款开源的数据库在越来越多的场景下得到应用,并且在互联网电商、互联网金融等领域都有成功案例。作者以目前最新的MySQL5.7版本和MariaDB10.1版为主进行讲解,以当前流行架构作为拓展,相信可以让更多的DBA在日常工作中借鉴。

——迅达云(speedycloud.cn) CTO 董伟

作者简介

贺春旸 著:暂无简介

推荐序

飞跃的第2版
MySQL作为一个开源项目,已经有20年历史了,最近几年在互联网核心系统中的成功使用奠定了其在关系数据库中的地位,也成为让每一个DBA、开发人员、架构师及CTO都不得不考虑的数据库基础软件。
对于数据库爱好者来讲,Oracle是非常值得研究的数据库,因为其历史悠久、功能卓越;而MySQL则是非常适合研究的,因为它的代码、协议及外围配套工具具有开放性。国内有一大批在各个企业成功实施过MySQL的优秀工程师,在完成工作之余,他们还积累了丰富的知识和经验,并提炼总结著成书籍,以帮助其他人,本书作者就是其中之一。
本书的第1版帮助了不少人入门MySQL,我在学习MySQL的过程中也参阅过第1版,以便了解不同企业使用MySQL的业务场景和遇到的技术难题,以及最后所用的解决方案。用心的读者是用心的作者最大的动力和回报。
最近三四年里,MySQL发展极快,包括官方的MySQL版本以及MariaDB分支的发展,更重要的是在企业的各类系统中它的应用也越来越广泛和深入。随着它的发展,架构师及运维主管的工作也更具有挑战性,此时,作者用心编写第2版,不只是简单的完善和改版,还可以理解为重写和飞跃。
现在,数据库管理员已经变成了数据管理员,反映的是理念和架构的变化,第2版中新增的内容更多地印证了这一点,这一版对高可用、自动切换、数据保护等方案的透析更加深入,数据库中间件部分的深入分析更能拓展广大DBA的视野。
如果将一本书比作一个人,那么第1版聚焦于DBA工作,而第2版则聚焦于架构师的思考,并且还可以随时随地联系作者进行深入交流,不再只是局限于本书中的内容!

平民软件(http://www.onexsoft.com) 楼方鑫

图书目录

推荐序:飞跃的第2版
前 言
第1章 MariaDB架构与历史 1
1.1 MariaDB的介绍 1
1.2 MariaDB和MySQL的兼容性 2
1.3 MariaDB 10.0新增的功能 3
1.3.1 更多的存储引擎 4
1.3.2 速度的提升 5
1.3.3 扩展和新功能 5
1.4 如何将MySQL迁移至MariaDB 8
1.5 使用二进制包安装MariaDB 10.1企业版 10
1.6 总结 12
第2章 MySQL 5.7与MariaDB 10.1的新特性 13
2.1 性能提升 14
2.2 安全性的提升 15
2.2.1 默认开启SSL 15
2.2.2 不再明文显示用户密码 20
2.2.3 sql_mode的改变 20
2.3 InnoDB存储引擎的提升 22
2.3.1 更改索引名字时不会锁表 22
2.3.2 在线DDL修改varchar字段属性时不锁表 23
2.3.3 InnoDB/MyisAM存储引擎支持中文全文索引 26
2.3.4 InnoDB Buffer Pool预热改进 29
2.3.5 在线调整innodb_Buffer_Pool_Size不用重启mysql进程 31
2.3.6 回收(收缩)undo log回滚日志物理文件空间 32
2.3.7 InnoDB提供通用表空间 33
2.3.8 创建InnoDB独立表空间指定存放路径 34
2.3.9 迁移单独一张InnoDB表到远程服务器 35
2.3.10 修改InnoDB redo log事务日志文件大小更人性化 36
2.3.11 死锁可以打印到错误日志里  37
2.3.12 支持InnoDB只读事务 37
2.3.13 支持InnoDB表空间数据碎片整理 38
2.4 JSON格式的支持 39
2.4.1 支持用JSON格式存储数据 39
2.4.2 动态列支持用JSON格式存储数据 41
2.5 支持虚拟列(函数索引) 44
2.5.1 MySQL 5.7支持函数索引 44
2.5.2 MariaDB 10.0/10.1支持函数索引 45
2.6 功能提升 46
2.6.1 支持杀死慢的SQL语句 46
2.6.2 支持一张表有多个INSERT/DELETE/UPDATE触发器 48
2.6.3 引入线程池(Thread Pool)技术 49
2.6.4 提供审计日志功能 52
2.6.5 支持explain update  53
2.6.6 在MySQL 5.7 中按Ctrl+C组合键不会退出客户端 54
2.6.7 可将错误日志打印到系统日志文件中 54
2.6.8 支持创建角色 55
2.6.9 支持TokuDB存储引擎 56
2.7 优化器改进 59
2.7.1 针对子查询select采用半连接优化 59
2.7.2 优化派生子查询 62
2.7.3 优化排序limit 65
2.7.4 优化IN条件表达式 66
2.7.5 优化union all 69
2.7.6 支持索引下推优化 70
2.7.7 支持Multi Range Read索引优化 72
2.7.8 支持Batched Key Access(BKA)索引优化 75
2.7.9 支持Hash Join索引优化 77
2.8 半同步复制改进 78
2.8.1 半同步复制简介 78
2.8.2 半同步复制的安装配置 79
2.8.3 参数说明 79
2.8.4 功能测试 80
2.8.5 性能测试 84
2.9 GTID复制改进 87
2.9.1 GTID复制概述 87
2.9.2 在MySQL 5.6的GTID模式下同步复制报错不能跳过的解决方法 90
2.9.3 MySQL 5.7中GTID复制的改进 93
2.9.4 GTID复制的陷阱 95
2.9.5 MariaDB 10.1中GTID复制的改进 96
2.9.6 GTID的使用方式不同 97
2.10 MySQL 5.6/5.7从库崩溃安全恢复 98
2.11 MariaDB 10.0/10.1从库崩溃安全恢复 99
2.12 slave从库多线程复制 99
2.13 slave支持多源复制 101
2.14 MySQL 5.7设置同步复制过滤不用重启mysql服务进程 103
2.15 小结 104
第3章 故障诊断 105
3.1 影响MySQL性能的因素 105
3.2 系统性能评估标准 106
3.2.1 影响Linux服务器性能的因素 106
3.2.2 系统性能评估指标 107
3.2.3 开源监控和评估工具介绍 109
3.3 故障与处理 112
3.3.1 连接数过多导致程序连接报错的原因 112
3.3.2 记录子查询引起的宕机 117
3.3.3 诊断事务量突高的原因 120
3.3.4 谨慎设置binlog_format=MIXED 123
3.3.5 未设置swap分区导致内存耗尽,主机死机 127
3.3.6 MySQL故障切换之事件调度器注意事项 128
3.3.7 人工误删除InnoDB ibdata数据文件,如何恢复 130
3.3.8 update忘加where条件误操作恢复(模拟Oracle闪回功能) 132
3.3.9 delete忘加where条件误操作恢复(模拟Oracle闪回功能) 141
第4章 同步复制报错故障处理 145
4.1 最常见的3种故障 145
4.1.1 在master上删除一条记录时出现的故障 146
4.1.2 主键重复 147
4.1.3 在master上更新一条记录,而slave上却找不到 148
4.2 特殊情况:slave的中继日志relay-log损坏 149
4.3 人为失误 151
4.4 避免在master上执行大事务 152
4.5 slave_exec_mode参数可自动处理同步复制错误 153
4.6 如何验证主从数据一致 154
4.7 binlog_ignore_db引起的同步复制故障 156
4.8 MySQL5.5.19/20同步一个Bug 157
4.9 恢复slave从机上的某几张表的简要方法 159
4.10 如何干净地清除slave同步信息 160
第5章 性能调优 162
5.1 表设计 162
5.2 字段类型的选取 166
5.2.1 数值类型 167
5.2.2 字符类型 172
5.2.3 时间类型 174
5.2.4 小技巧:快速修改表结构 181
5.2.5 pt-online-schema-change在线更改表结构 185
5.2.6 MySQL5.6在线DDL更改表测试 191
5.3 采用合适的锁机制 194
5.3.1 表锁的演示 194
5.3.2 行锁的演示 197
5.3.3 InnoDB引擎与MyISAM引擎的性能对比 199
5.4 选择合适的事务隔离级别 201
5.4.1 事务的概念 201
5.4.2 事务的实现 202
5.4.3 事务隔离级别介绍 204
5.5 SQL优化与合理利用索引 210
5.5.1 如何定位执行很慢的SQL语句 210
5.5.2 SQL优化案例分析 211
5.5.3 合理使用索引 221
5.6 my.cnf配置文件调优 231
5.6.1 per_thread_buffers优化 231
5.6.2 global_buffers优化 233
5.6.3 Query Cache在不同环境下的使用 234
5.6.4 tuning-primer.sh性能调试工具的使用 238
5.6.5 72 GB内存的my.cnf配置文件 241
5.6.6 谨慎使用分区表功能 244
5.7 MySQL5.6同步复制新特性详解 246
第6章 备份与恢复 256
6.1 冷备份 257
6.2 逻辑备份 257
6.2.1 mysqldump增加了一个重要参数 258
6.2.2 取代mysqldump的新工具mydumper 259
6.2.3 逻辑备份全量、增量备份脚本 262
6.3 热备份与恢复 263
第7章 高可用MHA架构集群管理 268
7.1 MHA架构简介 268
7.1.1 master自动监控和故障转移 270
7.1.2 手工处理master故障转移 270
7.1.3 在线平滑切换 270
7.2 MHA配置安装 270
7.3 MHA故障切换演示 277
7.3.1 场景一:master自动监控和故障转移 277
7.3.2 场景二:master手工故障转移 285
7.3.3 场景三:在线平滑切换 285
7.4 MHA高可用架构总结 290
第8章 MySQL架构演进:“一主多从、读/写分离” 293
8.1 实现读/写分离的两种方式 293
8.2 主从同步延迟的判断标准 297
8.3 HAProxy感知MySQL主从同步延迟 300
8.4 读/写分离MariaDB MaxScale架构搭建演示 307
8.4.1 配置环境及安装介绍 307
8.4.2 基于connect方式的测试 311
8.4.3 基于statement方式(SQL解析)的测试 312
8.4.4 MaxScale延迟检测 313
8.5 读/写分离OneProxy介绍及架构搭建演示 315
8.5.1 OneProxy简介 316
8.5.2 OneProxy的功能及安装介绍 316
8.5.3 OneProxy读/写分离接入限制 320
第9章 Codership Galera Cluster 集群架构搭建与管理 322
9.1 Codership Galera Cluster的特性和优缺点 323
9.2 Codership Galera Cluster的局限性 323
9.3 Codership Galera Cluster的工作原理 324
9.4 Codership Galera Cluster的配置 328
9.4.1 Codership Galera Cluster的配置环境及安装 328
9.4.2 功能测试 332
9.5 HAProxy结合Galera Cluster实现无单点秒级故障切换 337
第10章 OneProxy分库分表的搭建与管理 345
10.1 OneProxy 分库分表的搭建 346
10.1.1 配置与安装 346
10.1.2 前端PHP/Java程序接入事项 349
10.2 OneProxy分库分表接入限制 349
10.3 OneProxy分库分表基本测试 351
10.3.1 分库分表的功能测试 351
10.3.2 分库分表的二级分区测试 354
10.3.3 分库分表的聚合测试 358
10.3.4 分库分表的插入测试 359
10.3.5 分库分表不支持跨库join的测试 360
10.3.6 分库分表不支持分布式事务的测试 361
10.3.7 分库分表不支持存储过程的测试 361
10.4 搭建OneProxy高可用故障切换HA 362
10.5 OneProxy 黑名单SQL防火墙搭建测试 363
第11章 Lepus慢日志分析平台搭建与维护 367
11.1 Lepus基础组件的安装 367
11.2 安装percona-toolkit工具 370

教学资源推荐
作者: [美] 亚伯拉罕·西尔伯沙茨 (Abraham Silberschatz) [美] 亨利·F. 科思 (Henry F. Korth) [印] S. 苏达尔尚(S. Sudarshan) 著
作者: 郭晓平 朱鸣华 著
作者: 周爱武 汪海威 肖云 编著
参考读物推荐
作者: 连德富 张富峥 王英子 袁晶 谢幸 编著
作者: [美]本杰明·罗森维格(Benjamin Rosenzweig),[加]艾琳娜·拉希莫夫(Elena Rakhimov) 著
作者: (加)洪松林(Hong Song Lin) (中)庄映辉 李堃 著