一、安装java
因Mycat是用java开发的,所以需要在实验环境下安装java,官方建议jdk1.7及以上版本
将文件上传到/usr/local/目录下,解压jdk-7u79-linux-x64.tar.gz文件。
命令:
# tar -zxvf jdk-7u79-linux-x64.tar.gz
二、MYSQL配置 mysql-5.6.25-linux-glibc2.5-x86_64.tar.gz
安装步骤略
三、MYCAT配置
上传文件到/usr/local/目录下
# tar -zxvf Mycat-server-1.5.1-RELEASE-20160405120037-linux.tar.gz
# cd mycat/conf
#修改MYCAT/conf/wrapper.conf 文件中jdk/java路径,并保存退出。
# vim wrapper.conf
# vim schema.xml 编辑MYCAT逻辑数据库配置文件。
dataHost属性解析:
name:唯一名称,maxCon:物理数据库,最大连接线程,minCon为最小,balance=0:不开启读写分离模式(即没主从查询分离),writeType=0:不开启负载均衡,当第一个writeHost连接失败,才用第二组。dbType:数据库类型,dbDriver:数据库驱动连接方式,其它数据库可采用jdbc。switchType=1:自动切换,配置主从后,会根据主从心跳检测切换。heartbeat:MYCAT与数据库之间通信心跳检测语句。writeHost物理数据库连接地址及用户名密码。
以上属性详解,请阅读MYCAT指南。
修改数据库连接地址后,保存退出,如下图
启动MYCAT,日志目录下,显示错误。原因是,没有在/etc/hosts下配置mycatdb
配置mycatdb
修改下MYCAT日志文件级别,方便观察,默认INFO级别。
# vim /usr/local/mycat/conf/log4j.xml
再次启动MYCAT服务,查看wrapper.log,mycat.log
启动MYCAT成功,并创建了10个数据库连接,连接三个逻辑节点对应的物理数据库,服务端口8066,管理端口9066等。。。
查看MYCAT/conf下,server.xml配置
连接8066端口
连接MYSQL数据库,查看数据库及表,MYCAT逻辑数据库,在物理数据库上,并未真实存在。
在MYSQL物理数据库上,创建TESTDB逻辑数据库,三个分片节点对应的存储库名称(这里需要手工在MYSQL上创建)
在MYCAT上创建逻辑表,数据源无法连接第一个数据源,查看MYCAT日志,也说数据库无法连接。
创建Travelrecord表
create table travelrecord (id bigint not null primary key,user_id varchar(100),traveldate DATE, fee decimal,days int);
解决办法,因为MYCAT采用远程连接方式,连接MYSQL,先查看MYCAT连接用户schema.xml中writeHost标签里用户名是否有连接MYSQL权限。
root用户仅允许本地连接,不允许IP地址连接,给root用户授权。
#允许root用户远程访问,“%”表示,允许任何IP地址通用用户名密码连接。
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123123' WITH GRANT OPTION;
#刷新权限
mysql> FLUSH PRIVILEGES;
再到MYCAT里创建逻辑表,并查看,该逻辑表,被分别创建到三个逻辑节点对应的数据库上。
在MYSQL物理库上查看,通过MYCAT,将表分别创建在db1、db2、db3,三个数据库下。
在MYCAT上插入表数据,数据插入成功。
在MYSQL上查看
三条记录,通过MYCAT分片规则,被分配到了,三个不同database上。
分片规则定义文件 mycat/conf/rule.xml,截取rule.xml中片段展示
class="org.opencloudb.route.function.AutoPartitionByLong">
文件autopartition-long.txt内容: