mycat 分片

分片枚举

上面columns 标识将要分片的表字段,algorithm 分片函数,

其中分片函数配置中,mapFile标识配置文件名称,type默认值为00表示Integer,非零表示String

所有的节点配置都是从0开始,及0代表节点1

/**
*  defaultNode
默认节点:小于0表示不设置默认节点,大于等于0表示设置默认节点,结点为指定的值
*
默认节点的作用:枚举分片时,如果碰到不识别的枚举值,就让它路由到默认节点
*                如果不配置默认节点(defaultNode值小于0表示不配置默认节点),碰到
*                不识别的枚举值就会报错,
*                like thiscan't find datanode for sharding column:column_name val:ffffffff   
*/

  1. 范围约定 此分片适用于提前规划好分片字段某个范围属于哪个分片
  2. 求摸法  根据id进行十进制求摸运算,运算结果为分区索引  注意:数据库节点分片数量无法更改。

 

 rule.xml 文件新增

<tableRule name="role1">

        <rule>

            <columns>id</columns>

            <algorithm>mod-long</algorithm>

        </rule>

    </tableRule>

     <function name="mod-long" class="io.mycat.route.function.PartitionByMod">

        <!--指定分片数量,不可以被更改-->

        <property name="count">3</property>

</function>

 

schema.xml

<table name="user_info" dataNode="dn1,dn2,dn3" rule="role1"/>

数据库表结构

CREATE TABLE `user_info` (

  `id` int(11) DEFAULT NULL,

  `name` varchar(255) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

 

  1. 日期列分区法 按日期(天)分片

关闭防火墙:systemctl stop firewalld.service

yum -y install net-tools

netstat -tunlp | grep 1984

kill -9  2408

CREATE TABLE `user_info` (

  `id` int(11) NOT NULL,

  `name` varchar(255) DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值