一、Mycat安装准备
MyCat是一个的数据库中间件,基于阿里开源的cobar产品而研发,由几个有志之士的牛人共同完成并开源。提供高可用性数据分片集群,自动故障切换,高可用性 ,支持读写分离,支持Mysql双主多从,以及一主多从的模式 ,支持全局表,数据自动分片到多个节点,用于高效表关联查询 ,支持独有的基于E-R 关系的分片策略,实现了高效的表关联查询多平台支持,部署和实施简单。
目前结合公司业务需求针对马上消费项目数据的安全,避免不必要的误操作,同时也便于历史操作的追溯特意搭建一套mycat读写分离环境。具体更多学习请查考MyCat官方权威指南。
1.1 安装java
因Mycat是用java开发的,所以需要在实验环境下安装java,官方建议jdk1.7及以上版本 安装完毕检验是否成功
1.2安装MyCat
解压MyCAT文件
tar xvf Mycat-server-1.5.1-RELEASE-20161124120459-linux.tar.gz
进入mycat目录看到下面(提示:logs文件下面的mycat.log记录用户所有操作数据库的操作)
二、配置文件和熟悉概念
2.1 用户
用户相关配置位于conf/server.xml中,server.xml包含了整个Mycat Server的配置情况,这里只截取针对性的内容来看下
<user name="rw_liudh">
<property name="password">XXXXXXXXXX</property>
<property name="schemas">enterprise,newfs,newfs2,cdr</property>
</user>
上述配置定义了连接Mycat Server的用户名和密码,以及能够访问的schema(schema下面再讲解),如果是只读用户可以加上readOnly属性为true。
2.2 逻辑库(schema)
schema的概念和Mysql中的DataBase概念是一样的,这样就容易理解了。其相关配置位于conf/schema.xml中,user标签中的schemas属性指向的就是schema标签的name属性。下面看下schema标签的内容:
<schema name="enterprise" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1"> </schema>
schema标签属性
1.name:schema的名称相当于数据库的名称
2.dataNode:schema所在的分片,其实就是物理数据库。
2.3 分片节点(dataNode)
dataNode定义了Mycat中的数据节点,也就是通常说的数据分片,其实就是指向了具体的数据库地址和名称。
dataNode标签和schema同级,依然修改conf/schema.xml
<dataNode name="dn1" dataHost="dn1_host" database="enterprise" />
dataNode标签属性
1.name:分片名称,全局唯一
2.dataHost:数据库实例地址,对应dataHost标签的name属性(下面讲解)
3.dataBase:对应数据库实例上的具体数据库,要预先建好
2.4 节点主机(dataHost)
dataHost标签定义了具体的数据库实例、读写分离配置和心跳语句。
dataHost标签和schema同级,依然修改conf/schema.xml。
<dataHostname="dn1_host"maxCon="1000"minCon="10"balance="0"
writeType="0"dbType="mysql"dbDriver="native"switchType="1">
<heartbeat>select user()</heartbeat>
<writeHosthost="hostM1"url="localhost:3306"user="root"password="123456"> (所有的mycat读写账户都走 mysql的root权限)
<readHost host="hostS1"url="localhost:3306" user="ro_maxiao" password="123456" >(该地方为只读指向地址,user为只读权限用户)
</writeHost>
</dataHost>
dataHost标签属性
1.name:节点主机名称
2.maxCon:指定每个读写实例连接池的最大连接
3.minCon:指定每实例连接池的最小连接,初始化连接池的大小
三、启动mycat验证读写
所有配置完毕后,启动mycat
查看运行状态
[yun@10-9-18-18 bin]$ ./mycat status
Mycat-server is running (13957). (运行正常)
验证读写用户
/conf/server.xml文件中 刚开始配置了
<user name="rw_liudh">
<property name="password">XXXXXXXXXX</property>
<property name="schemas">enterprise,newfs,newfs2,cdr</property>
</user>
我们利用工具登陆验证
验证只读用户
/conf/server.xml文件中
<property name="readOnly">true</property>(只读需要添加该语法) 验证