CentOS7/Linux 部署Mycat教程(图解)

Mycat配置

简介

Mycat是一个开源的强大的分布式的MYSQL中间件,具有如下众多特性:

  1. 支持SQL92标准
  2. 支持MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常见SQL语法
  3. 遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。
  4. 基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster集群。
  5. 支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster 

6. 基于Nio实现,有效管理线程,解决高并发问题。

7.  支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页等等。

我们主要通过mycat基于心跳自动故障切换的机制来实现mysql的高可用部署Mysql的高可用部署方案由2部分组成,分别是mysql自带的互相主从(在Mysql.docx文档中已经有详细介绍)以及mycat的故障自动切换。前者保证了2个数据库实时的数据一致性,后者保证了客户端在访问某一台数据库出现异常的情况下可以自动切换到另一个。

准备环境

Mycat依赖JDK所以安装JDK1.8 

Mycat版本1.6

Mycat命令

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

Mycat下载

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

授权Mycat

chmod -R 777 /mycat

添加环境变量

vi /etc/profile添加

export MYCAT_HOME=/u01/mycat/mycat

使环境变量生效

source /etc/profile

启动mycat测试是否可用

进入cd mycat/bin目录,执行mycat启动命令./mycat start

ps -ef|grep mycat查看下进程 如下图,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是不是在监听中

查询端口命令输入后需要等待一会,端口较多,需要时间查询

 

 

Mycat默认账号密码

查看server.xml文件

在mycat目录下执行命令

cat conf/server.xml

分别有两个用户

root/123456

user/user

 

服务器和IP绑定

命令

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初步成功的,后面更改配置

更改server.xml配置文件

 

user标签:

       name 用户名

       password 登陆密码

       schemas 登陆库名称.PS:JNDI连接用到的和这个一致

    

更改schema.xml配置

这里面,有两个参数需要注意,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数据没有发生改变

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章