码迷,mamicode.com
首页 > 其他好文 > 详细

mycat分库读写分离原理

时间:2018-02-11 10:37:32      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:bsp   key   参考   body   node   tab   必须   host name   multi   

mycat的配置文件schema.xml

<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,实际中分到两个数据库中,可以是同一个服务器可以是不同.

而在节点中有可能再进一步分读写分离,主从或者主主复制的到不同服务器上的库,这就是mycat分库的流程。

总结来说:

1  、有多个dataHost,就说明有分库分表的设置

2  、在一个dataHost中有readHost在writeHost下,或者有多个writeHost,而且balance不等于0(0代表没有读写分离),就说明有读写分离的设置

3 、 在一个dataHost中有多个writeHost,这些writeHost之间必须是主主复制,这样才能保证及时两次写操作分别用不同的writeHost,也能保证两个Host数据一致的情况

参考:

 http://blog.csdn.net/benluobobo/article/details/51099607

mycat分库读写分离原理

标签:bsp   key   参考   body   node   tab   必须   host name   multi   

原文地址:https://www.cnblogs.com/longsanshi/p/8440463.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!