mycat讀寫分離


只需要讀寫分離的功能,分庫分表的都不需要。

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

<?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語句仍將提交到全部存活的讀節點上執行,此時系統的很多頁面還是能出來數據,只是用戶修改或提交會失敗。

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在任何時候,只會往一個寫節點寫數據。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM