数据库配置,在真实的物理数据库配置,生成如下表和函数
DROP TABLE IF EXISTS MYCAT_SEQUENCE;
CREATE TABLE MYCAT_SEQUENCE (
NAME VARCHAR (50) NOT NULL,
current_value INT NOT NULL,
increment INT NOT NULL DEFAULT 100,
PRIMARY KEY (NAME)
) ENGINE = INNODB ;
INSERT INTO MYCAT_SEQUENCE(NAME,current_value,increment) VALUES ('GLOBAL', 100000, 100);
DROP FUNCTION IF EXISTS `mycat_seq_currval`;
DELIMITER ;;
CREATE FUNCTION `mycat_seq_currval`(seq_name VARCHAR(50))
RETURNS VARCHAR(64) CHARSET utf8
DETERMINISTIC
BEGIN DECLARE retval VARCHAR(64);
SET retval="-999999999,null";
SELECT CONCAT(CAST(current_value AS CHAR),",",CAST(increment AS CHAR) ) INTO retval
FROM MYCAT_SEQUENCE WHERE NAME = seq_name;
RETURN retval ;
END
;;
DELIMITER ;
DROP FUNCTION IF EXISTS `mycat_seq_nextval`;
DELIMITER ;;
CREATE FUNCTION `mycat_seq_nextval`(seq_name VARCHAR(50)) RETURNS VARCHAR(64)
CHARSET utf8
DETERMINISTIC
BEGIN UPDATE MYCAT_SEQUENCE
SET current_value = current_value + increment
WHERE NAME = seq_name;
RETURN mycat_seq_currval(seq_name);
END
;;
DELIMITER ;
DROP FUNCTION IF EXISTS `mycat_seq_setval`;
DELIMITER ;;
CREATE FUNCTION `mycat_seq_setval`(seq_name VARCHAR(50), VALUE INTEGER)
RETURNS VARCHAR(64) CHARSET utf8
DETERMINISTIC
BEGIN UPDATE MYCAT_SEQUENCE
SET current_value = VALUE
WHERE NAME = seq_name;
RETURN mycat_seq_currval(seq_name);
END
;;
DELIMITER ;
看到数据,如下,新增需要加入索引的表
insert into MYCAT_SEQUENCE (name,current_value,increment) values ('AGENT_LOG',0,1);
下一步配置
再次可以使用如下命令进行验证
SELECT mycat_seq_nextval('doubi');
SELECT * FROM MYCAT_SEQUENCE;
配置schema.xml

agent_log表:主键是ID,autoIncrement="true"表示这个表的主键是自增长的,是逻辑表的主键自增长,dataNode是分片节点,rule是分片规则。
mycat_sequence表:主键是name,dataNode是在其中一个分片节点下
配置server.xml文件
配置conf下sequence_db_conf.properties文件
然后新增数据的sql自增长主键的值不要写,如果发现mycat_sequence变化了,那就说明设置是成功的
主要看下图标红的地方每次新增加1,证明配置是成功的。