1. 程式人生 > >mycat mysql讀寫分離

mycat mysql讀寫分離

主從同步 通過 機制 rtb cal 所有 mysql host status

Mycat配置

需要修改的地方:黃的

<dataNode name="dn1" dataHost="localhost1" database="db1" />
    <dataNode name="dn2" dataHost="localhost1" database="db2" />
    <dataNode name="dn3" dataHost="localhost1" database="db3" />
    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
writeType="0"
dbType="mysql" dbDriver="native" switchType="2" slaveThreshold="100"> <heartbeat>show slave status</heartbeat> <writeHost host="hostM" url="192.168.25.134:3306" user="root" password="root"> <readHost host="hostS"
url="192.168.25.166:3306" user="root" password="root" /> </writeHost> </dataHost>

配置參數說明:(1)設置 balance="1"與writeType="0"

Balance參數設置:
1. balance=“0”, 所有讀操作都發送到當前可用的writeHost上。
2. balance=“1”,所有讀操作都隨機的發送到readHost。
3. balance=“2”,所有讀操作都隨機的在writeHost、readhost上分發
WriteType參數設置1. writeType=“0”, 所有寫操作都發送到可用的writeHost上。 2. writeType=“1”,所有寫操作都隨機的發送到readHost。 3. writeType=“2”,所有寫操作都隨機的在writeHost、readhost分上發。 “readHost是從屬於writeHost的,即意味著它從那個writeHost獲取同步數據,因此,當它所屬的writeHost宕機了,則它也不會再參與到讀寫分離中來,即“不工作了”,這是因為此時,它的數據已經“不可靠”了。基於這個考慮,目前mycat 1.3和1.4版本中,若想支持MySQL一主一從的標準配置,並且在主節點宕機的情況下,從節點還能讀取數據,則需要在Mycat裏配置為兩個writeHost並設置banlance=1。” (2)設置 switchType="2" 與slaveThreshold="100"

switchType 目前有三種選擇: -1:表示不自動切換 1 :默認值,自動切換 2 :基於MySQL主從同步的狀態決定是否切換 “Mycat心跳檢查語句配置為 show slave status
dataHost上定義兩個新屬性: switchType="2" 與slaveThreshold="100",
此時意味著開啟MySQL主從復制狀態綁定的讀寫分離與切換機制。
Mycat心跳機制通過檢測 show slave status 中的 "Seconds_Behind_Master", "Slave_IO_Running", "Slave_SQL_Running"
三個字段來確定當前主從同步的狀態以及Seconds_Behind_Master主從復制時延。“

test 代碼:

。。。。

mycat mysql讀寫分離