MyCat

阅读更多
今天想写一篇深入浅出mycat相关的文章。

一.mycat是什么?
mycat是mysql的数据库中间件,当然它也可以支持其他主流数据库oracle,sqlserver,db2等。
那么当前主流的数据库中间有哪些呢,优缺点是什么。请参考下面的博客:
http://www.guokr.com/blog/475765/

二.学习资料
官网: http://www.mycat.org.cn/
网上的资料基本上都是从官网上抄的。 在官网上找到链接,用Git 在github上下载资料。
没用过git的,提供个链接 http://code.taobao.org/svn/openclouddb/downloads/
直接下载即可.
目前有三个版本,前两天刚出来个1.4-RC. 还能看到2.0-dev.看样子想出个2.0的大版本。
目前我测试的是1.4-RC


三.故障读写分离测试
后期准备查看根据源码进行研究。
前期是为了测试功能点。

我在本地起了四个mysql服务和一个mycat服务。我把他们都做成服务,在windows下管理。要不就要开五个dos窗口对这五个服务做起停操作。关闭启动都在服务管理下操作。如图:
MyCat_第1张图片

mycat的schema.xml配置了双主从配置。配置如下:
MyCat_第2张图片

PS:虽然上面定义了M1、M2,但是M2才是默认启动的(即balance=0的场合)。M1,M2跟位置有关,放在下面的是默认起的那套系统。

用的是默认的测试用例表:employee.
四个mysql,共建了八张表。 每张表一条记录,ID 从1到8。这样根据查询的结果,容易看到取的是哪个库。
测试结果
http://wenku.baidu.com/link?url=N2Zv2Gbm-PgGppZdZCUOFv_dyQIlAxbLrFBPMLLyNHy89Wj7qcS4fawjQXzu0uEKlaNrlxP8PHHuR-Isf2mTTKAHFgiCXbeBVM1N3pFGhU_

附件report是详细的冗灾测试报告。
Balance参数设置:
1. balance=“0”, 所有读操作都发送到当前可用的writeHost上。
2. balance=“1”,所有读操作都随机的发送到readHost。
3. balance=“2”,所有读操作都随机的在writeHost、readhost上分发
WriteType参数设置:
1. writeType=“0”, 所有写操作都发送到可用的writeHost上。只用一个writeHost执行写操作。
2. writeType=“1”,所有写操作都随机的发送到writeHost。多个writeHost随机写。
“readHost是从属于writeHost的,即意味着它从那个writeHost获取同步数据,因此,当它所属的writeHost宕机了,则它也不会再参与到读写分离中来,即“不工作了”,这是因为此时,它的数据已经“不可靠”了。基于这个考虑,目前mycat 1.3和1.4版本中,若想支持MySQL一主一从的标准配置,并且在主节点宕机的情况下,从节点还能读取数据,则需要在Mycat里配置为两个writeHost并设置banlance=1。”

报告中,包括了
balance=“0”,writeType=“0”;
balance=“1”,writeType=“0”;
balance=“2”,writeType=“0”;
balance=“0”,writeType=“1”;
balance=“1”,writeType=“1”;
balance=“2”,writeType=“1”;
六种场合下,双主从冗灾,读写测试报告。

四.学习mycat的进阶
个人觉得应该分为四个步骤,前三步相当于感性认识。最后一步是理性认识。
第一步,双主从环境下,加入冗灾场景,测试读写分离。
第二步,分库分表演练。
第三步,模拟生产环境下,宕机的回复,这块已经不仅仅是mycat的范畴。
第四步,终极了解mycat,还是要看源代码的。呵呵。带着问题去看,如mysql宕机后,是如何切换的,mysql回复后,又是如何重新检测的。本人在测试时,这段时间有些长,为什么要这么多长,以及处理机制是什么样。前面三步,他在代码层面是如何处理的。



  • MyCat_第3张图片
  • 大小: 50.2 KB
  • MyCat_第4张图片
  • 大小: 31.2 KB
  • report.zip (21.8 KB)
  • 下载次数: 5
  • 查看图片附件

你可能感兴趣的:(MyCat)