一、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
2、配置schema.xml
配置实际数据库,这里只做读写的分库,但是要配合数据库自带的主从数据库写功能。读写分离原理:通过将写数据请求负载到不同的主数据库,不同主数据库之间要做主从复制功能,从数据库和主数据库也要做主从功能。通过将数据写入主数据库,后利用数据库自带主从读写功能,将数据写入不同的主数据库和从数据库,保证所有主数据库之间和所有分数据库数据一致。读数据是,通过将每次的请求均衡负载到分数据库进行读取数据。
这里也可以设置一个写数据库作为主数据库,多个读数据库做为从数据库,比较请求数据量远远大于写的数据量。
<?xml version="1.0"?><mycat:schema xmlns:mycat=“http://io.mycat/”>
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
</schema>
<dataNode name="dn1" dataHost="jtc" database="jtcone" />
<dataHost name="jtc" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100" maxRetryCount="4">
<heartbeat>select user()</heartbeat>
<writeHost host="jtcone" url="rm-wz93hgv0kswo.mysql.rds.aliyuncs.com:3306" user="jtcuser"
password="i63630390d">
<readHost host="jtcone" url="126.79.20.214:3306" user="jtcuser" password="k63630390d" />
<readHost host="jtcone" url="126.79.20.215:3306" user="jtcuser" password="k63630390d" />
<readHost host="jtcone" url="126.79.20.216:3306" user="jtcuser" password="k63630390d" />
</writeHost>
<writeHost host="jtcone" url="rm-wz93gv0kswo.mysql.rds.aliyuncs.com:3306" user="jtcuser"
password="i63630390d">
<readHost host="jtcone" url="126.79.20.214:3306" user="jtcuser" password="k63630390d" />
<readHost host="jtcone" url="126.79.20.215:3306" user="jtcuser" password="k63630390d" />
<readHost host="jtcone" url="126.79.20.216:3306" user="jtcuser" password="k63630390d" />
</writeHost>
</dataHost>
</mycat:schema>
host="jtcone"表示需要关联的数据库名称,name=“TESTDB” 中TESTDB需要与server.xml中设置数据库名称相同。
3、配置rule.xml
分片的规则,主要关注rule属性,rule属性的内容来源于rule.xml这个文件,Mycat支持10种分表分库的规则,基本能满足你所需要的要求,这个必须赞一个,其他数据库中间件好像都没有这么多。目前未做分片,暂时未用到。
二、mycat的分库分表
分库:上面样例中已经做了数据的读写分库
分表:由于数据库之间读写信息具有一定延时,所有原则上不建议分表,容易造成数据丢失。
三、调试:
1、源码调试,在官网下载源码后,引进eclipse后,找到MycatStartup.java文件,左键-》Run As -》Java Application运行即可。
2、源码调试好后,将rule.xml,server.xml,schame.xml存放到官方编译好的mycat工具包中,部署工具包即可。
四、java工程中数据库登录
应用工程中连接mycat中间级与直接连接mysql是一样的,如下:
jdbc:mysql://127.0.0.1:8066/TESTDB?useUnicode=true&characterEncoding=utf-8
userName=root
password=l2532390K
原文:https://blog.youkuaiyun.com/kunzai6/article/details/80930333