mycat全局序列号

mycat在分库分表场景下,通过全局序列号确保主键全局唯一。提供了本地文件、数据库和时间戳三种实现方式。本地文件方式快速但重启后需重置;数据库方式通过维护序列表实现,适合多实例;时间戳方式简单但ID较长。配置涉及server.xml、schema.xml和相关配置文件。

目录

第一章:mysql的主从复制之一主一从
第二章:mysql的主从复制之双主双从
第三章:mycat实现数据库的读写分离
第四章:mycat实现mysql分库(垂直切分)
第五章:mycat实现mysql分库(水平切分)
第六章:mycat ER表与全局表
第七章:mycat全局序列号

全局序列号

在实现分库分表的情况下,数据库自增主键已经无法保证自增主键的全局唯一,为此,mycat提供了全局sequence,并且提供了包含本地配置、数据库配置和时间戳等多种实现方式。如果需要切换其获取方式可以修改sequnceHandlerType 的值来实现:

字段 含义
sequnceHandlerType 0 本地配置
sequnceHandlerType 1 数据库配置
sequnceHandlerType 2 时间戳配置
1、本地文件方式

​ 使用此方式的时候,mycat讲sequence配置到文件中,当使用到sequence中的配置,mycat会更新sequence_conf.properties文件中sequence当前的值。

配置方式:

​ 在 sequence_conf.properties 文件中做如下配置:

GLOBAL_SEQ.HISIDS=
GLOBAL_SEQ.MINID=10001
GLOBAL_SEQ.MAXID=20000
GLOBAL_SEQ.CURID=10000

​ 其中 HISIDS 表示使用过的历史分段(一般无特殊需要可不配置), MINID 表示最小 ID 值, MAXID 表示最大
ID 值, CURID 表示当前 ID 值。
​ server.xml 中配置:

<system><property name="sequnceHandlerType">0</property></system>

​ 注: sequnceHandlerType 需要配置为 0,表示使用本地文件方式。

​ 案例使用:

create table tab1(id int primary key,name varchar(10));
insert into tab1(id,name) values(next value for mycatseq_global,'test1');
insert into tab1(id,name) values(next value for mycatseq_global,'test2');
insert into tab1(id,name) values
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值