因为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实验室】
要理解TCP keep-alive/persistent connection, 得从TCP协议说起。
TCP flow:
_____ _____
| | | |
| A | | B |
|_____| |_____|
^ ^
|--->--->--->-------------- SYN -------------->--->--->---|
|---<---<---<------------ SYN/ACK ------------<---<---<---|
|--->--->--->-------------- ACK -------------->--->--->---|
|--->--->--->-------------- ... -------------->--->--->---|
|---<---<---<-------------- ... --------------<---<---M---|
建立TCP链接需要经过3步,SYN、SYN/ACK、ACK,关闭则需要4步
约定:
当用户通过浏览器打开一个页面的时候,最小情况下,只需要2个packet,一次是请求(http get request),一次是回应(response from server)。但是这里没有计入TCP链接的建立(3 packets)和关闭(4packets),当然每个packet都需要ACK,但是ACK信息一般直接包含在回应的packet里,为了量化方便,这里忽略掉。 … 【阅读全文·MySQL实验室】
各浏览器并发下载数列表:
| Browser |
HTTP/1.1 |
HTTP/1.0 |
| IE 6,7 |
2 |
4 |
| IE 8 |
6 |
6 |
| Firefox 2 |
2 |
8 |
| Firefox 3 |
6 |
6 |
| Safari 3,4 |
4 |
4 |
| Chrome 1,2 |
6 |
? |
| Chrome 3 |
4 |
4 |
| Opera 9.63,10.00alpha |
4 |
4 |
随着宽带的普及,为充分利用用户的带宽,提升用户体验,可设置多个子域名。
Javascript和css尽可能从页面中分离出去,作为独立的文件。
为了减小header头大小,静态文件尽量用其他不带cookie的域名提供下载(当然还要兼顾到DNS解析时间)。
如:www.mysqlab.net用到
http://s0.mysqlab.net.cdn007.com/css/base.css
http://s1.mysqlab.net.cdn007.com/js/global.js
MySQL连接、memcache连接尽量在echo之前断开连接。
使用DBSession保持用户在线状态,方便负载均衡、统计、定位用户在线情况及跨域访问。
当前绝大部分memcached可以通过MySQLD来存储实现,具有更多的特性,如:安全、高可用等。
(MySQL基于主键查询可实现5000+qps每核心)
浏览器并发下载数参考:
http://www.stevesouders.com/blog/2008/03/20/roundup-on-parallel-connections/
相信有不少同仁已经做过过SSD作为存储对IO瓶颈的数据库性能测试,在得到可喜的成绩之余,在用于生产环境之前需要解决一些问题。
InnoDB共享表空间包含:
Data dictonary
Double write buffer
Insert buffer
Rollback segments
UNDO space … 【阅读全文·MySQL实验室】

前端时间写过一篇博客:竞争给MySQL带来的压力和动力,现整理下。–谭俊青@ MySQL实验室
… 【阅读全文·MySQL实验室】
距离Matthew Yonkovit发布Waffle Grid已经有一年多了,最近看到qlks发布了Secondary Buffer Pool in InnoDB,又让我想起来了waffle。waffle做的事情也是InnoDB的二级缓存,但是用的不是SSD,而是Memcached。如果将所有的buffer都用memcached实现,进一步就可以实现内存的分布式共享,进而实现MySQL RAC。需要做的工作会不少,但应该是个可行的办法… … 【阅读全文·MySQL实验室】
这次2010 MySQL UC上MySQL在MySQL5.5-m3发布没多久之后紧急发布了MySQL5.5-m4及InnoDB Plugin 1.0.7 (GA) 和 InnoDB Plugin 1.1。敏感的人应该发现了这点,其实这背后是因为 Percona给了MySQL官方和InnoDB Team太多的压力。早在InnoDB Plugin 1.0.7 和 1.1发布之前,XtraDB的性能一度超越Built InnoDB及InnoDB plugin高达30%。让我们先看看Percona XtraDB之前都已经具备了哪些些特性:By ivan@mysqlab.net … 【阅读全文·MySQL实验室】
自从Sun被Oracle收购之后,大家对MySQL的前途抱有或多或少的担忧。下面是我重新整理下MySQL5.5的一些让人激动的新特新,来表明MySQL的活力,希望籍此能让大家对MySQL充满信心。
之前介绍过MySQL5.x的一些特性(MySQL新版5.x及特性, MySQL 5.5 表分区功能增强, MySQL 5.5 Released非GA等),先整理下,让大家对MySQL5.5有个整体的认识。 By Ivan@mysqlab.net, 谭俊青@MySQL实验室 … 【阅读全文·MySQL实验室】
InnoDB Plugin 1.0.7 已经GA了,最让人兴奋的当属crash recovery时间大大的缩短,以后redo log可以顶着4G用了(xtraDB可以超过4G),这样可以很大程度上降低IO需求(为什么?)、从而极大地提高InnoDB的写性能。
另外MySQL5.5+InnoDB plugin 1.1改进的几个地方确实让人兴奋,比如Multiple Rollback Segments(不再有1024并发事务的限制), Split Buffer Pools(这个以后发展下去可以指定某些表常住内存,相当于事务安全的内存表,还没有表锁限制,又是变长字段,相比现在内存表来说优秀太多了),InnoDB Performance Schema,还有Replication durability等,再加行已有的semi-replication, MySQL5.5GA真是让人迫不及待。 … 【阅读全文·MySQL实验室】
前2天去北京参加了2010数据库技术大会, 我演讲的主题是:《MySQL分布式集群高可用设计及应用》,主要是介绍MySQL Cluster,现在把PPT共享出来。
… 【阅读全文·MySQL实验室】
近2个礼拜接触了不少公司,比如H3C、 东信、Thomson、索贝、 淘宝、 天会、19lou、 盒子世界等,大家都在用MySQL数据库,而且有些已经具有相当规模。大家需求各异,如功能、性能、高可用、可扩展、系统构架等。淘宝的江枫人很好,好沟通,也热情,还是老乡。
H3C的数据库应用竟然可以跟淘宝相提并论,很吃惊,不过这次去我想我应该可以打动他们用MySQL了,希望下一步能合作愉快。另外几家涉及到库表设计、数据库参数调整优化、高可用设计、缓存、及整个系统构架。另外发现也有少部分人已经在使用MySQL Cluster了,不过这东西最好在有基础和经验的技术人员指导下使用,不然后果很严重。
还有一点要提到的就是,在国付费服务意识还没有普及,希望接下来我的用心服务能够换来客户的认可。
顺便做个广告,以下情况需要提供帮助和支持的,可以联系我。
MySQL数据库硬件选型
MySQL数据库性能审核
MySQL数据库优化(参数调整,SQL优化,开发支持)
MySQL数据库升级
MySQL库表设计
MySQL高可用方案
MySQL Cluster支持
MySQL可扩展性方案
缓存和构架设计(系统级)
MySQL远程DBA(管理、维护)
紧急疑难解答
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摇身一变,也成了关系型数据库。
最近Twitter、DIGG等计划换用基于key-value的NoSQL数据库(e.g:Cassandra),之所以有如此动向是因为基于MySQL + sharding + cache的构架随着数据量爆炸式增长,重构的人力成本太高,换用扩展性更好的NoSQL数据库,以达到控制人力成本的目的,从而减少总体成本。
随着数据量和访问量的增长,网站构架大致有这么几个发展阶段(以PHP+MySQL+Memcached为例):
… 【阅读全文·MySQL实验室】
去年做过MySQL HA高可用方案,就是利用了Google的半同步补丁来加以实现的。而现在MySQL5.5中已经集成了semi-sync replication的功能,那么我们可以放心用它和其他组件及服务判断程序来实现我们的高可用解决方案。但是这里还存在一点瑕疵,需要注意。 By ivan@mysqlab.net

MySQL半同步流程设计图
…
【阅读全文·MySQL实验室】
最近评论