高可用MySQL:构建健壮的数据中心_mysql

高可用MySQL:构建健壮的数据中心 

(美)贝尔(Bell,C.),(美)肯德尔(Kindahl,M.),(美)塞尔曼

Thalmann,L.)著

宁青,唐李洋,诸云萍译

ISBN 978-7-121-14407-3  

201110月出版

定价:98.00

16

604

本书是“MySQL High Availability”的中文翻译版,主要讲解真实环境下如何使用MySQL 的复制、集群和监控特性,揭示MySQL 可靠性和高可用性的方方面面。本书由MySQL 开发团队亲自执笔,定位于解决MySQL 数据库的常见应用瓶颈,在保持MySQL 的持续可用性的前提下,挖潜各种提高性能的解决方案。本书分为三个部分。第一部分讲述MySQL 复制,包括高可用性和横向扩展,第二部分介绍构建健壮的数据中心时监控和性能方面的问题,第三部分给出其他MySQL 相关内容,包括云计算和MySQL 集群。

本书读者对象是MySQL 专业人士。假设读者已拥有SQLMySQL 管理和操作系统的基础背景知识。书中介绍一些关于复制、灾难恢复、系统监控及其他高可用性主题的背景信息。相关有用的背景知识请参考其他书籍的第1 章。对于相关专业的师生,本书也有很高的参考价值。

译者序

MySQL 是个非常优秀的开源数据库,也是装机量最多的数据之一。少数几台MySQL人工就可以管理了,但当服务器几十、上百台的时候,如果光靠人力维护,这个维护成本就相当高了。如何提高MySQL 服务器的可用性这个问题摆在了MySQL DBA 和系统架构师们面前。你手上这本书中讲了些方法和工具,能够帮助你解决这些问题中的大部分。

本书着重介绍了MySQL 复制,监控MySQL 和搭建MySQL 高可用集群。

1MySQL 复制技术简单来说就是将Master 的数据同步到Slave 上。通过使用MySQL复制技术可以提高数据库系统的可用性, 可以实现数据的异地备份, 可以实现服务器负载均衡。本书第一部分将从原理到应用逐步介绍MySQL 复制技术。

2.没有监控就像《新约》描述的那样那在黑暗中行走的,不知往何处去,如何在发生问题前就能得到预示,监控就是我们前面的那盏灯。本书第二部分将介绍各种需要监控的地方以及如何监控它们,并如何解决复制中出现的问题。在第二部分最后将介绍下MySQL 企业级的监控工具。

3.云计算这个概念现在被炒得越来越火,让人云里雾里。什么是云,MySQL 能在云中干嘛,MySQL Cluster 又是什么,如何搭建MySQL 高可用集群用将会在第三部分做出介绍。

翻译本书纯属意外,去年9 月间朱少民老师问我们数据团队有没有兴趣翻译一本关注于MySQL 高可用性书籍,当时恰逢我们在一个名为Athena 的项目里,使用的是CassandraMySQL 作为底层存储部分,对这本书非常感兴趣,于是我们一口答应了。在这里向朱老师说声感谢。有兴趣的同学可以关注一下他的微博http://weibo.com/kerryzhu

几个月来大家都在忙着翻译和本职工作的同时,李洋同学准备去美国留学,诸云萍刚刚怀上了宝宝,而我这时候则忙着毕业、找工作、筹备婚礼,并准备迎接我们家的新成员。虽然有这些外在的干扰,但我们也是战战兢兢地很努力地去翻译本书,主要是怕没翻好被读者骂。因此看完这本书仅仅只是开始,个人微博地址是http://weibo.com/ninqing,如果你对这本书中的内容有所疑问,欢迎在上面询问和拍砖,我会尽力满足各位的愿望。

本书由宁青、唐李洋、诸云萍三人合作翻译完成。同时感谢张春雨、高洪霞、刘皎、丁曼几位编辑的辛苦工作,是你们把这本书呈现给读者,在此十分感谢你们!

同样要感谢我的朋友们:Grant、黄波、高飞、谢恒,等等,有你们的帮助才让我们在技术的道路上得到了锻炼。还要感谢我的爱人王新,还有女儿宁悦晗,你太淘气了。

宁青

2011 07 30

写于西子湖畔

关于复制(replication)的研究很多,但其中的大多数研究成果都没有得到应用。相反,MySQL 复制已经被广泛部署,但其原理并不为大多数人所知。本书将改变这种状况。本书中介绍的内容比较适合以下人群:愿意阅读大量的源代码,而且在生产环境中花很多时间进行调试,能够在深夜会议中探讨这些内容的人。

复制允许在出现不可避免的故障的情况下提供高可用的数据服务。故障的原因很多,包括磁盘、服务器或数据中心的损耗。即使所有硬件都是完美无缺且完全冗余的,还有人为因素的影响。例如,数据库表可能被误删,应用程序可能写入了不正确的数据等,总会有偶然故障发生。但通过合理的准备工作,可以保证从故障中恢复,关键是冗余和备份。MySQL 复制支持冗余和备份。

MySQL 的复制并不仅限于支持故障恢复,它还频繁用于读操作的横向扩展(scaleout)。MySQL 可以实现大量服务器的高效复制。对于那些读频繁的应用,在商用硬件上支持大量查询是一个低成本的有效策略。

MySQL 复制还有其他有用的应用。在线DDL 是关系型数据库管理系统中非常复杂的一个特性。MySQL 不支持在线DDL,但通过使用复制,往往可以足够好地部分实现它。如果有创意,还可以使用复制做更多的事情。

复制是使得MySQL 如此广泛流行的特性之一,它允许将流行的MySQL 原型转换为成功的商业关键部署。复制主张简单和便于使用,这一点和MySQL 十分相似。然而,在生产环境中运行往往不够完美。本书解释了成功使用MySQL 复制所必须知道的内容,帮助读者理解复制是怎样实现的,哪些地方可能出错,怎样防止问题的出现,以及怎样在问题出现的时候解决它们——尽管你已经很努力地避免这些问题。

MySQL 复制还在继续完善中。与故障一样,变化总是存在的。MySQL 需要不断应对这些变化,使得复制更高效、更健壮、更有趣。例如,基于行的复制(Row-basedreplication)是MySQL 5.1 中的新特性。

尽管MySQL 部署形态各异,规模各不相同,我最关心的还是互联网应用的数据服务。MySQL 到分布式存储系统(如HBase Hadoop)复制的可能性也使我兴奋不已。这样MySQL 就可以更好地共享数据中心。

我曾经在Facebook Google 的团队支持重要的MySQL 部署,有机会、问题和时间学习这本书中所覆盖的很多东西。本书的作者们同样是MySQL 复制的专家,通过阅读这本书读者可以分享他们的专业知识。

——Mark Callaghan

本书的作者们一直都在MySQL 领域努力且工作了多年。Charles Bell 是复制和备份领域的高级开发人员,其兴趣包括MySQL、数据库理论、软件工程和敏捷开发实践等。Mats Kindahl 博士是复制的主要开发人员,同时也是MySQL Backup Replication 小组的成员。他是MySQL 基于行的复制的主架构师和实现者,还开发了MySQL 的单元测试框架。Lars Thalmann 博士是MySQL Backup Replication 小组的开发经理和技术领导,设计了很多复制和备份的特性,主要从事MySQL 集群、复制和备份技术的开发工作。

为了填补很多MySQL 书籍的缺口,我们写了这本书。关于MySQL 有很多出色的书籍,但很少集中讲述它的高级特性和复制,诸如高可用性、可靠性和可维护性。本书将涵盖所有这些主题,当然还有更多内容。

我们希望阅读更加有趣,故添加了一个遭遇老板提出种种要求的MySQL 专家的小故事。在该故事中,你将认识Joel Thomas,最近他决定在一家刚开始使用MySQL 的公司工作。从中你可以看到Joel 学习MySQL 的方式,以及如何处理MySQL 专家所面临的一些最棘手的问题。希望你会觉得这部分内容很有趣。

读者对象

本书读者对象是MySQL 专业人士。我们假设读者已拥有SQLMySQL 管理和操作系统的基础背景知识。我们会试着介绍一些关于复制、灾难恢复、系统监控及其他高可用性主题的背景信息。相关有用的背景知识请参考其他书籍的第1 章。

本书的组织结构

本书分为三个部分。第一部分讲述MySQL 复制,包括高可用性和横向扩展,第二部分介绍构建健壮的数据中心时监控和性能方面的问题,第三部分给出其他MySQL 相关内容,包括云计算和MySQL 集群。

第一部分 复制

1 引言 解释了本书的价值,并提供了阅读的情境。

2 MySQL 复制原理 讨论了建立基本复制的手动和自动过程。

3 二进制日志 解释了与复制、灾难恢复、故障排除和其他管理任务相关的关键文件。第4 复制的高可用性 给出了服务器故障恢复的多种方法,包括自动化脚本的使用。

5 MySQL 复制的横向扩展 介绍了提高响应时间和处理大数据集的多种技术和方法。第6 高级复制 描述了很多主题,包括安全数据传输和基于行的复制。

第二部分 监控和灾难恢复

7 监控入门 给出了必须注意的主要操作系统参数,以及监控它们的工具。

8 MySQL 监控 介绍了几种数据库行为和性能的监控工具。

9 存储引擎监控 更加详细地解释了需要监控的参数,重点描述MyISAM 或者InnoDB 相关的问题。

10 复制监控 详细描述了如何跟踪主节点和从节点。

11 复制的故障排除 介绍了如何处理故障、重启、崩溃及其他意外事故。

12 保护你的投资 解释了备份和灾难恢复技术的使用。

13 MySQL 企业版 介绍了用于简化上述很多任务的工具套件。

第三部分 高可用性环境第

14 云计算解决方案 介绍了最流行的云计算服务即亚马逊的AWS,并提供了在这种虚拟化环境中使用MySQL 的技术。

15 MySQL 集群 展示了如何使用MySQL 集群实现高可用性。

附录A 复制技巧和窍门 提供了某些情况下很有用的过程包。