您的位置:首页 > 其它

cobar文档 - 分库规则配置

2014-04-29 16:31 162 查看
1.场景

本文将给出一个典型的应用场景,并做具体配置说明,假设场景如下:

 - 通过Cobar提供一个名为test的数据库,其中包含t1,t2两张表。
 - 后台有3个MySQL实例(ip:port)为其提供服务,分别为:A,B,C。

 - 期望t1表的数据放置在实例A中,t2表的数据水平拆成四份并在实例B和C中各自放两份。

 - t2表的数据要具备HA功能,即B或者C实例其中一个出现故障,不影响使用且可提供完整的数据服务。

2.图示



3.规则描述

3.1 针对test定义了两条访问规则:

第一条,表示t2表按照rule1规则访问,访问的数据节点范围是dnTest[0-3]。

第二条,test中除定义的t2表,其他表直接访问dnTest数据节点。

SchemaTableRuleDataNode
testt2rule1=func1(id)dnTest[0],dnTest[1],dnTest[2],dnTest[3]
testNULLNULLdnTest
rule1的具体含义是,将t2的id字段值(假设是数字型,如果不是则做一下hash)按1024取模,然后把得到

的值分配在如下区段:[0-255],[256-511],[512-767],[768-1023]该四个区段分别对应dnTest[0-3]四个节点。

3.2 数据节点(DataNode),由主备数据源(DataSource)、心跳语句以及连接池等信息组成。

DataNodeDataSource
dnTestdsTest[0]
dnTest[0]dsTest[1](master), dsTest[5](slave)
dnTest[1]dsTest[2](master), dsTest[6](slave)
dnTest[2]dsTest[3](master), dsTest[7](slave)
dnTest[3]dsTest[4](master), dsTest[8](slave)
3.3 数据源(DataSource),描述了与数据库实例(DBInstance)及实例中schema之间的映射关系。

DataSourceDBInstance
dsTest[0]A/test1
dsTest[1]B/test2 (master)
dsTest[2]B/test3 (master)
dsTest[3]C/test4 (master)
dsTest[4]C/test5 (master)
dsTest[5]C/test2 (slave)
dsTest[6]C/test3 (slave)
dsTest[7]B/test4 (slave)
dsTest[8]B/test5 (slave) 
4.配置文件

注:xxx$0-4 等价于 xxx[0],xxx[1],xxx[2],xxx[3],xxx[4] 是配置的一种缩写方式。

schema.xml 配置

rule.xml 配置

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cobar