MyCat讀寫分離-筆記(四)

概述mysql

  Mycat可以實現數據庫讀寫分離,不能實現主從同步,數據庫的備份仍是基於數據庫層面的。Mycat只是數據庫的中間件;sql

Mycat讀寫分離配置數據庫

     在MySQL中間件出現以前,對於MySQL主從集羣,若是要實現其讀寫分離,通常是在程序端實現,這樣就帶來一個問題,即數據庫和程序的耦合度過高,若是我數據庫的地址發生改變了,那麼我程序端也要進行相應的修改,若是數據庫不當心掛掉了,則同時也意味着程序的不可用,而這對不少應用來講,並不能接受。負載均衡

引入MySQL中間件能很好的對程序端和數據庫進行解耦,這樣,程序端只需關注數據庫中間件的地址,而無需知曉底層數據庫是如何提供服務。測試

做爲當前煊赫一時的MySQL中間件,MyCAT實現MySQL主從集羣的讀寫分離自是應有之義,其配置也至關簡單。url

在這裏,我用三個實例組成MySQL主從集羣,來驗證MyCAT的讀寫分離功能,其實,一主一從就能夠知足,之因此用三個,是爲了驗證MyCAT的分片功能。spa

集羣組成以下:code

角色             主機名                      主機IPserver

master         mysql-server1          192.168.244.145xml

slave            mysql-server2          192.168.244.146

slave            mysql-server3          192.168.244.144

在這裏,仍是使用Travelrecord表進行測試。

首先編輯MyCAT的配置文件schema.xml,關於dataHost的配置信息以下:

<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
                writeType="0" dbType="mysql" dbDriver="native" switchType="-1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <!-- can have multi write hosts -->
                <writeHost host="hostM1" url="localhost:3306" user="root"
                        password="123456">
                </writeHost>
                <writeHost host="hostS1" url="192.168.244.146:3306" user="root"
                        password="123456" />
                <writeHost host="hostS2" url="192.168.244.144:3306" user="root"                      
                        password="123456" />
</dataHost>

這裏面,有兩個參數須要注意,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%'。

相關文章
相關標籤/搜索