一、整体高可靠架构
应用访问ha 的vip来访问数据库。多个mycat可以达到负载均衡和高可靠。
二、mycat 基本配置
1、表按库分区
<schema name="DBTest" checkSQLschema="false" sqlMaxLimit="100">
<!-- sharding by murmur id -->
<table name="tasks" dataNode="dn1,dn2" rule="mod-long" />
</schema>
<dataNode name="dn1" dataHost="remotehost1" database="db" />
<dataNode name="dn2" dataHost="remotehost2" database="db" />
2、负载均衡
<dataHost name="remotehost1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="2" slaveThreshold="100">
<heartbeat>show slave status</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="172.18.0.2:3306" user="root"
password="123456">
<!-- can have multi read hosts -->
<readHost host="hostS2" url="172.18.0.3:3306" user="root" password="123456" />
</writeHost>
</dataHost>
<dataHost name="remotehost2" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="2" slaveThreshold="100">
<heartbeat>show slave status</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="172.18.0.17:3306" user="root"
password="123456">
<!-- can have multi read hosts -->
<readHost host="hostS2" url="172.18.0.18:3306" user="root" password="123456" />
</writeHost>
</dataHost>
上述,.2和.3为一个主从,.2为主; .17和.18为一个主从,.17 为主;
四个数据库里面都建立了db 实例库。
逻辑表tasks 数据记录平均分配存储到两个主从集群上。
三、总结
mycat
schema name(逻辑库名)
table name 逻辑表[rule="mod-long" 记录分库的算法]--》dataNode 逻辑库节点--》远程主机组(主从结构)dataHost 以上是表按记录分库存储。
writeHost--》readHost 读写分离
访问的时候,直接访问mycat 的主机和端口,逻辑库名+逻辑表名。