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/