前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mycat单数据库按日分表

Mycat单数据库按日分表

原创
作者头像
Action
修改2021-09-18 17:45:35
1.5K2
修改2021-09-18 17:45:35
举报
文章被收录于专栏:WEB开发~WEB开发~

准备工作

1、安装Mysql

2、安装Mycat

目标

创建数据库db1,将订单表order每天的数据存在一张表中。

配置Mycat

server.xml文件主要配置

代码语言:txt
复制
<user name="root" defaultAccount="true">
		<property name="password">123456</property>
		<property name="schemas">TESTDB</property>
		<property name="defaultSchema">TESTDB</property>
		<!--No MyCAT Database selected 错误前会尝试使用该schema作为schema,不设置则为null,报错 -->
		
		<!-- 表级 DML 权限设置 -->
		<!-- 		
		<privileges check="false">
			<schema name="TESTDB" dml="0110" >
				<table name="tb01" dml="0000"></table>
				<table name="tb02" dml="1111"></table>
			</schema>
		</privileges>		
		 -->
	</user>

schema.xml

代码语言:txt
复制
<schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" randomDataNode="dn1">
        
        <!--按天分表,需要在数据库中先把表建好,不然操作表的时候会报错-->
		<table name="order" dataNode="dn1"  subTables="order202109$1-5" rule="sharding-by-date" />

</schema>

rule.xml

代码语言:txt
复制
<tableRule name="sharding-by-date">
		<rule>
			<columns>createTime</columns>
			<algorithm>partbyday</algorithm>
		</rule>
</tableRule>

<function name="partbyday"
			  class="io.mycat.route.function.PartitionByDate">
		<property name="dateFormat">yyyy-MM-dd</property>
		<!-- <property name="sNaturalDay">0</property> -->
		<property name="sBeginDate">2021-09-01</property>
		<!-- <property name="sEndDate">2014-01-31</property> -->
		<property name="sPartionDay">1</property>
</function>

配置主键id统一自增

修改sequence_conf.properties文件

代码语言:txt
复制
#ORDER是表名,必须大写 
#CURID是指表的主键id已经使用到1000001了,下一条数据id就是1000002
ORDER.HISIDS=
ORDER.MINID=1001
ORDER.MAXID=99999999999
ORDER.CURID=1000001

修改server.xml文件

代码语言:txt
复制
<property name="sequnceHandlerType">0</property> <!--修改主键生成策略-->

修改schema.xml文件,添加 primaryKey=“id” autoIncrement=“true”

代码语言:txt
复制
<table name="order" dataNode="dn1" primaryKey="id" autoIncrement="true" subTables="order202109$1-5" rule="sharding-by-date" />

启动

执行 mycat start,如下说明启动成功。

代码语言:txt
复制
D:\mycat\bin>mycat start
wrapper  | Starting the Mycat-server service...
wrapper  | Mycat-server started.

测试

在db1中首先创建表

代码语言:txt
复制
CREATE TABLE `order2021091` (`id`  int(11) NOT NULL AUTO_INCREMENT COMMENT '编号' ,`uid`  int(11) NULL COMMENT '用户编号' ,`createTime`  date NOT NULL COMMENT '创建时间' ,PRIMARY KEY (`id`));

CREATE TABLE `order2021092` (`id`  int(11) NOT NULL AUTO_INCREMENT COMMENT '编号' ,`uid`  int(11) NULL COMMENT '用户编号' ,`createTime`  date NOT NULL COMMENT '创建时间' ,PRIMARY KEY (`id`));

CREATE TABLE `order2021093` (`id`  int(11) NOT NULL AUTO_INCREMENT COMMENT '编号' ,`uid`  int(11) NULL COMMENT '用户编号' ,`createTime`  date NOT NULL COMMENT '创建时间' ,PRIMARY KEY (`id`));

CREATE TABLE `order2021094` (`id`  int(11) NOT NULL AUTO_INCREMENT COMMENT '编号' ,`uid`  int(11) NULL COMMENT '用户编号' ,`createTime`  date NOT NULL COMMENT '创建时间' ,PRIMARY KEY (`id`));

CREATE TABLE `order2021095` (`id`  int(11) NOT NULL AUTO_INCREMENT COMMENT '编号' ,`uid`  int(11) NULL COMMENT '用户编号' ,`createTime`  date NOT NULL COMMENT '创建时间' ,PRIMARY KEY (`id`));

连接Mycat,插入数据

代码语言:txt
复制
INSERT INTO `order` (`uid`, `createTime`) VALUES('1', '2021-09-01');
INSERT INTO `order` (`uid`, `createTime`) VALUES('2', '2021-09-02');
INSERT INTO `order` (`uid`, `createTime`) VALUES('3', '2021-09-03');
INSERT INTO `order` (`uid`, `createTime`) VALUES('4', '2021-09-04');
INSERT INTO `order` (`uid`, `createTime`) VALUES('5', '2021-09-05');

执行完成后,检查db1库中的表的数据

表order2021091

表order2021092

表order2021093

表order2021094

表order2021095

连接Mycat,查询数据

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备工作
  • 目标
  • 配置Mycat
  • 配置主键id统一自增
  • 启动
  • 测试
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档