《高性能MySQL》(第3版)中文版

历经差不多一年的时间,总算让《高性能MySQL》(第3版)中文版可以和大家见面了,今天Amazon和China-pub已经开始预售,其他网站这几天也都会开始上架。预计4.10可以正式出阁了。

Amazon预售地址
China-pu预售地址
在线试读 第2章 第3章 第4章

翻译是件苦差事,初稿出来后,大规模审稿两三次,身心俱疲,大量内容在审稿过程中都被重新修改润色。直到上个周末,最后又快速的过了一次,修正了几十处不太满意的小地方。只要没有最终正式交付给出版社,每看一遍都能找出很多可以改进的地方。因此,然后已经交付付印,心中依然怀有忐忑,期望不要有误导人的错误遗留其中。

内容简介

《高性能MySQL(第3版)》是MySQL 领域的经典之作,拥有广泛的影响力。第3 版更新了大量的内容,不但涵盖了最新MySQL 5.5版本的新特性,也讲述了关于固态盘、高可扩展性设计和云计算环境下的数据库相关的新内容,原有的基准测试和性能优化部分也做了大量的扩展和补充。全书共分为16 章和6 个附录,内容涵盖MySQL 架构和历史,基准测试和性能剖析,数据库软硬件性能优化,复制、备份和恢复,高可用与高可扩展性,以及云端的MySQL 和MySQL相关工具等方面的内容。每一章都是相对独立的主题,读者可以有选择性地单独阅读。

本书不但适合数据库管理员(DBA)阅读,也适合开发人员参考学习。不管是数据库新手还是专家,相信都能从本书有所收获。

译者序

  在互联网行业,MySQL 数据库毫无疑问已经是最常用的数据库。LAMP(Linux +Apache + MySQL + PHP)甚至已经成为专有名词,也是很多中小网站建站的首选技术架构。我所在的公司淘宝网,在2003 年非典肆虐期间创立时,选择的就是LAMP 架构,当时MySQL 的版本还是4.0。但是到了2003 年底,由于业务超预期的增长,MySQL 4.0(当时用的还是MyISAM 引擎)的很多缺点在高并发大压力下暴露了出来,于是技术上开始改用商业的Oracle 数据库。随后几年Oracle 加小型机和高端存储的数据库架构支撑了淘宝网业务的爆炸式增长,数据库也从最初的两三个库增长到十几个库,并且每个库的硬件已经逐步升级到顶配,“天花板”很明显地摆在了眼前。于是在2008 年,基于PC 服务器的MySQL 数据库再次成为DBA 团队的选择,这时候MySQL 的稳定版本已经升级到5.0,并且5.1 也已经在开发中,性能和特性相对于2003 年的时候已经有了非常大的提升。淘宝网的数据库架构也逐渐从垂直拆分走向水平拆分,在大规模水平集群的架构设计中,开源的MySQL 受到的关注度越来越高,并且一年多来的实践也证明了MySQL(存储引擎主要使用的是InnoDB)在高压力下的可用性。于是从2009 年开始,后来颇受外界关注的所谓“去IOE”开始实施,经过三年多的架构改造,到2012年整个淘宝网的核心交易系统已经全部运行在基于PC 服务器的MySQL 数据库集群中,全部实例数超过2000 个。今年的“双11”大促中,MySQL 单库经受了最高达6.5 万的QPS,某个拥有32 个节点的核心集群的总QPS 则稳定在86 万以上,并且在整个大促(包括之前三年的“双11”大促)期间,数据库未发生过任何影响大促的重大故障。当然,这个结果,也得益于淘宝网整个应用架构的设计,以及这几年来革命性的闪存设备的迅猛发展。

  2008 年,淘宝DBA 团队准备从Oracle 转向MySQL 的时候,团队中的大多数人对MySQL 的了解都非常之少。当时国内技术圈对MySQL 的讨论也不多见,网上能找到的大多数中文资料基本上关注的还是如何安装,如何配置主备复制等。而MySQL 中文类的书籍,大部分还是和PHP 放在一起,作为PHP 开发中的一环来讲述的。所以当我们发现mysqlperformanceblog.com 这个相当专业的国外博客的时候,无不欣喜莫名。同时也知道了博客的作者们2008 年出版的High Performance MySQL 第二版(中文版于2010 年1 月出版),这本书被很多MySQL DBA 们奉为圭皋,书的三位主要作者Baron Schwartz、Peter Zaitsev 和Vadim Tkachenko 也在MySQL DBA 圈中耳熟能详,他们组建的Percona 公司和Percona Server 分支版本以及XtraDB 存储引擎也逐渐为国内DBA所熟知。2011 年12 月,淘宝网和O’Reilly 在北京联合举办的Velocity China 2011 技术大会上,我们有幸邀请到Percona 公司的华人专家季海东(目前已离职)来介绍MySQL 5.5 InnoDB/XtraDB 的性能优化和诊断方法。在季海东先生的引荐下,我们也和Peter 通过Skype 电话会议有过沟通,介绍了MySQL 在淘宝的应用情况,我们对MySQL 一些特性的需求,以及对MySQL 做的一些patch,并随后保持了密切的邮件联系。有了这些铺垫,我们对于在生产系统中采用Percona Server 5.5 也有了更大的信心,如今已有超过1000个Percona Server 5.5 的实例在线上运行。所以今年上半年电子工业出版社的张春雨(侠少)编辑找到我来翻译本书的第三版的时候,很是激动,一口应承。

  考虑到这么经典的书应该尽快地和读者见面,故此我邀请了团队中的MySQL 专家周振兴(花名:苏普)、彭立勋、翟卫祥(花名:印风)、刘辉(花名:希羽)一起来翻译。其中,我负责前、推荐序和第1、2、3 章,周振兴负责第5、6、7 章,彭立勋负责第4、8、9、14 章,翟卫祥负责第10、11、12、13 章,刘辉负责第15、16 章和附录部分,最后由我负责统稿。所以毫无疑问,这本书是团队合作的结晶。虽然我们满怀激情,但由于都是第一次参与翻译技术书籍,确实对困难有些预估不足,加上下半年为了准备“双11”等各种大促,需要在DBA 团队满负荷的工作间隙挤出个人时间,初稿出来后,由于每个人翻译风格不太一致,几次审稿修订,也让本书的编辑李云静和白涛吃了不少苦头,在此对大家表示深深的感谢,是大家不懈的努力,才使得本书能够顺利地和读者见面。但书中肯定还存在不少问题,也恳请读者不吝指出,欢迎大家和我的新浪微博http://weibo.com/NinGoo 进行互动。

  同时还要感谢本书第二版的译者们,他们娴熟的语言技巧给了我们很多的参考。也要感谢帮助审稿的同事们,包括但并不仅限于张新铭(花名:俊达)、张瑞(花名:张瑞)、吴学章(花名:维西)等,彭立勋甚至还发动了他女朋友加入到审稿工作中,在此一并表示感谢。当然,最后还要感谢我的妻子Lalla,在我占用了大量周末时间的时候能够给予支持,并承担了全部的家务,让我以译书为借口毫无心理负担地偷懒。

   宁海元(花名:江枫)
   2013 年3 月 于余杭

Velocity China 2010: 技术的盛宴

这两天在北京参加Velocity China 2010,虽然时间只有短短的两天,很多主题也是关于web前端优化,听的并不是特别懂,但整个大会的技术氛围,嘉宾分享的主题,都让人感觉不虚此行。

有Steve Souders和Douglas Crockford两位大神坐镇,web优化方面自然是不需要再有过多的渲染。但是说实话,英文的演讲对于我来说听起来还是有点费力,能够理解的东西有限。倒是Facebook,这次来的两位华人科学家,蒋长浩(Changhao Jiang)和魏小亮(David Wei),带来的两个topic,以中文演讲,让我这个web优化的文外汉也听得似懂非懂,大呼过瘾。

蒋长浩的《Facebook网站的Ajax化、缓存和流水线》,魏小亮的《Facebook: 一个可持续发展的高性能网站》和《静态网页资源的管理和优化》,都是值得慢慢品尝的主题,明年估计国内很多公司都会开始尝试bigpipe了吧。

其他印象比较深的还有腾讯的两个session。以前很少听到腾讯比较深入的技术话题,这次则比较给力。谢明博士的《腾讯相册存储系统》,分享了腾讯的一个分布式文件系统,囧的是名字也是TFS,看来要抢注商标了,哈哈。QQ空间技术总监黄希彤的《另辟蹊径——腾讯web应用的优化新思路》,则讲述了流量预加载,不同ISP之间流量控制,以及无障碍用户体验的话题,引入思科。另外百度刘斌的《百度分布式数据库》对于SSD的实践,土豆吴岷对于视频网站自建CDN的分享,都是实打实的干货。唯一遗憾的是,下午的会议分为三个分会场,分身乏术,错过了一些精彩主题,只能等几天之后的ppt和视频了。

今天早上被同事临时抓壮丁为大会的新浪微博帐号做了一些业余的简短直播,以一种不同的角色参与这场技术盛宴,也算有了一种不同的体验。接下来将在北京办公室工作三天,期待idata forum和oow的到来,呼新朋唤旧友,共享技术,不亦乐乎。

1111的疯狂

1111光棍节,已经过去两天了,这疯狂的一天,只有想不到,没有做不到。

淘宝商城的广告早就开始铺天盖地,虽然所有人都知道这一天会有新高,但没有人敢说有这么高:

淘宝商城单日交易额9.36亿,每秒超过2万元交易;2家店铺超2千万;11家店铺超千万;20家店铺过500万;总共181家店铺过百万。

之前我们乐观估计,2倍的业务上涨是可能的,传递到系统,50%的余量应该就足以支撑。回顾梳理我们的系统,今年以来的几个大的改造项目完成以后,50%的余量都不成问题,并且所有的数据库系统都已经拥有超过100%的余量来应对年底的高峰。

但1111当晚0点的iPad秒杀过后,一看数据库指标还是让我心惊,平时已经是低峰时段,秒杀瞬间几个数据库的指标都直冲平时最高峰,不由得为白天和当晚流量高峰有些担心。9点上班,我们技术保障部和核心交易系统几个人临时坐到振飞办公室一起联合办公,为一整天的疯狂准备应急措施。CDN的流量在八点多就已经率先以超过80度的仰角拉升,很快就超过了我们平时的流量高峰,这一下完全超过我们的预期,我们还是低估了广大人们群众的购买力,于是迅速分析如何通过一些措施来优化,扩容以及降级部分应用,来为CDN保驾护航。其中有一些真是“艰难的决定”,所幸直到最后,这些艰难的决定并没有做出。

数据库的指标也在不断攀升,不过我们的商品库,用户库,交易库等核心交易流程相关的库在10月份之前都已经完成了水平拆分和扩容,在这波惊涛骇浪中情绪相当稳定。虽然有一个我们之前预计有100%余量的库在最后超过了100%的压力,不过我们在采取几个轻量级的降级措施之后,也是平安度过。剩下的时间,我们就一边盯着交易监控曲线快速上涨,一边盯着秒杀的整点时刻,这真是一种心惊肉跳的幸福。

七公说,淘宝的技术这次给力了。是的,我们顶住了,10倍的疯狂啊,支付宝也顶住了,旺旺也顶住了,各大银行,虽小有波折,最终也顶住了。这一天,注定将成为电子商务的一个里程碑,这一天,注定将成为淘宝技术的一个里程碑,这一天,我们有幸见证,这一天,我们有幸亲历,这一天,值得记录下来,慢慢回味。

调节VirtualBox中Ubuntu虚拟机的分辨率

准备将工作电脑环境迁移到Linux,先在虚拟机中适应,之前在x200中使用vmware,每次启动虚拟机,电脑都要假死十几分钟才能反映过来,于是改用轻量级的VirtualBox3.2.10(又一款带Oracle标的东东,Oracle越来越无处不在了),下载Ubuntu10.10,很快安装搞定。不过头疼和悲剧的是,旺旺还没有Linux版本。。。

不过进Ubuntu桌面后,屏幕分辨率只能在800×600和640×480之间切换,刷新频率也是很奇怪的61HZ。Google了下发现是需要和VMWareTool一样需要安装一个虚拟机的辅助工具。先在“设备”->“分配光驱”选中VBoxGuestAdditions.iso,然后运行其中的安装程序或者脚本:

ningoo@ningoo-VirtualBox:~$ sudo sh /media/VBOXADDITIONS_3.2.10_66523/VBoxLinuxAdditions-x86.run 
[sudo] password for ningoo: 
Verifying archive integrity... All good.
Uncompressing VirtualBox 3.2.10 Guest Additions for Linux........
VirtualBox Guest Additions installer
Uninstalling old VirtualBox DKMS kernel modules ...done.
Building the VirtualBox Guest Additions kernel modules
Building the main Guest Additions module ...done.
Building the shared folder support module ...done.
Doing non-kernel setup of the Guest Additions ...done.
Starting the VirtualBox Guest Additions ...done.
Installing the Window System drivers
Installing X.Org Server 1.9 modules ...done.
Setting up the Window System to use the Guest Additions ...done.
You may need to restart the hal service and the Window System (or just restart
the guest system) to enable the Guest Additions.

Installing graphics libraries and desktop services components ...done.

安装完重启,VirtualBox就能根据是否全屏以及物理主机的分辨率等情况自动支持相应的分辨率了。话说Ubuntu用起来确实太爽了,尤其是碰到需要安装一些东西到时候:

ningoo@ningoo-VirtualBox:~$ opreport
程序“opreport”尚未安装。  您可以使用以下命令安装:
sudo apt-get install oprofile
ningoo@ningoo-VirtualBox:~$ sudo apt-get install oprofile
[sudo] password for ningoo: 
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
将会安装下列额外的软件包:
  libopagent1
建议安装的软件包:
  oprofile-gui
下列【新】软件包将被安装:
  libopagent1 oprofile
升级了 0 个软件包,新安装了 2 个软件包,要卸载 0 个软件包,有 101 个软件包未被升级。
需要下载 3,281kB 的软件包。
解压缩后会消耗掉 9,105kB 的额外空间。
您希望继续执行吗?[Y/n]y
获取:1 http://cn.archive.ubuntu.com/ubuntu/ maverick/universe 
libopagent1 i386 0.9.6-1.1ubuntu1 [21.5kB]
获取:2 http://cn.archive.ubuntu.com/ubuntu/ maverick/universe 
oprofile i386 0.9.6-1.1ubuntu1 [3,260kB]
下载 3,281kB,耗时 59秒 (54.8kB/s)                                             
选中了曾被取消选择的软件包 libopagent1。
(正在读取数据库 ... 系统当前共安装有 122744 个文件和目录。)
正在解压缩 libopagent1 (从 .../libopagent1_0.9.6-1.1ubuntu1_i386.deb) ...
选中了曾被取消选择的软件包 oprofile。
正在解压缩 oprofile (从 .../oprofile_0.9.6-1.1ubuntu1_i386.deb) ...
正在处理用于 doc-base 的触发器...
Processing 1 added doc-base file(s)...
Registering documents with scrollkeeper...
正在处理用于 man-db 的触发器...
正在设置 libopagent1 (0.9.6-1.1ubuntu1) ...
正在设置 oprofile (0.9.6-1.1ubuntu1) ...
正在处理用于 libc-bin 的触发器...
ldconfig deferred processing now taking place

无觅相关文章插件,快速提升流量