一、范围分片

  根据指定的字段及其配置的范围与数据节点的对应情况,来决定该数据属于哪一个分片。

  MySQL运维8-Mycat分库分表之范围分片-LMLPHP

  说明1:范围分片会提前提供一个分片的范围默认是0-500万是一个分片,500万-1000万是一个分片,1000万-1500万是一个分片,超过1500万要重新设置。

  说明2:这个范围我们可以根据自己的需要去自定义使用。

  MySQL运维8-Mycat分库分表之范围分片-LMLPHP

  说明3:在配置schema.xml的时候,默认的分片规则 rule="auto-sharding-long" 就是范围分片规则

  说明4:在rule.xml中有auto-sharding-long的定义,其分片的依据是 id 主键

  说明5:在rule.xml中有auto-sharding-long的定义,其采用的算法是 rang-long 算法

  说明6:在function rang-long中有一个property 属性,该属性引用了一个外部文件 “autopartition-long.txt” 文件,在这个文件中就是定义分片的范围,如果我们要实现自定义数据分片即修改该文件中的范围即可。

二、准备工作

  MySQL运维8-Mycat分库分表之范围分片-LMLPHP

  说明1:在三个数据数据节点上都先创建好需要使用的数据库range_db

三、配置schema.xml

  MySQL运维8-Mycat分库分表之范围分片-LMLPHP

  说明1:新增schema标签,逻辑库的名称为range_db,逻辑表的名称为tb_range

  说明2:分片规则为 rule="auto-sharding-long" 即范围分片

  MySQL运维8-Mycat分库分表之范围分片-LMLPHP

  说明3:dn7,dn8,dn9对应的数据节点依然是dbhost1,dbhost2,dbhost3.

  MySQL运维8-Mycat分库分表之范围分片-LMLPHP 

  说明4:dbhost1数据节点为192,168.3.90

  说明5:dbhost2数据节点为192.168.3.91

  说明5:dbhost3数据节点为192.168.3.92

四、配置server.xml

  MySQL运维8-Mycat分库分表之范围分片-LMLPHP

  说明1:给root用户添加range_db的操作权限

五、范围分片测试

  首先重启Mycat

  MySQL运维8-Mycat分库分表之范围分片-LMLPHP

  登录Mycat

  MySQL运维8-Mycat分库分表之范围分片-LMLPHP

  查看逻辑库逻辑表

  MySQL运维8-Mycat分库分表之范围分片-LMLPHP

  这里的tb_range只是逻辑库,而在MySQL中还并没有tb_range这个表,需要在Mycat中创建

create table tb_range (id int auto_increment primary key, name varchar(20));
12-19 01:19