MyCat实现Mysql的分库分表(配置篇)

该篇主要是解释MyCat那几个主要的配置文件的作用,以及用法。

附上如何启动Mycat:spring boot+JPA+MyCat实现Mysql的读写分离(启动篇)

Mycat一共有三个十分重要的配置文件(conf目录下)。

   分别是: schema.xml (用于配置逻辑库表逻辑表以及数据节点,还有数据源等配置信息的。最重要的

                  rule.xml(配置表的分片规则)

                  server.xml(配置服务器权限的)

 

schema.xml:



   

        //name:实际物理库的数据表名;dataNode:表对应的分片;rule:分片规则名称,具体配置在rule.xml中.
 


        //name:分片名称;database:实际物理库的数据库名



       balance:该属性表示有几个从数据库
      select user()        //mysql心跳检测命令
               //实际物理库的配置信息

rule.xml:


               
               

  //定义表使用的分片规则

        //定义表的分片算法

server.xml

         //定义了一些系统配置,比如端口号啊、内存大小啊、timeOut时间等。


        mycat
        mycats        //schemas:逻辑库名称,具体配置在scheme.xml中
      //定义了连接Mycat的用户,如账号、密码等。只有在定义了的用户才能连接Mycat


配置解释完了,看具体操作:

直接上配置文件:


rule.xml

 
        
            id
            mod-long
        
    

    
        
        2
    

server.xml


        mycat
        mycats


schema.xml 


        
                
select user()

准备2个数据库,数据库的表结构一模一样,然后数据库名、表明就和schema.xml配置的对应起来。

MyCat实现Mysql的分库分表(配置篇)_第1张图片


使用Navicat连接上Mycat(账号密码就是server.xml中配置的):

MyCat实现Mysql的分库分表(配置篇)_第2张图片


测试:

执行10条insert语句:

MyCat实现Mysql的分库分表(配置篇)_第3张图片

查看那两个库中的表:

MyCat实现Mysql的分库分表(配置篇)_第4张图片

可以发现,是根据id对2取余来进行分库策略的。分库策略是在rule.xml中的function标签的class中指定的。


再来测试查询:

MyCat实现Mysql的分库分表(配置篇)_第5张图片

可以发现,id并不是按照插入顺序来查询的,而是首先查第一张表,在查询第二张表,查询顺序是schema.xml 文件中定义的标签决定的。这就是分库分表中面临的一个问题。这时候id就不能再使用自增长了,而需要换成其他的,如uuid。

你可能感兴趣的:(mycat)