注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Inside MySQL

MySQL MariaDB InnoDB InnoSQL

 
 
 

日志

 
 
关于我

MySQL技术内幕系列作者, 网易杭州研究院MySQL技术经理, 擅长于MySQL performance tuning、troubleshooting、systems availability and scalability、capacity planning

网易考拉推荐

那些年,我经历过的MySQL 3.23 & 4.0  

2013-06-24 19:04:43|  分类: 职业生涯 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
与MySQL数据库打了10年的教导,算是生涯回顾系列吧。

本科除了来回坐3个小时的车,横穿大半个上海去见女友这件事外,对我来说最重要的事情就是接些网站开发的私活。那时做个网站还是需要点技术,不像现在博客直接可以用wordpress,电子商务网站可以直接用shopex。而且对于大学生来说,每个月能靠私活赚个千把块钱在10年前那时可以活得相当的滋润。不过我那时喜欢升级自己的电脑设备,因此钱全部用在升级电脑CPU、显卡、内存、硬盘上了。而这个习惯保持到现在就是每年我要换个3,4部手机玩玩。真怀念当年每周五放学去虬江路电子市场淘货的情景。

言归正传,喜欢上网页开发是因为进入大学时,同班的同学给我看了他做的一个动漫网站,以及他吹嘘当年他在高中时如何的牛逼,杂志都采访过,网站访问量多少多少的。就这样,学了点asp,照着书本做了个留言板,按照自己的理解做了个论坛,就大着胆子出去接活了。

做做静态页面是不怎么赚钱的,那时的行情应该是拿个400,500的样子(中间人抽完成后,实际拿到的钱)。真正赚钱的都是后面带个数据库的,起价都是5000起的。就在那时我接触到了各种数据库,当时用的最多的是access、SQL Server。不过也就是在那时开始接触了MySQL数据库。说句实话,在那时MySQL数据库在我眼里和access没有区别,甚至都不如access。所有东西都在一个黑色的命令行下操作,真不习惯。不过拿人钱财就得替人消灾。而且那时怎么说呢,基本也没什么数据,一般4,5张表就能搞定。

那个系统是某房产中介的查询系统,中介录入些自己的数据,然后查询。在当时来看项目有些大,因为钱上万了。不过开发各个环节都还算顺利。但让我一辈子都忘记不了的就是MySQL 3.23.49这个版本。通常来说交付完之后,需要负责1年的维护。不过基本上呢,几乎没什么人来找过我。但是这个系统在我们提交后遇到了各种令人头疼的问题。一开始用户反应数据不能导入,后来查了下数据库开始都是能导入的,但是在一定量后就不行了。后来发现MySQL 3.23.49这个版本的InnoDB不支持表空间的自动扩展,因此当使用量满10M后就开始不断报磁盘空间不足。残念,真的连access都不如,那时从心底里鄙视MySQL。这里可以告诉大家的是从MySQL 3.23.50这个版本就支持自动扩展,下了个新版本,问题就解决了。

再过了段时间,客户反应执行变得越来越慢。不过通过上面发生的问题,我开始尝试阅读MySQL的官方文档,并对MySQL和数据库系统有了一个大概的了解。当时将客户的缓冲池从默认的8M调到768M后,系统整体上看上去的确是快了点。不过有些查询反应还是非常慢,在询问一些大拿后,得知索引这个概念。加上索引后,客户就再也没找过我了。

就这样带着本科期间接触的私活,我毅然决然的选择了在本科毕业后进行创业。做了一个现在可以称为SNS的东东。。。不管你信不信,04年的时候我做的就是这个,如果没有放弃,那应该没有后面的facebook和开心网什么事情吧,此处省略100W字。。。

由于创业不怎么顺利,1年后受到家庭的压力,决定出去找工作。其实我想找的是开发工作,因为比较熟悉。不过面试完都没怎么反应,估计是放不下自己曾经创造的辉煌。后来经朋友介绍,问我去久游做不做MySQL DBA?久游何许公司?后听说是做网游的,心想自己本科必要做设计就是一个支持网络对战的俄罗斯方块,而且MySQL数据库字节也算接触过,就去面试了下。比较顺序的就录取了,不过现在想来那时也招不到什么MySQL的DBA吧。虽然薪水没给到心理价位,不过离家近,冲这点就可以接受了。

入职后的第一天运维总监找我谈了下,问了下我的情况(面试我的是副总监)。我跟他说了之前做的一些事情,他也比较满意。但他突然问了句:MySQL replication,你知道伐?我说:不知道。他说:就是那个复制,知道不?我说不知道。后来他就用鄙夷的口气对我说:你做了这么多项目,如果服务器挂了数据怎么办?快现在给我去看这个东西。就这样,在虚拟机里建了人生第一套MySQL replication环境,也让我感觉到运维和开发的不同点。

最早我在久游门户那边,用的是MySQL 3.23的数据库。门户有个用户中心数据库,存放着所有用户的注册信息,当时我去的时候久游的注册用户已经上亿了,数据库也有10多G的大小,在2005年那可也算是大数据。另人吃惊的是,用的竟然是MyISAM存储引擎,为了提高性能通过Merge引擎组合多张表。这导致久游有大量的重复名用户,此外每周四晚上凌晨,都要用命令对myisamchk进行修表,其实也没什么事情,就是备份,然后修表,都是通过脚本完成,但是时间真是等太久。。。不过总监都留着,我也没什么好多怨言的。这个系统性能太差,复制延迟十分严重,虽然设计使用读写分离,但是在久游那个光辉岁月中,无法承受这么大的负载。接着总监让我去研究MySQL Cluster,想用NDB Cluster引擎替换。可以说,我是最早接触Cluster的用户,当然仅限于使用。我第一个向MySQL官方提交的Bug就是关于NDB Cluster的。不过,由于那时Cluster VARCHAR都是用CHAR来存的,非常占用内存,因此数据无法全部导入到内存(当时设计的是4个数据节点,每个数据节点分配12G的内存)。虽然,我也曾力主切换成InnoDB存储引擎,但是在Oracle数据库强大品牌效应下,最终用户中心使用了Oracle数据库。不过在切成Oracle前,还将MySQL 3.23升级到了4.0。

这里有个小插曲,MySQL 4.1前VARCHAR或者CHAR(N),N表示的是字节,而不是字符,这是我在用户中心那不小心学到的一个知识,和SQL Server 2000完全不同。

门户切成Oracle后,有了专职的Oracle DBA,我就去了游戏组。那里我正式接触了MySQL 4.0,那时的完整版本号应该是4.0.24。一个劲舞团游戏那时就有200多台服务器,全我一个人来负责运维,那是真的很累。最初采用mysqlhotcopy进行每日备份+日志备份的方式。不过很快聪明的用户发觉我们设置的作业是在每日凌晨5点。因此这样可以免费购买道具。知道这是什么原因吗?

为了解决这个问题,我将之前的备份方案换为了replication。为了节约成本,slave在一台服务器上运行4个slave实例。上线后,解决了问题,老板们也很满意这个方案,终于开始有些江湖地位。

不过还是有MyISAM修表的问题,因此每周需要凌晨维护。很累,不过看着游戏的在线人数不断破纪录,心理很有满足感。那时劲舞团灰常火,街头巷尾,人人皆知。在那时,其实我们是可以做些挑战TX的事情,我们错过了,不是嘛?久游有很多小故事可以分享,你会发现有时决策比技术重要的多得太多。

之后老板们有个强烈的需求,因为和钱有关,这里不能细说。我只能说,这就是我第一个patch产生的原因。那时MySQL的slow log仅支持秒级的SQL,且最小是2秒。因此我写了第一个MySQL patch,最终也满足了老板的需求。而也就是从那时开始,我知道什么是open source,什么是geek。

未完待续。。。




  评论这张
 
阅读(1325)| 评论(9)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017