高性能MySQL
在互联网行业,MySQL数据库毫无疑问已经是最常用的数据库。LAMP(Linux+Apache + MySQL +PHP)甚至已经成为专有名词,也是很多中小网站建站的首选技术架构。我所在的公司淘宝网,在2003年非典肆虐期间创立时,选择的就是LAMP架构,当时 MySOL的版本还是4.0。但是到了2003年底,由于业务超预期的增长,MySOL4.0(当时用的还是 MyISAM引擎)的很多缺点在高并发大压力下暴露了出来,于是技术上开始改用商业的 Oracle 数据库。随后几年 Oracle 加小型机和高端存储的数据库架构支撑了淘宝网业务的爆炸式增长,数据库也从最初的两三个库增长到十几个库,并且每个库的硬件已经逐步升级到顶配,“天花板”很明显地摆在了眼前。于是在 2008年,基于 PC服务器的 MySQL数据库再次成为DBA 团队的选择,这时候MySQL的稳定版本已经升级到5.0,并且5.1也已经在开发中,性能和特性相对于2003年的时候已经有了非常大的提升。淘宝网的数据库架构也逐渐从垂直拆分走向水平拆分,在大规模水平集群的架构设计中,开源的 MySOL受到的关注度越来越高,并且一年多来的实践也证明了MySQL(存储引擎主要使用的是InnoDB)在高压力下的可用性。于是从2009年开始,后来颇受外界关注的所谓“去IOE”开始实施,经过三年多的架构改造,到2012年整个淘宝网的核心交易系统已经全部运行在基于PC服务器的MySQL数据库集群中全部实例数超过 2000个。今年的“双11”大促中,MySQL单库经受了最高达6.5万的OPS,某个拥有 32个节点的核心集群的总OPS则稳定在86万以上,并且在整个大促(包括之前三年的“双 11”大促)期间,数据未发生过任何影响大促的重大故障。当然,这个结果,也得益于淘宝网整个应用架构的设计,以及这几年来革命性的闪存设备的迅猛发展。
2008年,淘宝DBA团队准备从Oracle转向MySOL的时候,团队中的大多数人对MySQL的了解都非常之少。当时国内技术圈对MySOL的讨论也不多见,网上能找到的大多数中文资料基本上关注的还是如何安装,如何配置主备复制等。而MySQL中文类的书籍,大部分还是和PHP放在一起,作为PHP开发中的一环来讲述的。所以当我们发现 mysqlperformanceblog.com这个相当专业的国外博客的时候,无不欣喜莫名。同时也知道了博客的作者们2008年出版的HighPerformanceMySQL第二版(中文版于2010年1月出版),这本书被很多MySQLDBA们奉为圭桌,书的三位主要作者BaronSchwartz、Peter Zaitsev和 Vadim Tkachenko 也在 MySQL DBA 圈中耳熟能详,他们组建的Percona公司和Percona Server分支版本以及 XtraDB 存储引擎也逐渐为国内 DBA所熟知。2011年12月,淘宝网和O'Reilly在北京联合举办的Velocity China 2011 技术大会上,我们有幸邀请到Percona公司的华人专家季海东(目前已离职)来介绍 MySOL5.5InnoDB/XtraDB的性能优化和诊断方法。在季海东先生的引荐下,我们也和Peter通过Skype 电话会议有过沟通,介绍了MySQL在淘宝的应用情况,我们对MySOL一些特性的需求,以及对 MySQL 做的一些 patch,并随后保持了密切的邮件联系。有了这些铺垫我们对于在生产系统中采用PerconaServer5.5也有了更大的信心,如今已有超过1000个Percona Server 5.5的实例在线上运行。所以今年上半年电子工业出版社的张春雨(侠少)编辑找到我来翻译本书的第三版的时候,很是激动,一口应承。
考虑到这么经典的书应该尽快地和读者见面,故此我邀请了团队中的MySQL专家周振兴(花名:苏普)、彭立勋、翟卫祥(花名:印风)、刘辉(花名:希羽)一起来翻译其中,我负责前、推荐序和第1、2、3章,周振兴负责第5、6、7章,彭立勋负责第 48、9、14章,翟卫祥负责第10、11、12、13 章,刘辉负责第15、16章和附录部分,最后由我负责统稿。所以毫无疑问,这本书是团队合作的结晶。虽然我们满怀激情,但由于都是第一次参与翻译技术书籍,确实对困难有些预估不足,加上下半年为了准备“双11”等各种大促,需要在 DBA团队满负荷的工作间隙挤出个人时间,初稿出来后,由于每个人翻译风格不太一致,几次审稿修订,也让本书的编辑李云静和自涛吃了不少苦头,在此对大家表示深深的感谢,是大家不懈的努力,才使得本书能够顺利地和读者见面。但书中肯定还存在不少问题,恳请读者不吝指出,欢迎大家和我的新浪微博http://weibo.com/NinGoo 进行互动。