MyCat
MyCAT是使用JAVA语言进行编写开发,使用前需要先安装JAVA运行环境(JRE),由于MyCAT中使用了JDK7中的一些特性,所以 要求必须在JDK7以上的版本上运行。
mysql
mysql主从复制
首先安装mysql数据库实现主从复制,之前有写过搭建基于Docker的Mysql主从复制搭建
mycat安装
wget http://dl.mycat.org.cn/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
tar -zvxf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
解压之后mycat下面文件夹 bin catlet conf lib logs version.txt 目录解释如下:
bin 程序目录 ./mycat start启动/stop停止/restart重启/status查看状态
conf目录下存放配置文件 server.xml是Mycat服务器参数调整和用户授权的配置文件 schema.xml是逻辑库定义和表以及分片定义的配置文件 rule.xml是分片规则的配置文件,分片规则的具体一些参数信息单独存放为文件,也在这个目录下 配置文件修改,需要重启Mycat
lib目录下主要存放mycat依赖的一些jar文件 日志存放在logs/mycat.log中,每天一个文件,日志的配置是在conf/log4j.xml中 可以根据自己的需要,可以调整输出级别为debug,debug级别下,会输出更多的信息,方便排查问题.
Mycat相关配置
修改schema.xml配置文件(这里简单的读写分离配置)
还需要修改对应的server.xml中的配置文件
# mycat的访问端口配置
8066 9066
# mycat用户密码配置相关信息
123456
test #此处为数据库配置文件名称
user
test
true
强制走写节点(加在sql语句前)
对于标签,它里面重要的参数列举如下:
balance指的负载均衡类型,目前的取值有4种:
1. balance=”0”, 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。
2. balance=”1”,全部的readHost与stand bywriteHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与 M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡。
3. balance=”2”,所有读操作都随机的在writeHost、readhost上分发。
4. balance=”3”,所有读请求随机的分发到wiriterHost对应的readhost执行,writerHost不负担读压力
注意:balance=3只在1.4及其以后版本有,1.3没有。
writeType属性:
1.writeType=”0”,所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后以切换后的为准,切换记录在配置文件中:dnindex.properties.
2.writeType=”1”,所有写操作都随机地发送到配置的writeHost,1.5以后废弃不推荐。
switchType指的是切换的模式,目前的取值也有4种:
1. switchType=’-1’ 表示不自动切换
2. switchType=’1’ 默认值,表示自动切换
3. switchType=’2’ 基于MySQL主从同步的状态决定是否切换,心跳语句为 show slave status
4. switchType=’3’基于MySQLgalary cluster的切换机制(适合集群)(1.4.1),心跳语句为 show status like ‘wsrep%’。
注意:估计Mycat1.4才开始支持switchType。1.3版本配置该属性的话,日志里会报错:org.xml.sax.SAXParseException;lineNumber: 61; columnNumber: 86; Attribute “switchType” must bedeclared for element type “dataHost”。
MyCAT心跳检查询句配置为 show slave status ,dataHost 上定义两个新属性: switchType=”2” 与slaveThreshold=”100”,此时意味着开启MySQL主从复制状态绑定的读写分离与切换机制,Mycat心跳机制通过检测 show slave status 中的 “Seconds_Behind_Master”,”Slave_IO_Running”,”Slave_SQL_Running”三个字段来确定当前主从同步的状态及Seconds_Behind_Master主从复制时延,当Seconds_Behind_Master>slaveThreshold时,读写分离筛选器会过滤掉此Slave机器,防止读到很久以前的旧数据,当主节点宕机后,切换逻辑会检查Slave上的Seconds_Behind_Master是否为0,为0时则表示主仅同步,可安全切换,否则不会切换。
mycat分库分表配置
# name为被拆分的表名称 rule为拆分规则 对应在rule.xml文件中进行修改
#表拆分之后存放的数据库1
#表拆分之后存放的数据库2
#表拆分之后存放的数据库3
show slave status