CentOS 安装mycat

tar xvf Mycat-server-1.5.1-RELEASE-20160405120037-linux.tar.gz
mv /usr/local/src/mycat /usr/local/
##可以不加
groupadd mycat
useradd -g mycat mycat
passwd mycat
chown -R mycat.mycat /usr/local/mycat
vi /etc/profile
export MYCAT_HOME=/usr/local/mycat
source /etc/profile

#服务器名和IP绑定

vi /etc/hosts
192.168.100.50 server1
127.0.0.1 server1

#配置 server.xml 和 schema.xml (本案例配置信息在文章底部)

vi /usr/local/mycat/conf/server.xml
vi /usr/local/mycat/conf/schema.xml
#启动mycat服务 ./mycat { console | start | stop | restart | status | dump }

/usr/local/mycat/bin/mycat console

#mycat 进程
ps -ef | grep mycat

#日志信息
tail -20 /usr/local/mycat/logs/wrapper.log
测试:

#访问 mycat (凭据参考 /usr/local/mycat/conf/server.xml)

mysql -utest -ptest -h127.0.0.1 -P8066 -DTESTDB
mysql> show databases;
mysql> show tables;
测试读写分离
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)
当原主库恢复之后,mycat并没有切换回第一个写入节点,而是需要重新配置主从状态。mycat的故障切换不会同步主从binlog差异数据,不能完整的保证数据一致性,而且没有记录切换后的writeHost提供服务时的binlog位置,其他从库指定新主库时,需要手工备份完整的数据,可考虑与MHA结合使用。

你可能感兴趣的:(Linux)