环境
mycat 192.168.43.160
master 192.168.43.109
slave 192.168.43.200
1 服务安装与配置
(1)
[root@CO10 ~]# tar -zxf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/
[root@CO10 ~]# ls /usr/local/
bin etc games include lib lib64 libexec mycat sbin share src
[root@CO10 ~]# ll /usr/local/mycat/
(2)Mycat 需要安装JDK 1.7 或者以上版本
[root@CO10 ~]# rpm -ivh jdk-8u60-linux-x64.rpm
[root@CO10 ~]# rpm -pql jdk-8u60-linux-x64.rpm
/usr/java/jdk1.8.0_60/
(3)调用环境变量
[root@CO10 ~]# vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_60/
export JAVA_BIN=/usr/java/jdk1.8.0_60/bin
export PATH=${JAVA_HOME}bin:$PATH
export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export MYCAT_HOME=/usr/local/mycat
export PATH=$MYCAT_HOME/bin:$PATH
[root@CO10 ~]# source /etc/profile #使环境变量生效
(4)编写hosts文件
[root@CO10 ~]# vim /etc/hosts
192.168.43.160 mycat.cn
192.168.43.109 master.cn
192.168.43.200 slave.cn
2 服务启动与启动设置
(1)mycat的用户账号和授权信息是在conf/server.xml文件中配置
[root@CO10 mycat]# vim conf/server.xml
(2)编辑MyCAT的配置文件schema.xml,关于dataHost的配置信息如下:
[root@CO10 conf]# cp -rp schema.xml schema.xml.bak
Vim /usr/local/mycat/conf/schema.xml
(3)启动服务
[root@CO10 conf]# mycat star
[root@CO10 conf]# mycat status
Mycat-server is running (7225).
监听端口8066
[
root@CO10 ~]# mysql -h192.168.43.160 -uroot -p501524 -P8066
测试登入成功
[root@CO11~]# mysql -uroot -p
mysql> create database ha;
mysql> use ha;
mysql> create table test(id int,name varchar(20));
mysql> insert into test values(1,’man’);
授权给mycat登陆数据库使用的帐号
mysql> GRANT ALL PRIVILEGES ON *.* TO 'mycat'@"%" IDENTIFIED BY "Ggrr50152412!";
mysql> grant replication slave on *.* to slave@"10.10.10.%" identified by "123456";
mysql>flush privileges;
mysqldump –uroot –p123456 -B ha>ha.sql #导出给从库
关闭密码强度审计,在my.cnf添加validate-password=off
[root@CO12~]# mysql -uroot -p123456<ha.sql
授权给mycat登陆数据库使用的帐号
mysql> GRANT ALL PRIVILEGES ON *.* TO 'mycat'@"%" IDENTIFIED BY "Ggrr50152412!";
mysql>flush privileges;
mysql>stop slave; #停止slave
mysql> change master to master_host='192.168.43.109',master_user='slave',master_password='123456';
mysql> start slave; #启动slave
mysql> show slave status\G 查看状态 ,有两个yes主从同步成功!
测试读写分离
(1)模拟故障:从服务器挂掉了
说明读操作的路由切换到master上了,对外没有任何影响!
(2)模拟故障:主服务器挂掉了
在客户端上测试读写,拒绝连接,主数据库停止了,是无法写操作的,但不影响读.
有两个参数需要注意,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不负担读压力
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%'。
原文地址:http://blog.51cto.com/13719714/2115134