zoukankan      html  css  js  c++  java
  • [项目构建 十四]babasport Mycat配置及使用详解.

    首先我们来看下什么是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

  • 相关阅读:
    SQL中内连接和外连接
    MySQL执行计划解读
    排序算法
    Edge浏览器安装sci-hub插件及使用教程
    MATLAB R2020B 使用教学——窗口布局设置
    PHP半年了,已经可以独立支撑项目,几点心得记录
    看1000行代码不如自己写10行代码
    PHP逻辑运算符中的and和&&以及or和||是有区别的
    自学PHP的野方法
    PHP中SQL查询语句的id=%d解释
  • 原文地址:https://www.cnblogs.com/softidea/p/5862930.html
Copyright © 2011-2022 走看看