为了对数据进行水平切分(分库),将项目集成mycat;
1.下载mycat http://dl.mycat.io/
2.配置:主要是配置4个文件
1)配置环境变量:
配置完毕后,输入命令mycat,出现如下图,表示配置成功;
2)配置系统参数,所有配置均在conf文件下
a.配置运行环境:配置wrapper.conf文件
根据自己的实际java路径配置;
b.设置mycat账号和密码,在server.xml配置
调试方便,关键配置信息
<user name="sgkj" defaultAccount="true">
<property name="password">cdutcm@123</property>
<property name="schemas">mycats</property>
</user>
c.配置分表:在schema.xml配置
附关键配置:
<dataNode name="dn1" dataHost="localhost1" database="db1" />
<dataNode name="dn2" dataHost="localhost1" database="db2" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostS1" url="localhost:3457" user="root"
password="root" />
</dataHost>
d.配置路由规则,这里用id为策略,平均分摊到每个数据库
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="mycats" checkSQLschema="false" sqlMaxLimit="100">
<!-- auto sharding by id (long) -->
<table name="tb_user" dataNode="dn1,dn2" rule="mod-long" />
</schema>
<!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"
/> -->
<dataNode name="dn1" dataHost="localhost1" database="db1" />
<dataNode name="dn2" dataHost="localhost1" database="db2" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostS1" url="localhost:3457" user="sgkj"
password="cdutcm@123" />
<!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
</dataHost>
</mycat:schema>
3.启动mycat;
mycat install 安装;
mycat start 启动服务;
启动服务的时候菜了几个坑,主要是java环境的问题,java8不能启动,后来换成了java7解决的;
4.测试是否安装成功,注意一下,mycat默认启动的端口是8066
driver-class-name: com.mysql.jdbc.Driver.url: jdbc:mysql://localhost:8066/mycats?characterEncoding=utf8&useSSL=false&autoReconnect=true&allowMultiQueries=true
username: root
password: root
向mycat中插入数据后,查看结果,数据被分摊插入到不同的数据库
致谢:参看文献