Mycat 单库、分表(数据库主键自增长)

首先创建基础表

创建15个(按需创建)分片表,和一个操作表

Mycat 单库、分表(数据库主键自增长)_第1张图片

分片表和操作表结构一样

Mycat 单库、分表(数据库主键自增长)_第2张图片

接着配置MyCat中相差配置文件

一、server.xml

保存了所有mycat需要的系统配置信息


	
		0 
		1
		0  
		0  
		
		1
		
		0
		
		0
		
		1
		
		64k
		
		1k
		0
		
		384m
		
		false
	
	
	
		Yifan123.
		catdb
	

二、schema.xml

Schema.xml作为MyCat中重要的配置文件之一,管理着MyCat的逻辑库、表、分片规则、DataNode以及DataSource。弄懂这些配置,是正确使用MyCat的前提。


	
	
		
		
	
	
		
		select user()
		
		
			
			
		
	
 
  

三、rule.xml

rule.xml里面就定义了我们对表进行拆分所涉及到的规则定义。我们可以灵活的对表使用不同的分片算法,或者对表使用相同的算法但具体的参数不同。这个文件里面主要有tableRule和function这两个标签。在具体使用过程中可以按照需求添加tableRule和function。



	
		
		id
		
		mod-long
	



	
	15

四、设置主键自增长

1. 创建Mycat生成唯一主键所需要的函数(用mysql登录后执行)

注意:其中“INSERT INTO MYCAT_SEQUENCE(NAME,current_value,increment) VALUES ('STU_FILE', 100000, 100);”

插入的是“表名”,“id最小值”及“步长”

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 ;

2. sequence_db_conf.properties

加入 ——  STU_FILE=dn1

#sequence stored in datanode
GLOBAL=dn1
COMPANY=dn1
CUSTOMER=dn1
ORDERS=dn1
STU_FILE=dn1

最后登录MyCat操作(和登录MySQL方式一样)

1. Navicat登录MyCat页面

Mycat 单库、分表(数据库主键自增长)_第3张图片

2. MyCat表组成(自动生成并显示,和MySQL一样)

以后对MyCat的操作,就是对MySQL的操作

Mycat 单库、分表(数据库主键自增长)_第4张图片

3. 对应MySQL表组成

Mycat 单库、分表(数据库主键自增长)_第5张图片



你可能感兴趣的:(MySql)