作者:谭俊青@MySQL实验室(转载请保留该行及作者信息和原文链接,谢谢!)
NoSQL最近很火,因为它在K/V存储的优异性能表现,催生出很多产品,比如:Memcached、MongoDB、Redis、TT等等. 然而他们或多或少都有自己的某些缺陷,比如存在单点、数据安全持久化等等。然而这些随着新的技术和思路的在MySQL上面产品化,这些东西会被慢慢取代,MySQL重回她的王者地位。在这之前我说过Memcached会被MySQL+handler socket取代,现在情况有所变化,为了兼容现有大量的Memcache客户端,将handler socket用memcached替换掉,就出现了如下构架:

MySQL+InnoDB with Memcached
MySQL+InnoDB with Memcached 具有大量的优势: … 【阅读全文·MySQL实验室】
MySQL Cluster使用不那么广泛,除了自身构架因素、适用的业务有限之外,另一个重要的原因是其安装配置管理相对复杂繁琐,总共有几十个操作步骤,需要DBA花费几个小时才能搭建或完成升级。MySQL Cluster 7.1推出了MySQL Cluster Manager,MySQL Cluster的安装、升级管理等操作,将DBA原本需要几个小时的工作,节省到通过若干个命令即可完成,还能避免操作的失误。MySQL Cluster Manager的基本工作原理如下图所示:

在MySQL Cluster将要被部署的机器上安装好 MySQL Cluster Manager Agent之后,通过现有的mysql客户端即可连接操作使用。可以连接任何一台机器上的Agent,它们之间能相互通信。Agent默认连接端口为:1862,即可如此连接: mysql -h hostname -u username -p -P 1862
连接之后即可通过Agent对集群系统进行交互、管理。
… 【阅读全文·MySQL实验室】
在这里给好耶参加MySQL性能调优培训的朋友们致歉。继上上周培训课程结束之后,因个人原因,未能继续给大家上课,还让大家在周六等了那么长时间,向大家说声:“对不起”。
–
PS1: 陆续有朋友问及MySQL高可用方案,这里提下:当前MySQL高可用方案自动化程度和靠谱的算是DRBD和Semi-sync-replication。在此基础上扩展slave做负载均衡(比如lvs)需要注意,另外需要monitor监控Slave状态,及时将失效节点从pool中剔除。
PS2: 这次有个项目,因为开发过程中经历了大量的需求变更,开发人员为了方便,采用了大量试图,导致后续出现严重问题(SQL查询时间过长),而在此基础之上做SQL调优能发挥的地方有限,所以开发的同志们注意了,在涉及到web开发,特别是对页面响应时间要求很高的时候,避免复杂join操作,适当添加冗余字段。救急办法:将涉及到的中间试图换成base表,在原始表上添加触发器。
PS3:前几天又有朋友问到session管理,我给的方案还是用 MySQL Cluster NDB 管理,其中我还发布过一个PHP 实现的 DbSession类,为了提高性能可以不记录任何日志信息(重启之后数据消失),”SET GLOBAL ndb_table_no_logging = 1;”。
PS4:据说这个是史上最牛的MySQL补丁,非堵塞是的网络IO,可以让32核心的机器跑上18万QPS。
因为MySQL Cluster的分布式构架,考虑到整个MySQL Cluster的启动和恢复效率问题,MySQL Cluster的日志跟传统的事务数据库(比如InnoDB)有很大的差别。
MySQL Cluster的Redo log不再是直接记录更改的page内容,而采用记录操作日志,以用于全局恢复数据用。整个用于Revocery的日志采用 LCP+GCP协作完成。当中LCP只针对当前数据节点,在一定数据量(数据量大小)被更改之后,同步一次内存(DataMemory)和磁盘内容,每个节点保留3份(新版保留2份);而GCP是全局日志,默认是2秒(时间)中将Redo Log Buffer的内容同步到所有的数据节点的磁盘上,用于突发事件恢复使用。 … 【阅读全文·MySQL实验室】
前2天去北京参加了2010数据库技术大会, 我演讲的主题是:《MySQL分布式集群高可用设计及应用》,主要是介绍MySQL Cluster,现在把PPT共享出来。
… 【阅读全文·MySQL实验室】
Two-phase commit(两阶段提交, 文中用2PC代替)是一种比较精简的一致性算法/协议。在事务处理、数据库和计算机网络中,两阶段提交协议提供了分布式设计中的数据一致性的保障,整个事务的参与者要么一致性全部提交成功,要么全部回滚。MySQL Cluster内部数据的同步就是用的2PC协议。 by ivan@mysqlab.net
故名思意,2PC算法包含两个阶段:commit-request 和 commit。
第一阶段(commit-request): 组织者(coordinator)负责询问事务的所有参与者(participants)是否可以提交或者取消事务(回滚)。 这就好比班长组织班级所有同学某时间参加班级大会一样,要么所有人都参加,要么取消会议。 … 【阅读全文·MySQL实验室】
忽如一夜春风来,人人开口NoSQL。NoSQL现在是火了,可大家有想过没,其实NDB, InnoDB是很好的NoSQL数据库,InnoDB有double write buffer可以保证数据的安全性而且身经百战,NDB提供API可供直接调用。而且如果你愿意,你可以在InnoDB前面加上MySQL,它就变成了关系型数据库;NDB加上ndb引擎,结合MySQL摇身一变,也成了关系型数据库。

最近一直在学习研究MySQL Cluster,今天正好也看到消息说支付宝在测试IBM DB2 Cluster,16个数据居节点,1个管理节点,采用万兆网卡连接。DB2 Cluster跟MySQL Cluster采用同样的share-nothing构架,网络对它来说至关重要。
但是我这里要说的是,虽然MySQL Cluster发展到今天已经取得很大的成就,性能翻了好几倍,也开始支持磁盘存储(非主键、索引),但是它有致命的弱点:不支持真正的ACID(整个机群down掉的时候,最新GCP之后提交的事务丢失).
话说回来,虽然缺点还不止上面提到的这些,在很多情景下不适合使用,但是不可否定它的高明。在高可用和写负载均衡上它的确是性价比很高的解决方案,比如session管理、用户管理等。
MySQL Cluster DBA 证书
MySQL 5.1.42 预计在今年(2009)12月18日发布,其中会包含最新的Innodb Plugin。新的InnoDB Plugin在除了支持Data compression和Fast index create特性之外,兼容之前的表空间,并加入了大量Google的patch,极大的提高了Innodb的性能。
MySQL 5.4 GA 预计可能在明年夏季,roadmap如下图:

MySQL 5.5 会加入Google semi-replication patch,Google原链接。
MySQL Cluster Manager 加入自动管理功能,不过应该会收费。
———————————————-
这几天去fetion看了他们的DB,服务器奢侈(可能穷惯了),性能也很强劲30k+的QPS。不过构架有些问题,以后我想应该会改;另外还去了现场帮客户解决问题。至此来北京的计划全部打乱。下次一定提前安排,组织一次MySQL实验室聚会。
geographic-replication-deep-dive(PDF)下载
其中异构复制的时候有些技巧,比如 不同的mysqld只复制一部分表,从而避免延时的出现。
最近评论