2010年03月19日

FaceBook开始关注MySQL5.1了

作者:吴炳锡 来源:http://www.mysqlsupport.cn/ 联系方式: wubingxi#gmail.com 转载请注:译者和出处,并且不能用于商业用途,违者必究.

FaceBook开始关注MySQL5.1了 ,说明MySQL5.1开始靠谱了。

MySQL-5.1面世将近一年多的时间了,在2009年大家对MySQL-5.1试用,放弃,最终的无耐。但MySQL总的还是在进步的,差不多到MySQL-5.1.41基本上处于稳定阶段了。到了MySQL-5.1.44好象更是稳定了,本人觉的可以试着用到生产环境了。在Mail列表中,看到好多人对MySQL5-1.44和MySQL-5.1.45有了很高的信心。

FaceBook的关注毕将会把自已对MySQL的改善也会加入到他使用的版本,Facebook将会使用MySQL-5.1.44做会一个基本版本进行Patch。项目网址:https://launchpad.net/mysqlatfacebook/51

如果对MySQL5.1比较关注,也请保持对这个项目关注。

2009年12月12日

对MySQL 5.1.X使用请慎重

 作者:吴炳锡 来源:http://www.mysqlsupport.cn/ 联系方式: wubingxi#gmail.com 转载请注明作/译者和出处,并且不能用于商业用途,违者必究。
 
      近段一直在一个项目中恶战,所以对于Blog更新慢了一点。该项目中使用了MySQL 5.1.X,使用这个版本是在我加入这个项目前就决定的。该项目基本上可以达到每秒3W的QPS(大多是基于主建的等于逻辑读写)记录都是比较长的。
近段遇到一些问题列举:
  使用MySQL-5.1.31 进行数据迁移,从SQL SERVER到MySQL迁移,共享表空间,每表一个线程,一次从SQL SERVER读取20条记录写入MySQL,迁移完毕后一个大表巨然是只能读不能写了
关闭连接池程序,保持只有一个连接进入MySQL但对那个大表也无法进行update操作,可以进行insert操作。该表有差不多2亿的数据,当时那个无语真的没法说。最终解决方法,把该表
dump了出来,又导回去可以更新。
  最新的业务上线后开着swap,没过几天就出现swap占用明显,DB反应慢的不能忍受。最终解决方法:禁用了swap分区。
  因为truncate table不能被复制及一系列问题,最终升级到mysql-5.1.31sp1(无语一个垃圾升级版本),我的意思当时升级到MySQL-5.1.37。这样就引出了另一外问题:Sort aborted,
内存溢出。以至于出现了几次严重的内存使用完毕后MySQLD被KILL掉,MySQLD进程重启,数据文件恢复造成Down机时间过长。巨汗的一次。
  痛中思痛,最终把MySQL-5.1.41,现在看来内存正常了。使用中出现了一个更可怕的问题,对一个dump出来后,导入时对该表show create table不显示结果,按ctrl+c,MySQLD就Crash,巨汗。
  万恶的MySQL-5.1.X,准备升级到MySQL-5.1.x的同学,还是我多思考一下吧。

2009年11月13日

一个新的MySQL分支--MariaDB

作者:吴炳锡 来源:http://www.mysqlsupport.cn/ 联系方式: wubingxi#gmail.com 转载请注明作/译者和出处,并且不能用于商业用途,违者必究。

  MySQL创始人韦德纳斯(Michael Widenius)从MySQL被Sun收购后,就去了MariaDB工作。从MariaDB的介绍上总体来看应该也不错的。以后也要多关注一下这个数据库了。

  可以关注的:
innodb-plugin
PBXT storage engine
XtraDB storage engine
Maria storage engine

2009年11月7日

推荐使用innodb_plugin

作者:吴炳锡 来源:http://www.mysqlsupport.cn/ 联系方式: wubingxi#gmail.com 转载请注明作/译者和出处,并且不能用于商业用途,违者必究。
innodb-plugin 出现差不多有一年了。从功能上性能上都表现的不错。自MySQL-5.1.38后发行的版本中已包括了该功能。(推荐使用MySQL-5.1.40)

http://dev.mysql.com/doc/refman/5.1/en/innodb.html

http://planet.mysql.com/entry/?id=20926

该版本的特性:

http://www.innodb.com/wp/products/innodb_plugin/license/third-party-contributions-in-innodb-plugin-1-0-4/

Multiple Background Threads
==把后面进程的IO进程,细化并可以分配成多个.以前Linux下该IO只能是四个.现在可以最大调到64个.

Master Thread I/O Capacity Tuning
==内部IO限制.我们现在用的Innoddb内部有同时可以操作100个IO限制.这个限制对于现在高端的磁盘显的太少了

Asynchronous Read Ahead
==这是 Google and Percona 的一个Patch对增强MySQL的IO性能及Buffer中读取速度有所改善.

Group Commit
==该功能是MySQL一直支持的,但支持的不够好.在5.1.38的innodb-plugin-1.0.4中的支持是使用的percona的支持.把该性能支持的更好.

Adaptive Flushing
==自适应的刷新脏页,该功能也是来自percona的支持.对于Innodb checkpoint在原来的情况下在某种条件的触发下要进行一个checkpoint因为某些机制,有时并不能很好的完成,
出现系统的抖动现象.如:文件的锁问题,文件系统fsync一大片更新数据,对系统io冲击较大。若分隔成多个小数据fsync,能够减少对读的影响。同时结合mysql代码,发现mysql保证两次fsync之间至少有20ms的sleep,这样的话,若将一次fsync变成多次小数据操作,应该能够减少慢查询的比例。(从目前来看,杜绝是不太可能的)。这也是为什么近几年来percona,innodb的barrauda在推独表空间的一个原因吧.
对于该Patch的引入,它利用10%的IO去做checkpoint从而减少对系统的压力.

Additional Patches
==这部分是Sun的支持.加入了对Solaris的一些特别支持.
对我们有用的是: 对innodb spin loops做了更好的处理.增大了spin的值.
对DBA增加一个诱人的地方:
创建非cluster index时,不用是在Copy表这样一个复杂过程了.
另外:
加入了一种新的Innodb文件格式:barracuda ,据说该文件格式对性能提升很高.但要求使用独立表空间.

http://www.mysqlperformanceblog.com/2008/04/23/real-life-use-case-for-barracuda-innodb-file-format/

该功能需要加入innodb_file_format=barracuda ,并且需要在配置中文件中声明:innodb_file_per_table
所以需要使用该功能的朋友建义Dump出来数据后在[mysqld]中设置这两个参数后在导入:

[mysqld]
ignore_builtin_innodb
plugin_dir=/usr/local/mysql/lib/plugin
plugin-load=innodb=ha_innodb_plugin.so;innodb_trx=ha_innodb_plugin.so;innodb_locks=ha_innodb_plugin.so;innodb_cmp=ha_innodb_plugin.so;innodb_cmp_reset=ha_innodb_plugin.so;innodb_cmpmem=ha_innodb_plugin.so;innodb_cmpmem_reset=ha_innodb_plugin.so
innodb_file_format=barracuda
innodb_file_per_table

Innodb plugin是一个比较让人企待的版本.其实这些功能基本上都被pernoca公司在mysql5.0中实现了.而且我以前使用相关的版本后都是表现良好的.
所以我觉的对于MySQL5.1.38可以导一份基于独立表空间的数据做一个对比.
文中提及的percona: http://www.percona.com/
Google: http://code.google.com/p/google-mysql-tools/wiki/Mysql5Patches
更多关于innodb 的信息可以参考:http://www.innodb.com

2009年10月16日

国内开源软件下载点

开源软件在国内也是越来越来的支持下载了,国内的两大网站已经开始提供了一些软件的下载:

http://mirrors.163.com/

http://mirrors.sohu.com/

感谢两个公司对国内开源的支持。

希望下一步有一个Perl的cpan的镜象。

2009年05月21日

Sun的CxO大会 归来

     今天上午去参加了Sun的CxO大会,本想得到一些Sun关于MySQL发展方向的消息,但并没得到确切的消息。MySQL的Richard Mason(Sun公司MySQL全球销售副总裁)只是透漏Oracle收购了Sun后MySQL也可能做为Oracle的一个产品去运营。

     在大会上Richard更多的强调MySQL的策略就是攻占中端市场,网站市场。这点我是认同的。并切相信MySQL在这方面做的很棒。此次大会也可以说是Sun决心在中国建立一个好的销售渠道的一个表现。顺便支持一下Sun的行为。

     希望MySQL发展的更好吧。也期待5.4的Release。

     此次大会也一点稳人心的感觉。MySQL现在虽然属于Oracle了,大家不用担心他会被灭掉。MySQL还会永远的活下去。

2009年05月13日

MySQL Cluster 7.0 新特性

作者:吴炳锡 来源:http://www.mysqlsupport.cn/ 联系方式: wubingxi#gmail.com 转载请注明作/译者和出处,并且不能用于商业用途,违者必究。

1. 开始支持在Windows建立MySQL Cluster(不是稳定功能,不过有兴趣的可以测试).
2. 在线添加节点或节点组
3. 数据节点开始支持多线程。这样对于CPU的利用就更加有效了。
4. 配置文件缓存功能,减少对配置文件的重复读次数。
5. 快照备份(以前也有功能)
6. 动态结果集缓存分配
7. 加强了ddl语句的支持(新功能)减少运行ddl语句时,节点失败。
8. 在集群复制上支持ipv6.
9. 可以从备份集恢复特定的表或是特定的数据库。
10. 对于数据文件系统支持进行了加强。
11. 自动创建日值组和表空间
12. 改良了内部的消息管理机制(这是一个新特性,感觉应会对性能提高挺大的)

总的来说MySQL Cluster 7.0 改动挺多,值再去测试一次。另外在实际应用中MySQL Cluster 还有着不可取代的
位置。虽然有很人报怨内部网络通信慢之类的,但随着更多交易方面的应用,对事务要求的严格,MySQL Cluster的优势
就慢慢提现出来了。

参考:

http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-changes-5-1-ndb-7-0.html