MyCat

本文深入探讨mycat作为MySQL数据库中间件的功能特性,通过配置双主从环境实现冗灾测试,展示其在实际应用场景下的读写分离、分库分表以及宕机恢复策略。同时,分享学习mycat的进阶步骤,从感性认识到理性理解,旨在全面掌握mycat的使用与优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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


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

我在本地起了四个mysql服务和一个mycat服务。我把他们都做成服务,在windows下管理。要不就要开五个dos窗口对这五个服务做起停操作。关闭启动都在服务管理下操作。如图:
[img]http://dl2.iteye.com/upload/attachment/0111/0503/67916ab6-2db9-3ce8-85be-63ccb2e6cdd7.png[/img]

mycat的schema.xml配置了双主从配置。配置如下:
[img]http://dl2.iteye.com/upload/attachment/0111/0500/9f9d99bc-70c9-333c-8b7c-d4921c58d75e.png[/img]

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

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

附件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”;
六种场合下,双主从冗灾,读写测试报告。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值