MyCat全局序列之本地文件方式

一、简介

在使用MyCat分库分表之后,如果还是使用MySql中的主键自增的话,已经无法保证这个自增主键在MySql集群中的唯一性了,为了实现全局唯一主键,MyCat提供了好几种方式实现全局唯一主键,分别有:

  • 本地文件方式
  • 数据库方式
  • 时间戳方式
  • 分布式 ZK ID生成器
  • ZK 递增 ID 生成

本文将对本地文件方式进行简单的说明,并通过一个示例描述其使用方法。

二、本地文件方式

此方式 MyCat 将 sequence 配置到文件中,当使用到 sequence 中的配置后,MyCat会更新sequence_conf.properties 文件中 sequence 当前的值(currentValue)。

具体步骤如下:

【a】sequence_conf.properties配置:

ORDER.HISIDS=
ORDER.MINID=1001
ORDER.MAXID=2000
ORDER.CURID=1000

ORDERDETAIL.HISIDS=
ORDERDETAIL.MINID=1001
ORDERDETAIL.MAXID=2000
ORDERDETAIL.CURID=1000

MyCat全局序列之本地文件方式_第1张图片

【b】server.xml中执行序列生成方式sequnceHandlerType=0为本地文件方式:

0

【c】server.xml配置逻辑库以及MyCat访问的用户信息:

 
                123456
                mycat_order

                
                
        

        
                123456
                mycat_order
                true
        

MyCat全局序列之本地文件方式_第2张图片

【d】schema.xml配置分片节点、节点主机等信息:

 
                
select user() select user()

MyCat全局序列之本地文件方式_第3张图片

【e】rule.xml配置分片规则:

 
                
                        order_id
                        mod-long
                
        

 
                
                2
        

【f】接着启动MyCat进行测试,使用序列插入主键:

INSERT INTO `t_order`
            (`order_id`,
             `user_id`,
             `pay_mode`,
             `amount`)
VALUES ( 1187215745596133376,101,1,111.1);

INSERT INTO `t_order`
            (`order_id`,
             `user_id`,
             `pay_mode`,
             `amount`)
VALUES ( 1187215745596133377,102,5,222.2);

INSERT INTO `t_order`
            (`order_id`,
             `user_id`,
             `pay_mode`,
             `amount`)
VALUES ( 1187215745596133378,103,7,333.3);
select * from t_order;

其中MYCATSEQ_ORDER对应序列名称ORDER,同理,使用order_detail为 1187215745596133379

【g】测试结果:

MyCat全局序列之本地文件方式_第4张图片

可见,此时order_id已经根据本地配置自动增长:

MyCat全局序列之本地文件方式_第5张图片

MyCat全局序列之本地文件方式_第6张图片

如果需要详细的实现步骤,可以参考前面的一篇文件,https://blog.csdn.net/Weixiaohuai/article/details/99334650,这个入门示例也是使用的本地文件实现全局序列,保证主键全局唯一。

 

三、总结

在实际项目中,一般也不会采用本地文件方式生成主键,下面是其优缺点:

  • 优点:本地加载,读取速度较快。
  • 缺点:当 MyCAT 重新发布后,配置文件中的 sequence 会恢复到初始值。

以上就是关于MyCat中使用本地文件生成序列的总体步骤,建议小伙伴们都动手实现一次,这样印象就比较深刻。

 

你可能感兴趣的:(MyCat)