mycat1.5连接mysql5.7_MyCAT安装使用及简单测试

MyCAT安装

mycat运行依赖于jre环境,需要首先安装jdk7以上版本

检查jdk版本

shell> java -version

java version "1.7.0_79"

Java(TM) SE Runtime Environment (build 1.7.0_79-b15)

Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

下载解压mycat server1.5安装文件

shell> tar zxvf Mycat-server-1.5-RELEASE-20160301083012-linux.tar.gz

创建mycat用户,并设置环境变量

shell> groupadd mycat

shell> useradd -g mycat mycat

shell> passwd mycat

shell> chown -R mycat.mycat /usr/local/mycat

shell> vim /etc/profile 添加如下内容

export MYCAT_HOME=/usr/local/mycat

shell> source /etc/profile

测试环境介绍

Master:10.106.58.178

Slave:10.106.58.179

mycat:10.106.58.174

mycat配置

mycat1.5配置文件可以根据本地XML文件配置,也可以使用zookeeper来实现,本例介绍使用本地XML来配置。

配置文件介绍

conf/rule.xml 定义分片规则

conf/schema.xml 定义逻辑库、表以及分片节点等内容

conf/server.xml 定义用户授权及服务器参数相关配置

shell> more conf/schema.xml

writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">

select user()

shell> more conf/rule.xml

id

func1

8

128

server.xml的user定义了客户端连接mycat使用的用户验证

schema.xml的user是mycat连接数据库使用的用户

shell> more conf/server.xml

druidparser

test

test

启动测试mycat

查看wrapper.log,查看启动是否成功

shell> /usr/local/mycat/bin/mycat start

通过mycat连接数据库

shell> mysql -h 10.106.58.174 -P8066 -u test -p

mysql> select @@hostname;

+------------+

| @@hostname |

+------------+

| mysql178 |

+------------+

1 row in set (0.13 sec)

mysql> create table user(id int primary key,name varchar(100));

Query OK, 0 rows affected (0.13 sec)

mysql> insert into user(id,name) values(1,'xiaoming');

Query OK, 1 row affected (0.07 sec)

查询从库

mysql> select @@hostname; select * from test.user;

+------------+

| @@hostname |

+------------+

| mysql179 |

+------------+

1 row in set (0.00 sec)

+----+----------+

| id | name |

+----+----------+

| 1 | xiaoming |

+----+----------+

1 row in set (0.00 sec)

测试读写分离

mycat提供了几种请求负载均衡分发形式,通过定义dataHost标签的balance属性来修改

balance=0,不开启读写分离机制,所有读写操作都发送到当前可用的writeHost上

balance=1,全部的readHost和stand by writeHost参与select语句的负载均衡,如双主双从模式,M2、S1、S2都分发请求

balance=2,所有读操作随机在writeHost和readHost上分发

balance=3,所有读请求随机的分发到writeHost上对应的readHost上执行,writeHost不承担读压力。(balance=3只支持mycat1.4以上版本)

设置balance=1并将log4j修改为debug模式,观察执行结果。

执行写入操作,可以看出分发到writeHost

mysql> insert into test.user(id,name) values(2,'xiaoli');

执行查询操作,可以看出分发到readHost

mysql> select * from test.user where id = 2;

测试故障切换

mycat通过dataHost标签的writeType和switchType来定义故障切换方式。

writeType=0,表示所有写都发送到配置的第一个writeHost上,第一个挂了切换到第二个writeHost上,重启后以切换后的为准,切换记录在conf/dnindex.properties

writeType=1,表示所有写都随机发送到配置的writeHost上,mycat1.5以上已废弃不推荐。

switchType=-1,表示不自动切换

switchType=1,默认值,表示自动切换

switchType=2,基于MySQL主从同步的状态决定是否切换,心跳语句为show slave status。

switchType=3,基于galaru cluster的切换机制(合适集群),mycat1.4以上支持,心跳语句为show status like 'wsrep%'。

修改switchType=2,writeType=0,心跳语show slave status

关闭Master

shell> service mysql stop

通过mycat执行插入操作,发现请求分发到第二个writeHost上

mysql> insert into test.user values(3,'xiaowang');

Query OK, 1 row affected (0.04 sec)

重新启动原Master

shell> service mysql start

查看当前写入节点,0表示第一个,1表示第二个

shell> more conf/dnindex.properties

#update

#Fri Mar 04 15:51:39 CST 2016

cluster1=1

通过mycat写入数据

mysql> insert into test.user values(4,'xiaozheng');

Query OK, 1 row affected (0.04 sec)

mysql> select * from test.user where id = 4;

+----+-----------+

| id | name |

+----+-----------+

| 4 | xiaozheng |

+----+-----------+

1 row in set (0.01 sec)

查看主库数据

mysql> select * from test.user;

+----+----------+

| id | name |

+----+----------+

| 1 | xiaoming |

| 2 | xiaoli |

+----+----------+

2 rows in set (0.00 sec)

查看从库数据

mysql> select * from test.user;

+----+-----------+

| id | name |

+----+-----------+

| 1 | xiaoming |

| 2 | xiaoli |

| 3 | xiaowang |

| 4 | xiaozheng |

+----+-----------+

4 rows in set (0.00 sec)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值