mycat的配置文件schema.xmlhtml
<table name="employee" primaryKey="ID" dataNode="dn1,dn2" rule="sharding-by-intfile" /> <dataNode name="dn1" dataHost="localhost1" database="db1" /> <dataNode name="dn2" dataHost="localhost2" database="db1" /> <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="ip1:3003" user="root" password="123"> <readHost host="hostS1" url="ip2:3009" user="root" password="123"/> </writeHost> </dataHost> <dataHost name="localhost2" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="ip3:3003" user="root" password="123"> </writeHost> </dataHost>
翻譯過來就是,表employee分佈在兩個節點dn1,dn2,分表規則sharding-by-intfile,實際中分到兩個數據庫中,能夠是同一個服務器能夠是不一樣.java
而在節點中有可能再進一步分讀寫分離,主從或者主主複製的到不一樣服務器上的庫,這就是mycat分庫的流程。mysql
總結來講:sql
1 、有多個dataHost,就說明有分庫分表的設置數據庫
2 、在一個dataHost中有readHost在writeHost下,或者有多個writeHost,並且balance不等於0(0表明沒有讀寫分離),就說明有讀寫分離的設置服務器
3 、 在一個dataHost中有多個writeHost,這些writeHost之間必須是主主複製,這樣才能保證及時兩次寫操做分別用不一樣的writeHost,也能保證兩個Host數據一致的狀況url
另外的配置spa
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://org.opencloudb/"> <schema name="weixin" checkSQLschema="false" sqlMaxLimit="100" dataNode="weixin" > <schema name="yixin" checkSQLschema="false" sqlMaxLimit="100" dataNode="yixin" /> <dataNode name="dn1" dataHost="localhost0" database="weixin" /> <dataNode name="dn2" dataHost="localhost0" database="yixin" /> <dataHost name="localhost0" maxCon="450" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native"> <heartbeat>select user()</heartbeat> <!-- can have multi write hosts --> <writeHost host="hostM1" url="localhost:3306" user="root" password="123456" /> <readHost host="hostS1" url="localhost:3307" user="test" password="123456" /> </dataHost> </mycat:schema>
也不知道和上面的那個正確,這裏的說法是,將mycat做爲一個數據庫的話,那麼<shecma中的「weixin」和「yixin」,是mycat中的兩個數據庫。而後對應dn1和dn2兩節點。兩個節點又設置了的讀寫分離。.net
參考:翻譯
http://blog.csdn.net/benluobobo/article/details/51099607
http://blog.itpub.net/29510932/viewspace-1664499/
http://blog.itpub.net/29510932/viewspace-1667814/