mycat配置全局系列号,采用db方式
2018-01-23 18:03
267 查看
先要在对应datanode节点上创建相关表(我这里用的是dn1):
#创建表
CREATE TABLE MYCAT_SEQUENCE (
name VARCHAR (50) NOT NULL comment "名称",
current_value INT NOT NULL comment "当前值",
increment INT NOT NULL DEFAULT 100 comment "步长",
PRIMARY KEY (name)
) ENGINE = INNODB;
#插入对应自增长表
insert into MYCAT_SEQUENCE(name,current_value,increment) values('T_USER',19,5);
#取当前squence的值
DROP FUNCTION IF EXISTS mycat_seq_currval;
DELIMITER $$
CREATE FUNCTION mycat_seq_currval(seq_name VARCHAR(50))RETURNS VARCHAR(64) CHARSET 'utf8'
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 FUNCTION mycat_seq_setval(seq_name VARCHAR(50),VALUE INTEGER) RETURNS VARCHAR(64) CHARSET 'utf8'
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 FUNCTION mycat_seq_nextval(seq_name VARCHAR(50)) RETURNS VARCHAR(64) CHARSET 'utf8'
BEGIN
UPDATE MYCAT_SEQUENCE SET current_value = current_value + increment
WHERE NAME = seq_name;
RETURN mycat_seq_currval(seq_name);
END$$
DELIMITER ;修改数据库my.cnf:
数据库配置文件修改my.ini
log_bin_trust_function_creators=1
# 忽略大小写
lower_case_table_names=1修改schema.xml:(添加主键和自增长配置primarykey和autoIncrement属性)
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="tanlei" checkSQLschema="false" sqlMaxLimit="100">
<table name="t_user" subTables="t_user$1-3" dataNode="dn1" rule="mod-long" primaryKey="id" autoIncrement="true"/>
</schema>
<dataNode name="dn1" dataHost="localhost1" database="tanleidb" />
<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="localhost:3306" user="root" password="root" />
</dataHost>
</mycat:schema>修改sequence_db_conf.properties:
注意对应shcema.xml中table的表名要大写,我这里是T_USER, 对应创建sequence表和存储函数的节点是dn1.
#sequence stored in datanode
GLOBAL=dn1
T_USER=dn1
CUSTOMER=dn1
ORDERS=dn1进入mycat客户端,插入数据:
insert into t_user(userName,age,createTime,updateTime) values('tanlei2',23,now(),now());
查询数据会发现该条数据id已经自增长:
select * from t_user;
不过我们线上id都是用一个只有一列主键自增长id的表维护的!
#创建表
CREATE TABLE MYCAT_SEQUENCE (
name VARCHAR (50) NOT NULL comment "名称",
current_value INT NOT NULL comment "当前值",
increment INT NOT NULL DEFAULT 100 comment "步长",
PRIMARY KEY (name)
) ENGINE = INNODB;
#插入对应自增长表
insert into MYCAT_SEQUENCE(name,current_value,increment) values('T_USER',19,5);
#取当前squence的值
DROP FUNCTION IF EXISTS mycat_seq_currval;
DELIMITER $$
CREATE FUNCTION mycat_seq_currval(seq_name VARCHAR(50))RETURNS VARCHAR(64) CHARSET 'utf8'
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 FUNCTION mycat_seq_setval(seq_name VARCHAR(50),VALUE INTEGER) RETURNS VARCHAR(64) CHARSET 'utf8'
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 FUNCTION mycat_seq_nextval(seq_name VARCHAR(50)) RETURNS VARCHAR(64) CHARSET 'utf8'
BEGIN
UPDATE MYCAT_SEQUENCE SET current_value = current_value + increment
WHERE NAME = seq_name;
RETURN mycat_seq_currval(seq_name);
END$$
DELIMITER ;修改数据库my.cnf:
数据库配置文件修改my.ini
log_bin_trust_function_creators=1
# 忽略大小写
lower_case_table_names=1修改schema.xml:(添加主键和自增长配置primarykey和autoIncrement属性)
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="tanlei" checkSQLschema="false" sqlMaxLimit="100">
<table name="t_user" subTables="t_user$1-3" dataNode="dn1" rule="mod-long" primaryKey="id" autoIncrement="true"/>
</schema>
<dataNode name="dn1" dataHost="localhost1" database="tanleidb" />
<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="localhost:3306" user="root" password="root" />
</dataHost>
</mycat:schema>修改sequence_db_conf.properties:
注意对应shcema.xml中table的表名要大写,我这里是T_USER, 对应创建sequence表和存储函数的节点是dn1.
#sequence stored in datanode
GLOBAL=dn1
T_USER=dn1
CUSTOMER=dn1
ORDERS=dn1进入mycat客户端,插入数据:
insert into t_user(userName,age,createTime,updateTime) values('tanlei2',23,now(),now());
查询数据会发现该条数据id已经自增长:
select * from t_user;
不过我们线上id都是用一个只有一列主键自增长id的表维护的!
相关文章推荐
- MyCat 全局序列号配置(数据库方式)
- laravel 配置全局采用https方式访问
- SpringMVC经典系列-03基于Spring2.5采用XMl配置的方式进行项目开发---【LinusZhu】
- mycat全局系列号的学习和配置
- WCF编程系列(六)以编程方式配置终结点
- spring采用配置方式@Configuration和@Bean的使用
- Spring采用注解方式配置事务
- AR28/AR46系列路由器用地址池方式做nat的典型配置方法
- Redis系列--8、集群配置方式
- 基于maven发送邮件系列(5)----基于quartz定时的另一种方式:配置文件
- 采用文件拷贝的方式配置android开发环境
- SSM框架笔记09:初探Spring——采用Java配置方式
- MyBatis系列之(三):SqlMapConfig.xml全局配置文件解析
- RCP中采用配置perspectiveExtensions方式配置view的方法介绍(转载)
- 常用log4j配置,一般可以采用两种方式
- MyCat源码分析系列之——配置信息和启动流程
- SSO单点登录系列3:cas-server端配置认证方式实践(数据源+自定义java类认证)
- ETL利器Kettle实战应用解析系列三 【ETL后台进程执行配置方式】
- Spring整理系列(13)——基于配置方式实现spring AOP
- ETL利器Kettle实战应用解析系列三 【ETL后台进程执行配置方式】