《Mycat分布式数据库架构》之全局自增ID

本文详细介绍了在Mycat分布式数据库架构中如何配置和使用全局自增序列,以解决分库分表场景下主键唯一性的问题。通过配置sequence_conf.properties文件、server.xml和schema.xml,设置序列参数并重启Mycat,实现了数据插入时的全局唯一ID。此外,还展示了如何通过自定义序列名称进行数据插入。
摘要由CSDN通过智能技术生成

文章目录

前文回顾:
《Mycat分布式数据库架构》之原理及架构
《Mycat分布式数据库架构》之搭建详解
《Mycat分布式数据库架构》之配置详解
《Mycat分布式数据库架构》之数据切分和读写分离
《Mycat分布式数据库架构》之故障切换
《Mycat分布式数据库架构》之数据切分实战



在前面的文章中,我将EMPLOYEES表的EMPLOYEE_ID设置为自增ID,创建了一个名为“EMPLOYEES_SEQ”的序列,起始值为100,步长为1,不缓存,不循环。

这就有一个问题,在实现分库分表的情况下,数据库自增主键已经无法保证在集群中是全局唯一的主键,因此,mycat提供了全局的sequence,实现方式主要有本地文件方式、数据库方式和本地时间戳方式。

1、首先在mycat/conf目录下的sequence_conf.properties文件中增加如下配置。

EMPLOYEES.HISIDS=
EMPLOYEES.MINID=101
EMPLOYEES.MAXID=1000000000
EMPLOYEES.CURID=100

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

2、在server.xml中配置如下参数。

<system>
    # 0 表示使用本地文件方式。
    <property name="sequnceHandlerType">0</property>
</system>

3、在schema.xml的table标签中将autoIncrement设置为true

<table name="EMPLOYEES" primaryKey="EMPLOYEE_ID"  autoIncrement="true" dataNode="datanode01,datanode02" rule="EMPLOYEES"/>

4、重启mycat

./mycat restart

接下来向mycat添加数据,如下,全局自增ID会按照配置的方式进行增加。

INSERT INTO EMPLOYEES(LAST_NAME,EMAIL,PHONE_NUMBER,HIRE_DATE,SALARY,JOB_ID,DEPARTMENT_ID)
 VALUES('李华','lihua@126.com','18487254631',sysdate,7200,'coder',12);
INSERT INTO EMPLOYEES(LAST_NAME,EMAIL,PHONE_NUMBER,HIRE_DATE,SALARY,JOB_ID,DEPARTMENT_ID)
 VALUES('张三','zhangsan@126.com','18487261631',sysdate,8200,'coder',12);

在这里插入图片描述
在sequence_conf.properties配置文件中也可自定义名称,如下

GLOBAL_EMP.HISIDS=
GLOBAL_EMP.MINID=101
GLOBAL_EMP.MAXID=1000000000
GLOBAL_EMP.CURID=100

这里在插入数据时需要使用如下方式

INSERT INTO EMPLOYEES(EMPLOYEE_ID,LAST_NAME,EMAIL,PHONE_NUMBER,HIRE_DATE,SALARY,JOB_ID,DEPARTMENT_ID)
 VALUES(next value for MYCATSEQ_GLOBAL_EMP,'李华','lihua@126.com','18487254631',sysdate,7200,'coder',12);


更多技术干货,请持续关注程序员大佬超。
原创不易,转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员大佬超

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值