mycat主从分离,分库分表

一、mycat的主从分离

概述:Mycat的架构其实很好理解,Mycat是代理,Mycat后面就是物理数据库。和Web服务器的Nginx类似。对于使用者来说,访问的都是Mycat,不会接触到后端的数据库Mycat没有实现主从复制的功能,毕竟数据库本身自带的这个功能才是最高效稳定的。

通过配置以下三个文件,设定mycat配置:

文件 说明
server.xml Mycat的配置文件,设置账号、参数等
schema.xml Mycat对应的物理数据库和数据库表的配置
rule.xml Mycat分片(分库分表)规则

 

1.配置server.xml

表示外界连接mycat的信息。连接的默认端口时8066,以下连接的信息时用户名:root,密码:l2532390K,      端口8066,

也可以设置相应的用户权限,可以建多用户。


        l2532390K
        TESTDB

2、配置schema.xml

配置实际数据库,这里只做读写的分库,但是要配合数据库自带的主从数据库写功能。读写分离原理:通过将写数据请求负载到不同的主数据库,不同主数据库之间要做主从复制功能,从数据库和主数据库也要做主从功能。通过将数据写入主数据库,后利用数据库自带主从读写功能,将数据写入不同的主数据库和从数据库,保证所有主数据库之间和所有分数据库数据一致。读数据是,通过将每次的请求均衡负载到分数据库进行读取数据。

这里也可以设置一个写数据库作为主数据库,多个读数据库做为从数据库,比较请求数据量远远大于写的数据量。



         

        


        

    

注释:schema中可以整体数据库配置,也可以单独的表进行配置如:

      。

但官网给出的是,单独表进行配置。
    

    

注释:dn1分库种类在schema中使用。dataHost是下面实体数据库中配置分类,每个dataHost都可以配置自己的读写实体数据库。database是表示数据库中的具体数据库,有多个数据库使用逗号隔开。

                   writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100" maxRetryCount="4">
        select 1
        
            
        

    

                   writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100" maxRetryCount="4">
        select 
1      
        
            
        

    

注释:balance="1"的话,表示读写分离。表示需要关联的数据库名称,name="TESTDB" 中TESTDB需要与server.xml中设置数据库名称相同。select 1保持心跳语句。对写数据库这块还需要进一步测试,很多同学数mycat没有实现主从数据库数据复制,所以还是要设置主从数据库进行数据库数据复制。

3、配置rule.xml

分片的规则,主要关注rule属性,rule属性的内容来源于rule.xml这个文件,Mycat支持10种分表分库的规则,基本能满足你所需要的要求,这个必须赞一个,其他数据库中间件好像都没有这么多。目前未做分片,暂时未用到。

注释:16

当规则需要修改时,比如please make sure table datanode size = function partition size时,需要修改对于的规则autopartition-long.txt删除一个节点即可。当然规则可以根据自己的需要进行修改。

二、mycat的分库分表

分库:上面样例中已经做了数据的读写分库

分表:由于数据库之间读写信息具有一定延时,所有原则上不建议分表,容易造成数据丢失。

三、调试:

1、源码调试,在官网下载源码后,引进eclipse后,找到MycatStartup.java文件,左键-》Run As -》Java  Application运行即可。

2、源码调试好后,将rule.xml,server.xml,schame.xml存放到官方编译好的mycat工具包中,部署工具包即可。

3、在windows中如果出现闪退,直接运行startup_nowrap.bat,如果出现闪退,在cmd 命令行运行,查看出错原因。

四、java工程中数据库登录

应用工程中连接mycat中间级与直接连接mysql是一样的,如下:

jdbc:mysql://127.0.0.1:8066/TESTDB?useUnicode=true&characterEncoding=utf-8

userName=root
password=l2532390K

五、在linux下启动命令

到mycat/bin文件夹下:

./mycat start

注意事项:

1、Mycat主从分离只是在读的时候做了处理,写入数据的时候,只会写入到writehost,需要通过mysql的主从复制将数据复制到readhost,这个问题当时候我纠结了好久,数据写入writehost后,readhost一直没有数据,以为是自己配置的问题,后面才发现Mycat就没有实现主从复制的功能,毕竟数据库本身自带的这个功能才是最高效稳定的。以上是网络获取的经验,未经证实。参考了:https://www.cnblogs.com/chongaizhen/p/11083226.html

你可能感兴趣的:(数据存储,数据库)