1. 程式人生 > >搭建Mycat實現讀寫分離

搭建Mycat實現讀寫分離

mycat、Linux、讀寫分離、主從同

技術分享圖片 技術分享圖片

環境

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 服務啟動與啟動設置

1mycat的用戶賬號和授權信息是在

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

測試登入成功

技術分享圖片

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


master上創建數據庫和表,用於實現寫操作:

[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

slave上導入數據庫和表,用於實現讀操作:

[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主從同步成功!

重新啟動服務mycat服務

測試讀寫分離

(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%'。


搭建Mycat實現讀寫分離