mycat:水平分库之范围分库和Hash分库

Posted 纯洁的明依

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mycat:水平分库之范围分库和Hash分库相关的知识,希望对你有一定的参考价值。

2.1范围分库


所谓的范围分库指的是可以根据你的id的范围进行不同数据库的保存,或者

是根据你的数据库的数据大小来进行保存进行的一种处理机制。

1、【mycat-server-01】定义一个新的分片规则:vim/usr/local/mycat/conf/rule.xml

mycat:水平分库之范围分库和Hash分库

设置该分片处理所使用的算法:

mycat:水平分库之范围分库和Hash分库

此时需要设置一个分片的规则文件:orders-partition-long.txt

2、【mycat-server-01】编写具体的分片规则:vim/usr/local/mycat/conf/orders-partition-long.txt

mycat:水平分库之范围分库和Hash分库

3、【mycat-server-01】更换分片规则:vim/usr/local/mycat/conf/schema.xml


<tablename="orders"primaryKey="oid"dataNode="dn1,dn2,dn3"rule="myorders-auto-sharding-long"/>

那么随后启动mycat服务:/usr/local/mycat/bin/mycatconsole;追加数据:INSERTINTOorders(oid,title,pubdate)VALUES(11,@@hostname,'2020-01-01');这个时候将根据订单的编号来选择不同的分片进行数据的存储



2.2Hash分库

Hash分库可以实现根据不同的编号保存到不同的数据库的操作,例如:假设说现在要求按照所在的地区进行分库的保存,这种情况就称为hash分库处理。

1、【mycat-server-01】设置一个新的分片规则:vim/usr/local/mycat/conf/rule.xml

·增加新的分片项:此时title的可选内容一定是固定的;

mycat:水平分库之范围分库和Hash分库

·增加相应的算法配置:

对于hash分片需要设置它一个分片的数据类型:

·type=0:表示数字型分片;

·type=1:描述的是字符串分片。

·建立hash分片原则配置文件:

vim/usr/local/mycat/conf/myorders-partition-hash-int.txt

那么此时title可以设置的内容就只有以上的几点了。

2、【mycat-server-01】配置mycat分片规则:vim/usr/local/mycat/conf/schema.xml

<tablename="orders"primaryKey="oid"dataNode="dn1,dn2,dn3"rule="myorders-by-intfile"/>

3、【mycat-server-01】启动mycat服务:/usr/local/mycat/bin/mycatconsole

允许你追加的title的内容是有限的。

INSERTINTOorders(oid,title,pubdate)VALUES(13,'sh','2020-01-01');

一般而言如果要想实现Hash的分片处理,往往需要有一些固定的数据信息出现,例如:按照省份分片,按照城市分片。


以上是关于mycat:水平分库之范围分库和Hash分库的主要内容,如果未能解决你的问题,请参考以下文章

MySQL之分库分表(MyCat)

MySQL之分库分表(MyCAT实现)

MyCat水平分库

Mycat+分库分表

Docker安装Mycat和Mysql进行水平分库分表实战图文教学

Mycat 读写分离+分库分表