书籍详情
《高可用MySQL:第2版》[48M]百度网盘|亲测有效|pdf下载
  • 高可用MySQL:第2版

  • 出版社:电子工业出版社
  • 出版时间:2015-10-01
  • 热度:8861
  • 上架时间:2024-06-30 08:52:20
  • 价格:0.0
书籍下载
书籍预览
免责声明

本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正

内容介绍

编辑推荐
  学习复制的基础知识,包括二进制日志和MySQL Replicant库的使用通过冗余处理失效组件横向扩展以管理读负载的增加,使用数据分片处理大型数据库和写负载的增加使用MySQL集群在单个节点上存储并复制数据监控数据库活动和性能,以及重要的操作系统参数跟踪master和slave,处理它们的故障、重启、崩溃及其他事故检查工具,包括MySQL企业监控器、MySQL实用工具、GTID等
内容简介
  本书主要讲解真实环境下如何使用MySQL的复制、集群和监控特性,揭示MySQL可靠性和高可用性的方方面面。本书定位于解决MySQL数据库的常见应用瓶颈,在保持MySQL的持续可用性的前提下,挖潜各种提高性能的解决方案。本书描述了很多MySQL工具的变化。涵盖了5.5版本的知识,以及若干5.6版本的功能。本书的作者正是书中介绍的很多工具的设计师,本书揭示了MySQL可靠性和高可用性的许多不为人知的方面。
作者简介
  作者是本书上一版的译者,两位译者有着丰富的实际工作经验、理论经验和翻译经验,文字水平很高,且具有高度的责任心。
目录
译者序
第2版序
第1版序
前言
第1部分 高可用性和可扩展性
第1章 引言
到底什么是复制
那么,是否需要备份
什么是监控
其他阅读材料
小结
第2章 MySQL Replicant库
基本类和函数
对各种操作系统的支持
服务器
服务器角色
小结
第3章 MySQL复制原理
复制的基本步骤
配置master
配置slave
连接master和slave
二进制日志简介
二进制日志记录了什么
观察复制的动作
二进制日志的结构和内容
建立新slave
克隆master
克隆slave
克隆操作的脚本
执行常见的复制任务
报表
小结
第4章 二进制日志
二进制日志的结构
binlog事件的结构
事件校验
将语句写入日志
写入DML语句
写入DDL语句
写入查询
LOAD DATA INFILE语句
二进制日志过滤器
触发器、事件和存储例程
存储过程
存储函数
事件
特殊结构
非事务型变更和错误处理
将事务写入日志
使用XA进行分布式事务处理
二进制日志的组提交
基于行的复制
启用基于行的复制
使用混合模式
二进制日志管理
二进制日志和系统崩溃安全
binlog文件轮换
事故
清除binlog文件
mysqlbinlog实用工具
基本用法
解释事件
二进制日志的选项和变量
基于行的复制参数
小结
第5章 面向高可用性的复制
冗余
计划
slave故障
master故障
relay故障
灾难恢复
方法
热备份
双主结构
提升slave
环形复制
小结
第6章 面向横向扩展的MySQL复制
横向扩展读操作,而不是写操作
异步复制的价值
管理复制拓扑
应用层的负载均衡
级联复制
配置relay
使用Python添加relay
专用slave
过滤复制事件
使用过滤将事件分配给slave
数据的一致性管理
非级联部署的一致性
级联部署的一致性
小结
第7章 数据分片
什么是数据分片
为什么要分片
分片的局限性
分片方案的要素
高级分片架构
数据分区
分配分片
映射分片关键字
分片方案
分片映射函数
处理查询和事务调度
处理事务
分配查询
分片管理
将分片迁移到其他节点
分割分片
小结
第8章 深入复制
复制架构基础
中继日志的结构
复制线程
启动和停止slave线程
通过Internet运行复制
使用内置支持建立安全复制
使用Stunnel建立安全复制
细粒度控制复制
关于复制状态的信息
处理断开连接的选项
slave如何处理事件
管理I/O线程
SQL线程的处理
半同步复制
配置半同步复制
监控半同步复制
全局事务标识符
使用GTID配置复制
使用GTID进行故障转移
使用GTID提升slave
GTID的复制
slave的安全和恢复
同步、事务以及数据库崩溃问题
事务型复制
保护非事务型语句的规则
多源复制
基于行的复制的细节
Table_map事件
行事件的结构
行事件的执行
事件和触发器
基于行的复制中的过滤
部分行复制
小结
第9章 MySQL集群
什么是MySQL集群
术语和组件
MySQL集群和MySQL有何不同
典型配置
MySQL集群的特点
本地和全局冗余
日志处理
冗余和分布式数据
MySQL集群的架构
如何存储数据
分区
事务管理
联机操作
配置实例
入门
启动MySQL集群
测试集群
关闭集群
获得高可用性
系统恢复
节点恢复
复制
获得高性能
高性能的注意事项
高性能的最佳实践
小结
第2部分 监控和管理
第10章 监控入门
监控方法
监控的好处
监控系统组件
处理器
内存
磁盘
网络子系统
监控方案
Linux和UNIX监控
进程活动
内存利用率
磁盘利用率
网络活动
常见系统统计信息
使用cron自动监控
Mac OS X 监控
System Profiler
控制台
Activity Monitor
Microsoft Windows监控
Windows体验
系统健康报告
事件查看器
可靠性监视器
任务管理器
性能监视器
预防性维护监控
小结
第11章 监控MySQL
什么是性能
MySQL服务器监控
如何显示MySQL性能
性能监控
SQL命令
mysqladmin实用工具
MySQL工作台
第三方工具
MySQL基准测试套件
服务器日志
性能模式
概念
入门
使用性能模式诊断性能问题
MySQL的监控分类
数据库性能
衡量数据库的性能
数据库优化的最佳实践
提高性能的最佳实践
一切都很慢
查询慢
应用慢
复制慢
小结
第12章 监控存储引擎
InnoDB
使用SHOW ENGINE命令
使用InnoDB监视器
监控日志文件
监控缓冲池
监控表空间
使用INFORMATION_SCHEMA表
使用PERFORMANCE_SCHEMA表
其他需要考虑的参数
InnoDB故障排除的技巧
MyISAM
优化磁盘存储
修复表
使用MyISAM实用工具
按索引顺序存储表
压缩表
对数据表进行碎片整理
监控key cache
预加载key cache
使用多个key cache
其他需要考虑的参数
小结
第13章 监控复制
入门
服务器设置
包容性和排他性复制
复制线程
监控master
master的监控命令
master的状态变量
监控slave
slave的监控命令
slave的状态变量
使用MySQL工作台监控复制
其他需要考虑的问题
网络
监控和管理slave滞后
slave滞后的原因和预防措施
使用GTID
小结
第14章 复制的故障排除
哪里出错了
master上的问题
master崩溃及Memory表被占用
master崩溃及二进制日志事件丢失
master上查询正常但在slave上出错
崩溃之后表损坏
master上的二进制日志损坏
杀死非事务型表上长时间运行的查询
不安全的语句
slave上的问题
slave服务器崩溃及复制无法启动
slave连接超时及反复重新连接
slave上的查询结果与master上的不同
当尝试重启SSL时slave出错
内存表数据丢失
slave崩溃后临时表丢失
slave运行慢而且与master不同步
slave崩溃后数据丢失
崩溃后表损坏
slave上中继日志损坏
slave重启时的多个错误
slave上事务失败的后果
I/O线程的问题
SQL线程的问题:不一致
slave上的错误不一样
高级复制问题
变更没有在拓扑中复制
环形复制的问题
多master的问题
HA_ERR_KEY_NOT_FOUND错误
GTID问题
复制的故障排除工具
最佳实践
了解你的拓扑结构
检查所有服务器的状态
检查日志
检查配置
有序地执行关闭操作
有序地执行故障后的重启操作
手动执行失败的查询
不要混合使用事务型表和非事务型表
一般步骤
报告复制错误
小结
第15章 保护你的资产
什么是信息保护
信息保障的三个实践
信息保障为什么重要
信息完整性、灾难恢复及备份的职责
高可用性与灾难恢复
灾难恢复
数据恢复的重要性
备份和恢复
备份实用程序和操作系统层的解决方案
MySQL企业备份
使用MySQL实用工具集进行数据库的导出和导入
mysqldump工具
物理文件复制
逻辑卷管理器快照
XtraBackup
备份方法的比较
备份和MySQL复制
使用复制进行备份和恢复
PITR
自动备份
小结
第16章 MySQL企业版监控
MySQL企业版监控入门
产品
剖析MySQL企业监控器
安装概述
MySQL企业监控组件
Dashboard
监控代理
advisor
查询分析器
MySQL产品支持
使用MySQL企业版监控
监控
查询分析器
更多信息
小结
第17章 使用MySQL实用工具管理MySQL复制
常见的MySQL复制任务
状态检查
停止复制
添加slave
MySQL实用工具
入门
不通过工作台使用实用工具
通过工作台使用实用工具
常用工具
比较数据库的一致性:mysqldbcompare
复制数据库:mysqldbcopy
导出数据库:mysqldbexport
导入数据库:mysqldbimport
发现不同:mysqldiff
显示磁盘使用情况:mysqldiskusage
检查表的索引:mysqlindexcheck
查找元数据:mysqlmetagrep
查找进程:mysqlprocgrep
克隆服务器:mysqlserverclone
显示服务器信息:mysqlserverinfo
克隆用户:mysqluserclone
实用工具客户端:mysqluc
复制的实用工具
配置复制:mysqlreplicate
检查复制的配置:mysqlrplcheck
显示拓扑结构:mysqlrplshow
高可用的实用工具
概念
mysqlrpladmin
mysqlfailover
创建自己的实用工具
MySQL实用工具的结构
自定义工具的示例
小结
附录A 复制的提示和技巧
附录B 一个GTID的实现
索引[1]
关于作者
介绍
前言
  前言
  本书的作者们参与编写了部分MySQL组件,并在此领域工作了多年。Charles Bell博士是带领MySQL Utilities小组的高级开发人员,同时还参与复制和备份工作。他的兴趣涵盖MySQL的各个方面,数据库理论、软件工程、微控制器和3D打印等。Mats Kindahl博士是主要的高级开发人员,目前带领MySQL高可用性和扩展性小组,是若干MySQL特性的架构师和实现者。Lars Thalmann博士是MySQL Replication、Backup、Connectors和Utilities小组的开发总监和技术领导,他设计了很多复制和备份的特性,主要从事MySQL集群、复制和备份技术的开发工作。
  为了填补MySQL相关书籍的空白,我们撰写了这本书。关于MySQL有很多出色的书籍,但很少集中讲述它的高级特性和应用,诸如高可用性、可靠性和可维护性等。本书将涵盖所有这些主题,当然还有其他更多内容。
  为了使阅读更加有趣,我们添加了一个遭遇老板提出种种要求的MySQL从业者的小故事。在该故事中,你将认识Joel Thomas,最近他决定在一家刚开始使用MySQL的公司工作。你将看到Joel学习MySQL的方式,以及如何处理MySQL从业者所面临的一些最棘手的问题。希望你会觉得这部分内容很有趣。
  读者对象
  本书的读者对象是MySQL从业人士。我们假设读者已拥有SQL、MySQL管理和操作系统的基础背景知识。我们会介绍一些关于复制、灾难恢复、系统监控及其他以高可用性为主题的背景信息。其他书籍的第1章也会介绍相关有用的背景知识。
  本书的组织结构
  本书分为两部分。第1部分包括MySQL的高可用性和横向扩展性。由于这些问题很大程度上取决于复制,所以本部分大多都集中在这个主题上。第2部分介绍构建健壮的数据中心时,监控和性能方面的问题。
  第1部分 高可用性和可扩展性
  第1章 引言 介绍了本书的价值,并提供了阅读的情境。
  第2章 MySQL Replicant库 介绍了贯穿本书的一个Python库。
  第3章 MySQL 复制原理 讨论了设置基本复制的手动和自动流程。
  第4章 二进制日志 解释了与复制、灾难恢复、故障排除和其他管理任务相关的关键文件。
  第5章 面向高可用性的复制 给出了服务器故障恢复的多种方法,包括自动化脚本的使用。
  第6章 面向横向扩展的MySQL复制 介绍了提升大数据集读扩展性的多种技术和拓扑结构。
  第7章 数据分片 描述了处理超大数据库的技术,以及通过分片提升数据库的写扩展性。
  第8章 深入复制 讲述了诸如安全数据传输和基于行的复制等主题。
  第9章 MySQL集群 描述了如何使用该工具达到高可用性。
  第2部分 监控和管理
  第10章 监控入门 介绍了必须注意的主要操作系统参数,以及监控它们的工具。
  第11章 监控MySQL 介绍了几种数据库行为和性能的监控工具。
  第12章 监控存储引擎 更加详细地解释了需要监控的参数,重点描述MyISAM或者InnoDB相关的问题。
  第13章 监控复制 详细描述了如何跟踪主节点和从节点。
  第14章 复制的故障排除 介绍了如何处理故障、重启、崩溃及其他意外事故。
  第15章 保护你的资产 解释了备份和灾难恢复技术的使用。
  第16章 MySQL企业版监控 介绍了用于简化上述很多任务的一个工具套件。
  第17章 使用MySQL实用工具管理MySQL复制 介绍了MySQL实用工具,包含管理MySQL服务器的一整套工具。
  附录
  附录A为复制的提示和技巧,列举了特定情况下一些有用的方法。
  附录B为一个GTID的实现,给出了如果服务器不支持GTID,处理事务故障转移的实现方法。
  本书的印刷约定
  下面是本书中使用的字体约定:
  纯文本(Plain text)
  表示菜单标题、选项和按钮。
  斜体(Italic)
  表示新术语、表名和数据库名、URL、E-mail地址、文件名及UNIX工具。
  等宽字体(Constant width)
  表示命令行选项、变量和其他代码元素、文件内容及命令输出。
  等宽加粗字体(Constant width bold)
  表示命令或其他应该由用户输入的文本。
  等宽斜体(Constant width italic)
  表示应该替换为用户提供的值的文本。
  这个图标表示提示或建议。
  这个图标表示一般说明。
  这个图标表示警告或注意。
  中文版书中切口以“”表示原书页码,便于读者与原英文版图书对照阅读,本书的索引中所列的页码为原英文版图书中的页码。
  使用示例代码
  补充材料(包括代码示例、练习等)可以到//bit.ly/mysqllaunch下载。
  本书对你的工作有所帮助。一般来说,可以在你的程序或者文档中使用本书提供的示例代码。你不必联系我们获得许可,除非你要大量传播代码。例如,从书中抄几块代码编写程序不需要许可;销售或分销O'Reilly随书附带光盘上的示例代码则需要许可;引用本书的示例代码回答问题不需要许可;将书中大量的示例代码附加到你的产品文档中则需要许可。
  我们感谢但不要求注明出处。出处的格式一般包括标题、作者、出版商和ISBN。例如,“MySQL High Availability,by Charles Bell,Mats Kindahl,and Lars Thalmann.Copyright 2014 Charles Bell,Mats Kindahl,and Lars Thalmann,978-1-44933-958-6.”
  如果你觉得示例代码的使用不合理或不符合以上的许可权限,请随时联系我们:permissions@oreilly.com。
  Safari Books Online
  Safari Books Online(www.safaribooksonline.com)是一个按需出版的数字图书馆,出版各种专业的书籍和视频,它们由世界上技术和商业领域的优秀作者撰写。
  技术人员、软件开发者、网页设计者及商业和创意专业人士都把Safari Books Online当作科研、问题解决、学习及认证训练的主要资源。
  Safari Books Online为组织、政府机构和个人提供了大量的产品组合和定价方案。订阅者可以从一个完全可搜索的数据库中获取成千上万的书籍、培训视频和尚未出版的手稿,这些出版商包括O'Reilly Media,Prentice Hall Professional,Addison-Wesley Professional,Microsoft Press,Sams,Que,Peachpit Press,Focal Press,Cisco Press,John Wiley & Sons,Syngress,Morgan Kaufmann,IBM Redbooks,Packt,Adobe Press,FT Press,Apress,Manning,New Riders,McGraw-Hill,Jones & Bartlett,Course Technology,以及其他数十家出版社。如想了解更多Safari Books Online的信息,请在线访问我们。
  如何联系我们
  请将对本书的评价和存在的问题通过如下地址告知出版者:
  美国:
  O'Reilly Media,Inc.
  1005 Gravenstein Highway North
  Sebastopol,CA 95472
  中国:
  北京市西城区西直门南大街2 号成铭大厦C 座807 室(100035)
  奥莱利技术咨询(北京)有限公司
  O'Reilly 的每一本书都有专属网站,你可以在那里找到关于本书的相关信息,包括勘误列表、示例代码以及其他信息。本书的网站地址是:
  http:/bit.ly/mysql_high_availability
  对于本书的评论和技术性的问题,请发送电子邮件到:
  bookquestions@oreilly.com
  关于我们的书籍、课程、会议和新闻的更多信息,请参阅我们的网站//www.oreilly.com。
  在Facebook上找到我们://facebook.com/oreilly
  在Twitter上关注我们://twitter.com/oreillymedia
  在YouTube上观看我们://www.youtube.com/oreillymedia
  致谢
  作者要感谢这一版和上一版的技术审校人员:Mark Callaghan,Morgan Tocker,Sveta Smirnova,Luis Soares,Sheeri Kritzer Cabral,Alfie John和Colin Charles。你们对细节的关注以及有见地的建议都是无价的。没有你们的帮助,就没有高质量的图书。
  还要感谢我们MySQL小组极有才华的同事们,以及MySQL社区提供评论的人们,包括Alfranio Correia,Andrei Elkin,Zhen-Xing He,Serge Kozlov,Sven Sandberg,Luis Soares,Rafal Somla,Li-Bing Song,Ingo Strüwing,Dao-Gang Qu,Giuseppe Maxia和Narayanan Venkateswaran,他们孜孜不倦的努力使得MySQL变得健壮和强大。特别感谢MySQL客户支持的专家们,他们帮助我们缩小了客户需求与我们改进产品的愿望之间的差距。还要感谢很多社区成员,他们如此忘我地投入时间和精力改善MySQL,造福大家。
  最后,同时也是最重要的,要感谢我们的编辑,Andy Oram,他帮助我们完成这项工作,并忍受着我们对于MySQL时而理智时而过度积极的热情。向整个O'Reilly小组致以最诚挚的谢意,特别是编辑,感谢他们的耐心,我们如此努力地往一本已经很庞大的书里面塞了这么多新的内容。
  Charles要感谢他最爱的妻子,Annette,当他忙于本书的工作而不在家的时候,感谢她的耐心和理解。Charles还要感谢他在Oracle工作的MySQL小组的同事们,他们每天无偿地将自己的智慧贡献给每个人。最后,Charles要感谢他基督教的兄弟姐妹们,他们每天都在考验和支持着他。
  Mats要感谢他的妻子Lill和两个儿子Jon和Hannes,感谢他们在自己最困难的时候给予无条件的爱和理解。他们是他一生的挚爱,他无法想象没有他们的生活。Mats还要感谢他在Oracle内外的MySQL同事们,以及所有那些有趣、惊喜和鼓舞人心的时光:你们是这行中最能干的人。
  Lars要感谢他的女朋友Claudia,他爱她溢于言表。他还要感谢现在和以前的所有同事,他们让MySQL成为一个十分有趣的工作场所。事实上,这并不是一个场所。MySQL开发小组的分布式本质和很多专业开发者的开放胸怀是真正了不起的。MySQL社区有一种特殊的精神,使MySQL工作成为一个光荣的任务。我们共同创造着非凡。令人吃惊的是,最初的这样一小撮人,成功地创造了一个今天服务于许多财富500强公司的产品。
精彩书摘
  第1部分 高可用性和可扩展性
  数据库为应用程序提供高可用性和可扩展性的重要特性之一就是复制(Replication)。复制在数据库层创建冗余,同时产生多个数据库副本进行读扩展。第1部分讲述了怎样使用复制达到高可用性,以及如何扩展你的系统。
  第1章 引言
  为了找份新工作,Joel仔细浏览了分类广告。虽然目前他的工作很好,而且自从他上大学以来,公司就待他不薄。但是已经毕业这么多年了,他希望在职业生涯中能有更多的挑战。
  “这个看上去不错。”他边说边在一个招聘MySQL计算机专家的广告上画了个圈。他有MySQL经验,也符合这份工作的学历要求。在快速浏览了其他几个广告后,他决定打电话咨询这个MySQL的工作。大致问了几个问题之后,人力资源部经理让他两天后去面试。
  经过两天三轮的面试以后,他被引见给公司的董事长兼首席执行官Robert Summerson,进行最后一轮的技术面试。提问过程中,Summerson先生停下来参看笔记,Joel在旁边等着。到目前为止,大多是些关于信息技术的普通问题,但Joel知道关于MySQL的刁难问题还在后面。
  终于,面试官说:“Thomas先生,我对你的回答印象很深刻。我可以叫你Joel吗?”
  “可以,先生。”Joel说,这时面试官第三次看了笔记,Joel又是一阵不自在。
  “说说你对MySQL的了解吧。”Summerson先生把手放在桌子上,凝视着Joel。
  Joel开始解释他所知道的MySQL,倒腾着前一天晚上看的一大堆资料。十分钟后他把要说的都说完了。
  过了几分钟,Summerson先生站起来,并向Joel 伸出一只手。当Joel 起身与Summerson先生握手时,Summerson说:“这就是我想听的东西,Joel。这份工作是你的了。”
  “谢谢您,先生。”
  Summerson先生示意Joel随他一起走出办公室。“我带你去人力资源部,这样我们可以把你加到公司员工的工资名单上。从周一开始先试用两周可以吗?”
  Joel非常高兴,不由得笑了:“好的,先生。”
  “很好。”Summerson先生再次与Joel握手,说道:“我希望你来的时候已经做好评估我们的MySQL服务器配置的准备。我需要一份关于服务器配置和健康状况的完整报告。”
  Joel开车出停车位的时候,从之前的兴奋中冷静了下来。他并没有立即回家,而是去了最近的书店。“我需要一本MySQL的好书”,他想。
  现在,你决定要进行大规模安装和维护工作。好吧,你将会迎来一段非常有趣且有益的时光。
  与运行一个小网站相比,支撑一个大企业需要计划、远见、经验,甚至更周密的规划。作为一个大型企业的数据库管理员,你需要或者即将需要做以下的事情:
  ● 为核心业务数据提供灾难恢复计划。这个过程可能需要执行不止一次。
  ● 计划管理大量用户库,监控各节点的负载,并提供优化方案。
  ● 当用户数量急剧增长时,准备好快速横向扩展计划。
  对于上述情况,必须提前计划并准备好快速应对方案。
  并不是所有大量使用服务器的应用都是网站,因此我们使用“部署(deployment)”这个术语,而不是站点(site)或网站(website),来表示用于支持某种应用的服务器。它可能是一个网站,也可能只是一个CRM(客户关系管理)系统或者一个在线游戏。本书侧重于该系统的数据库层,但也有一些应用层和数据库层的整合例子。
  为了保证站点可响应和可用,你需要三样东西:数据备份(backup)、冗余(redundancy)和响应性(responsiveness)。备份可以将节点恢复到它崩溃之前的状态;冗余保证即使在一个或更多的节点停止提供服务的情况下,站点仍能继续运行;响应性保证系统在实际生产中可用。
  执行备份有多种方法,方法的选择取决于你的需求。你需要即时恢复到一个精确的时间点吗?如果是,就必须满足执行基于时间点恢复(point-in-time-recovery,PITR)必需的条件。你想在备份的同时保持服务器正常运行吗?如果是,就必须保证使用的备份方法不会扰乱运行中的服务器,比如在线备份。[1]
  冗余是通过硬件副本来实现的,让几个实例同时运行,并通过复制在几个机器上保存相同数据的多个可用副本。如果其中一个机器失效,可以切换到另一个拥有相同数据副本的机器。
  和复制一样,备份也在系统扩展和添加新节点方面起了重要作用。打个比方,如果使用正确,甚至可能按下按钮就可以自动添加新的从节点。