mycat讀寫分離

版本:mycat1.0
只須要讀寫分離的功能,分庫分表的都不須要。 php

涉及到的配置文件:
1.conf/server.xml
主要配置的是mycat的用戶名和密碼,mycat的用戶名和密碼和mysql的用戶名密碼是分開的,應用鏈接mycat就用這個用戶名和密碼。 mysql

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mycat:server SYSTEM "server.dtd"> <mycat:server xmlns:mycat="http://org.opencloudb/"> <system> <!-- <property name="processors">32</property> <property name="processorExecutor">32</property> <property name="serverPort">8066</property> <property name="managerPort">9066</property> --> </system> <user name="root"> <property name="password">root</property> <property name="schemas">數據庫名稱</property> </user> </mycat:server>


2.conf/schema.xml
主要配置主從庫的數據庫鏈接地址信息,schema裏面不能配置table的定義,若是配置了就會檢查sql的語法,目前mycat還有不少問題。
 
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://org.opencloudb/"> <schema name="數據庫名稱" checkSQLschema="false" dataNode="dn1"> </schema> <dataNode name="dn1" dataHost="localhost1" database="數據庫名稱" /> <dataHost name="localhost1" maxCon="1000" minCon="100" balance="1" dbType="mysql" dbDriver="native"> <heartbeat>select user()</heartbeat> <!-- can have multi write hosts --> <writeHost host="10.1.3.50" url="10.1.3.50:3306" user="數據庫用戶名" password="數據庫密碼"> <!-- can have multi read hosts --> <readHost host="10.1.3.5" url="10.1.3.5:3306" user="數據庫用戶名" password="數據庫密碼" /> <readHost host="10.1.3.6" url="10.1.3.6:3306" user="數據庫用戶名" password="數據庫密碼" /> </writeHost> <!--writeHost host="10.1.3.34" url="10.1.3.34:3306" user="數據庫用戶名" password="數據庫密碼"--> <!-- can have multi read hosts --> <!--readHost host="10.1.3.7" url="10.1.3.7:3306" user="數據庫用戶名" password="數據庫密碼" /--> <!--readHost host="10.1.3.8" url="10.1.3.8:3306" user="數據庫用戶名" password="數據庫密碼" /--> <!--/writeHost--> </dataHost> </mycat:schema>


高可用性以及讀寫分離
MyCAT的讀寫分離機制以下:
• 事務內的SQL,所有走寫節點,除非某個select語句以註釋/*balance*/開頭
• 自動提交的select語句會走讀節點,並在全部可用讀節點中間隨機負載均衡
• 當某個主節點宕機,則其所有讀節點都再也不被使用,由於此時,同步失敗,數據已經不是最新的,MYCAT會採用另一個主節點所對應的所有讀節點來實現select負載均衡。
• 當全部主節點都失敗,則爲了系統高可用性,自動提交的全部select語句仍將提交到所有存活的讀節點上執行,此時系統的不少頁面仍是能出來數據,只是用戶修改或提交會失敗。 sql

dataHost的balance屬性設置爲:
• 0,不開啓讀寫分離機制
• 1,所有的readHost與stand by writeHost參與select語句的負載均衡,簡單的說,當雙主雙從模式(M1->S1,M2->S2,而且M1與 M2互爲主備),正常狀況下,M2,S1,S2都參與select語句的負載均衡。
• 2,全部的readHost與writeHost都參與select語句的負載均衡,也就是說,當系統的寫操做壓力不大的狀況下,全部主機均可以承擔負載均衡。
一個dataHost元素,代表進行了數據同步的一組數據庫,DBA須要保證這一組數據庫服務器是進行了數據同步複製的。writeHost至關於Master DB Server,而旗下的readHost則是與從數據庫同步的Slave DB Server。當dataHost配置了多個writeHost的時候,任何一個writeHost宕機,Mycat 都會自動檢測出來,並嘗試切換到下一個可用的writeHost。 數據庫

MyCAT支持高可用性的企業級特性,根據您的應用特性,能夠配置以下幾種策略:
• 後端數據庫配置爲一主多從,並開啓讀寫分離機制。
• 後端數據庫配置爲雙主雙從(多從),並開啓讀寫分離機制
• 後端數據庫配置爲多主多從,並開啓讀寫分離機制
後面兩種配置,具備更高的系統可用性,當其中一個寫節點(主節點)失敗後,Mycat會偵測出來(心跳機制)並自動切換到下一個寫節點,MyCAT在任什麼時候候,只會往一個寫節點寫數據。 後端

 

http://www.tuicool.com/articles/va2AFj服務器

相關文章
相關標籤/搜索