本人小白,仅以自身经历记录一下对mycat的理解^_^。
前言:
mycat是一个数据库中间件,简单通俗的讲,它可以将数据实行分库分表,而对用户来讲就像使用单一数据库一样。mycat使用java语言编写而成,对mysql支持的最好,当然也支持oracle、SQLserver等数据库。详细使用手册请下载。
一、环境:
jdk1.8 +mysql+navicat+mycat1.6.7.1(windows版本)
二、mycat安装
下载安装包以后解压即可。
然后配置几个配置文件
1.配置server.xml,配置user,其中name ,password,就是连接的用户名与密码,schemas就是逻辑数据库,其关联的实际数据库在schema.xml中详细配置
2.配置schema.xml
schema标签中name对应server.xml中的schema属性;
table标签:name属性对应实际的物理表名,primaryKey对应表的主键 ,dataNode对应表的分片数据库,rule属性对应该表的分片的规则,具体在rule.xml中配置
dataNode标签:配置每一个分片数据库的实际物理数据库。dataHost是物理库的连接信息,database指物理库的实际库名
dataHost标签:每一个物理数据库的详细配置
3.配置rule.xml
tableRule标签 name 就是schema.xml中每张表的分片对应的规则,rule下面的columns表示分片依赖的属性,algorithm表示具体的分片算法。
function标签:具体的分片算法,由class指定相应的算法实现。
三、物理表准备
创建数据库db1_chang、db2_chang,然后在db1_chang中建表user、t_order,在db2_chang建表t_order
四、启动
找到mycat安装盘的bin目录下的startup_nowrap.bat文件,双击启动即可,可在logs目录中查看日志
五、测试
利用navicat像连接mysql数据库一样连接mycat,用户即是在server.xml中配置的,端口默认是8066
在t_order中插入两条数据,可以看到在每一个物理库中各一条
在user中插入两条数据,在物理库中两条
通过上面的例子我们实现类user库不分片,t_order表分片的功能。