天天看點

搭建Mycat實作讀寫分離

搭建Mycat實作讀寫分離
搭建Mycat實作讀寫分離

環境

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/

搭建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

搭建Mycat實作讀寫分離

[root@CO10 ~]# source /etc/profile  #使環境變量生效

搭建Mycat實作讀寫分離
搭建Mycat實作讀寫分離

 (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

搭建Mycat實作讀寫分離

(2)編輯MyCAT的配置檔案schema.xml,關于dataHost的配置資訊如下:

[root@CO10 conf]# cp -rp schema.xml schema.xml.bak

Vim /usr/local/mycat/conf/schema.xml

搭建Mycat實作讀寫分離

(3)啟動服務

[root@CO10 conf]# mycat star

[root@CO10 conf]# mycat status

Mycat-server is running (7225).

監聽端口8066

搭建Mycat實作讀寫分離

[

root@CO10 ~]# mysql -h192.168.43.160 -uroot -p501524 -P8066

測試登入成功

搭建Mycat實作讀寫分離

配置Mysql主從參考連結:http://blog.51cto.com/13719714/2107950

[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

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)模拟故障:從伺服器挂掉了

搭建Mycat實作讀寫分離

說明讀操作的路由切換到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%'。

繼續閱讀