Mycat是一个开源的强大的分布式的MYSQL中间件,具有如下众多特性:
6. 基于Nio实现,有效管理线程,解决高并发问题。
7. 支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页等等。
我们主要通过mycat基于心跳自动故障切换的机制来实现mysql的高可用部署Mysql的高可用部署方案由2部分组成,分别是mysql自带的互相主从(在Mysql.docx文档中已经有详细介绍)以及mycat的故障自动切换。前者保证了2个数据库实时的数据一致性,后者保证了客户端在访问某一台数据库出现异常的情况下可以自动切换到另一个。
Mycat依赖JDK所以安装JDK1.8
Mycat版本1.6
Mycat目录下执行命令
./bin/mycat start -启动
./bin/mycat stop -关闭
./bin/mycat restart -重启
经测试最好不要使用restart命令重启,关闭不掉进程两个进程就重启了,重启无效。最好先执行stop 关闭,再执行启动命令start。或者使用kill -9 端口
使用stop后再执行ps -ef |grep mycat查看进程是否全部关闭
PS:如果使用ps -ef |grep mycat命令杀死进程
记得使用两次,因为mycat有两个进程,8066和9066
wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
解压
tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
chmod -R 777 /mycat
vi /etc/profile添加
export MYCAT_HOME=/u01/mycat/mycat
source /etc/profile
进入cd mycat/bin目录,执行mycat启动命令./mycat start
用ps -ef|grep mycat查看下进程 如下图,mycat进程存在,启动成功
Mycat日志所在目录是cat /u01/mycat/mycat/logs/mycat.log
看到有些是连接超时,该超时是mycat自带的配置,企图连接数据库信息的
该配置在conf下的schema.xml里面自带的一些例子数据
不用担心,稍后会配置我们自己连接
可以先看一下conf下的schema.xml配置文件
cat conf/schema.xml
下图标记的是mycat自带的一些配置,看一下即可,暂时不管
命令netstat -a|grep 8066
mysql的监听端口是3306,
mycat的监听端口是8066,检查下8066是不是在监听中
查询端口命令输入后需要等待一会,端口较多,需要时间查询
查看server.xml文件
在mycat目录下执行命令
cat conf/server.xml
分别有两个用户
root/123456
user/user
命令
vim /etc/hosts
添加
172.19.15.9 mycat_server
mysql -uroot -p123456 -h127.0.0.1 -P8066 -DHAWK_DB
PS: mysql端口为3306、 mycat端口为8066
能成功连接说明mycat初步成功的,后面更改配置
user标签:
name 用户名
password 登陆密码
schemas 登陆库名称.PS:JNDI连接用到的和这个一致
这里面,有两个参数需要注意,balance和switchType。
其中,balance指的负载均衡类型,目前的取值有4种:
1. balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。
2. balance="1",全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡。
3. balance="2",所有读操作都随机的在writeHost、readhost上分发。
4. balance="3",所有读请求随机的分发到wiriterHost对应的readhost执行,writerHost不负担读压力
writeType 不建议更改
1. writeType=”0”, 所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties。
2. writeType=”1”,所有写操作都随机的发送到配置的writeHost,1.5 以后废弃不推荐。默认0就好了!
switchType指的是切换的模式,目前的取值也有4种:
1. switchType='-1' 表示不自动切换
2. switchType='1' 默认值,表示自动切换
3. switchType='2' 基于MySQL主从同步的状态决定是否切换,心跳语句为show slave status
4. switchType='3'基于MySQL galary cluster的切换机制(适合集群)(1.4.1),心跳语句为show status like 'wsrep%'。
遇到问题,尚未解决
例如:现在有三个数据库,ABC
AB数据是主主同步
C是从库,同步B的数据
改变B数据C是可以同步的,改变A数据B也是可以同步成功的,但是C数据没有发生改变