首先我们来看下什么是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配置及使用详解.的更多相关文章

  1. “全栈2019”Java多线程第二十四章:等待唤醒机制详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  2. “全栈2019”Java多线程第十四章:线程与堆栈详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  3. “全栈2019”Java第六十四章:接口与静态方法详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  4. Redis进阶实践之十四 Redis-cli命令行工具使用详解

    转载来源:http://www.cnblogs.com/PatrickLiu/p/8508975.html 一.介绍 redis学了有一段时间了,以前都是看视频,看教程,很少看官方的东西.现在redi ...

  5. Redis进阶实践之十四 Redis-cli命令行工具使用详解第一部分

    一.介绍       redis学了有一段时间了,以前都是看视频,看教程,很少看官方的东西.现在redis的东西要看的都差不多看完了.网上的东西也不多了.剩下来就看看官网的东西吧,一遍翻译,一遍测试. ...

  6. Mycat配置及使用详解.

    首先我们来看下什么是Mycat:MyCat:开源分布式数据库中间件, 这里定义的很简单, 就是分布式数据库的中间件. 其实Mycat 是可以时mysql进行集群的中间件, 我们可以对mysql来分库分 ...

  7. python接口自动化(二十四)--unittest断言——中(详解)

    简介 上一篇通过简单的案例给小伙伴们介绍了一下unittest断言,这篇我们将通过结合和围绕实际的工作来进行unittest的断言.这里以获取城市天气预报的接口为例,设计了 2 个用例,一个是查询北京 ...

  8. Vue.js 源码分析(十四) 基础篇 组件 自定义事件详解

    我们在开发组件时有时需要和父组件沟通,此时可以用自定义事件来实现 组件的事件分为自定义事件和原生事件,前者用于子组件给父组件发送消息的,后者用于在组件的根元素上直接监听一个原生事件,区别就是绑定原生事 ...

  9. python接口自动化(十四)--session关联接口(详解)

    简介 上一篇cookie绕过验证码模拟登录博客园,但这只是第一步,一般登录后,还会有其它的操作,如发帖,评论等等,这时候如何保持会话呢?这里我以jenkins平台为例,给小伙伴们在沙场演练一下. se ...

随机推荐

  1. slides 带手势的图片滑动效果(用于移动终端)

    slidesjs 是基于jQuery开发的一款功能强大,是简单的幻灯片插件,但是需要要应用于移动终端的话,还需要考虑手势滑动时候图片切换功能. 此次,我就在slidesjs基础上扩展了两个swipe属 ...

  2. html打印表格每页都有的表头和打印分页

    本文转载:http://www.cnblogs.com/RitchieChen/archive/2008/07/30/1256829.html 在做项目的时候碰到的.用户要求,页面呈现太长时,打印的时 ...

  3. SAP-MM:收货转储时提示 M7053“只能在公司代码 **** 的期间 2014/04 和 2014/03 中记账”

    错误信息   消息号M7053   解决方法 Step 1.使用MMPV进入"关闭账期"界面. Step 2.输入"公司代码"."期间".& ...

  4. 美丽的表格样式(使用CSS样式表控制表格样式)

    按照WEB2.0风格,设计了几个表格样式,希望大家喜欢. WEB2.0提倡使用div开布局,但不是要全然放弃使用表格,表格在数据展现方面还是不错的选择. 如今使用介绍使用CSS样式表来控制.美化表格的 ...

  5. URL重写:RewriteCond指令与RewriteRule 指令格式(转)

    Rewirte主要的功能就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范.平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等.本文将针对mod_rewrite和URL匹配的技术细 ...

  6. 如何解决eclipse上的Android程序“Please ensure that adb is correctly located at 'D:\eclipse\sdk\platform-tools\adb.exe' and can be executed.”小问题?

    首先,把运行的Android模拟器和eclipse一块儿关了, 然后win+R,cmd, 下面输入adb kill_server 再输入adb start_server 之后重新运行项目,不出意外的话 ...

  7. Android的GridView和Gallery结合Demo

    Android的GridView和Gallery结合Demo Demo介绍:首页是一个GridView加载图片,竖屏时显示3列图片,横屏时显示4列图片;并且对图片进行大小限制和加灰色边框处理. 点击某 ...

  8. 转:android 自定义RadioButton样式

    http://gundumw100.iteye.com/blog/1146527  上面这种3选1的效果如何做呢?用代码写? 其实有更简单的办法,忘了RadioButton有什么特性了吗? 我就用Ra ...

  9. vedeo与audio标签的使用

    浏览器原生支持音视频无疑是一件大事——尤其对移动设备而言.不依赖Flash,意味着更加省电.安全和快速的播放体验,而且只需要引入一个标签,就能播放自如. <video src="dao ...

  10. java编程思想-并发思维导图