码迷,mamicode.com
首页 > Web开发 > 详细

[项目构建 十四]babasport Mycat配置及使用详解.

时间:2016-09-11 23:06:03      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:

首先我们来看下什么是Mycat:
MyCat:开源分布式数据库中间件, 这里定义的很简单, 就是分布式数据库的中间件.
其实Mycat 是可以时mysql进行集群的中间件, 我们可以对mysql来分库分表 来应对日益增长的数据量. 每台机器只存少量数据, 数据总和是分布式的机器上数据量总和.

技术分享

例如我们一个表中有512条数据(当然实际情况可能有成千上万条数据), 那么现在我们有三台机器装有mysql数据库, 我们想将这些数据按照一定规则的存储在三台机器上, 那么我们设定规则:
表的id%/512 取的结果按照区间分别存储在三个不同的数据库中, 但是这三个数据库又要统一的对外提供服务.
那么这些分割算法 以及 统一对外提供服务是谁来提供支持的呢? 当然就是我们今天要讲的Mycat了.

在Linux下连接Mysql:
技术分享


连接Linux中的mysql数据库:(这里我们的Linux IP为192.168.200.140)
技术分享


查看表结构:
技术分享


查看1库中的商品ID(这个已经是通过Mycatt分好的)
技术分享


查看1库中的商品ID(这个已经是通过Mycatt分好的)
技术分享



查看1库中的商品ID(这个已经是通过Mycatt分好的)
技术分享


启动Mycat
技术分享


连接Mycat:
技术分享

在项目组中设置默认连接为Mycat:(关于这里数据库为什么是babasport而不是babasport1或babasport2等, 后面会说明)
技术分享


Mycat的配置:
技术分享

技术分享

1, 用户名及密码设置:server.xml:
技术分享



2, 逻辑库中的定义表:schema.xml:
技术分享
这里需要说一下, 因为bbs_color和bbs_brand表中的数据很少, 所以这里不需要分库分表, 直接设置成全局表就行, 也就是这两个表中的数据在1,2,3 库中都是一样的.
还有就是childTable, 我们拿bbs_product和bbs_sku来说, 因为商品product和库存bbs_sku是一对多的关系, 那么我们就希望商品id为1 的商品所对应的库存都是在同一个库中的, 这样查询的话就不用跨库了.
同样这里还有一个属性是rule="sharding-by-pattern", 那么接下来我们就要看下这里设定的规则了.

技术分享
因为上面的schema标签中有定义的那么为babasport, 而且dataNode节点又分别指向dn1, dn2, dn3, 所以这里就可以做到对应了.
我们在项目连接的时候 直接是连接babasport的.


3, 查看分片规则: rule.xml
技术分享
这里指定算法为sharding-by-pattern.

查看算法sharding-by-pattern, 这里指定算法存储在partition-pattern.txt
这里是通过PartitionByPattern这个类来实现的, 这里是对512进行取模, 如果取模过程中出现异常, 那么就放到3库(0,1,2)中进行存储.

技术分享


查看算法指定文件:
技术分享

 

这里就可以一目了然的查看到 0-127 是放在1库中, 128-255 是放在2库中, 256-512 是放在3库中.
同样Mycat还支持动态扩容, 当我们的数据量越来越大时我们还可以加机器来分担压力, Mycat可以动态的取扩容. 这里就不再讲具体的实现原理了.
关于Mycat的内容就说到这里, 更深层次的东西大家可以继续查阅相关资料, 我这里只是做一个介绍和入门.

http://www.cnblogs.com/wang-meng/p/5861301.html

 

[项目构建 十四]babasport Mycat配置及使用详解.

标签:

原文地址:http://www.cnblogs.com/softidea/p/5862930.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!