mycat設置主鍵自增—sequence的配置

mycat參數文件配置

1. 配置server.xml文件

(#0 代表文件方式,#1 代表數據庫方式,#2 代表本地時間戳方式)
<property name="sequnceHandlerType">1</property>

配置server.xml

2. 數據庫配置

#所有操作都在一個物理數據庫(dn1)上
#創建 MYCAT_SEQUENCE 表
#name sequence 名稱
#current_value 當前 value
#increment 增長步長!   
#mycat在數據庫中一次讀取多少個sequence 

DROP TABLE IF EXISTS MYCAT_SEQUENCE;
CREATE TABLE MYCAT_SEQUENCE (
  `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '名稱',
  `current_value` int(11) NOT NULL COMMENT '當前值',
  `increment` int(11) NOT NULL DEFAULT 1 COMMENT '步長',
  PRIMARY KEY (`name`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

#插入一條 sequence
INSERT INTO MYCAT_SEQUENCE(name,current_value,increment) VALUES (‘PERSON’,
100000, 100);

#創建相關 function
#獲取當前 sequence 的值 (返回當前值,增量)
DROP FUNCTION IF EXISTS mycat_seq_currval;
DELIMITER ;;
CREATE DEFINER=`root`@`%` 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 ;


#設置 sequence 值
DROP FUNCTION IF EXISTS mycat_seq_setval;
DELIMITER ;;
CREATE DEFINER=`root`@`%` 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 ;

#獲取下一個 sequence 值
DROP FUNCTION IF EXISTS `mycat_seq_nextval`;
DELIMITER ;;
CREATE DEFINER=`root`@`%` 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 ;

3. 修改mycat 相關配置

sequence_db_conf.properties
#sequence stored in datanode
GLOBAL=dn1
COMPANY=dn1
CUSTOMER=dn1
ORDERS=dn1
SYS_USER=dn1
TBL_MEMBER=dn1

在這裏插入圖片描述

配置schema.xml
<schema name="DB1" checkSQLschema="false" sqlMaxLimit="100">
	<table name="sys_user" primaryKey="user_id" autoIncrement="true" dataNode="dn$1-2" rule="rule1" splitTableNames ="true"/>            
</schema>

<dataNode name="dn$1-2" dataHost="localhost1" database="db$1-2" />

<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
	<heartbeat>select user()</heartbeat>
	<writeHost host="hostM1" url="xxxx:8066" user="mycat" password="xxxxxx">
	</writeHost>
</dataHost>

4. 重啓mycat

./mycat restart
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章