垂直分片Demo - xinwu-yang/cube-java GitHub Wiki

功能描述

Demo描述:使用本地时间戳主键,垂直拆分系统的业务为,db1存放用户表,db2存放订单表。

表结构

db1:

DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (
  `id` varchar(64) NOT NULL,
  `realname` varchar(255) DEFAULT NULL,
  `create_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

db2:

DROP TABLE IF EXISTS `sys_order`;
CREATE TABLE `sys_order` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_id` varchar(64) DEFAULT NULL,
  `desp` varchar(255) DEFAULT NULL,
  `create_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4;

配置server.xml

system节点下配置:

<property name="sequenceHandlerType">2</property>

配置schema.xml

<schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn2">
    <table name="sys_user" primaryKey="id" dataNode="dn1" />
    <table name="sys_order" primaryKey="id" dataNode="dn2" autoIncrement="true" />
</schema>
<dataNode name="dn1" dataHost="25.30.10.224" database="db1" />
<dataNode name="dn2" dataHost="25.30.10.224" database="db2"/>

<dataHost name="25.30.10.224" maxCon="1000" minCon="5" balance="0" writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
    <heartbeat>select user()</heartbeat>
    <writeHost host="hostM1" url="jdbc:mysql://25.30.10.224:3306?characterEncoding=UTF-8" user="root" password="chengxun" />
</dataHost>

启动MyCat

$MYCAT_HOME/bin/mycat start

连接MyCat

jdbc:mysql://ip:8066/TESTDB
⚠️ **GitHub.com Fallback** ⚠️