参考

https://blog.csdn.net/sq2006hjp/article/details/78732227

Mycat采用的水平拆分,不管是分库还是分表,都是水平拆分的。分库是指,把一个大表的数据,分为多个同名的表,分别存到不同的数据库;分表是指,把一个大表,拆成多个不同名的表,放在一个数据库里。这里不论是分库还是分表,分拆出来的表字段都是跟原表一模一样的。

Mycat提供的分片方案有很多,这里选用按月分片这个方案来分片,也就是说每个自然月的数据,会分到相应的表里面。

而这些表,都在咱们配置的db4这个库里面。

第一步:配置schema.xml

在schema 里设置测试表sqtestmonth,

定义分表的表明规则:subTables="sqtestmonth2017$1-12"

指定dataNode:dataNode="dn4"

设定分片规则:rule="sharding-by-month"

<table name="sqtestmonth" primaryKey="ID" subTables="sqtestmonth2017$1-12" dataNode="dn4" rule="sharding-by-month" />

<dataNode name="dn4" dataHost="localhost1" database="db4" />

<writeHost host="hostM1" url="localhost:3307" user="root"

password="123456">

第二步,配置rule.xml

设置日期格式和开始日期

<function name="partbymonth"

class="io.mycat.route.function.PartitionByMonth">

<property name="dateFormat">yyyy-MM-dd</property>

<property name="sBeginDate">2017-01-01</property>

</function>

<tableRule name="sharding-by-month">

<rule>

<columns>create_time</columns>

<algorithm>partbymonth</algorithm>

</rule>

</tableRule>

第三步,9066 load config,无需重启Mycat

mysql -uroot -proot -P9066 -h127.0.0.1

mysql> reload @@config;

Query OK, 1 row affected (0.12 sec)

Reload config success

第四步,mysql db4 建表

CREATE TABLE `sqtestmonth20171` (`id` int not null,`name` varchar(60) NULL, create_time DATE ,PRIMARY KEY (`id`));

CREATE TABLE `sqtestmonth20172` (`id` int not null,`name` varchar(60) NULL, create_time DATE ,PRIMARY KEY (`id`));

CREATE TABLE `sqtestmonth20173` (`id` int not null,`name` varchar(60) NULL, create_time DATE ,PRIMARY KEY (`id`));

CREATE TABLE `sqtestmonth20174` (`id` int not null,`name` varchar(60) NULL, create_time DATE ,PRIMARY KEY (`id`));

第五步,MYCAT 8066 插入数据

insert into sqtestmonth (id,name,create_time) values(1,'sq1', '2017-1-12');

insert into sqtestmonth (id,name,create_time) values(2,'sq2', '2017-1-22');

insert into sqtestmonth (id,name,create_time) values(3,'sq3', '2017-2-5');

insert into sqtestmonth (id,name,create_time) values(4,'sq4', '2017-2-12');

insert into sqtestmonth (id,name,create_time) values(5,'sq5', '2017-3-12');

结果:

1月的数据,都插入到了sqtestmonth20171这个表里面

2月的数据,都插入到了sqtestmonth20172这个表里面

3月的数据,都插入到了sqtestmonth20173这个表里面

最新文章

  1. iOS 线性滚动
  2. while 循环
  3. 重新想象 Windows 8 Store Apps (66) - 后台任务: 下载和上传
  4. BW增强数据源的两种方法
  5. 【英语】Bingo口语笔记(60) - 口语中的浊化发音
  6. 使用mp4v2将H264+AAC合成mp4文件
  7. 如何避免JavaScript的内存泄露及内存管理技巧
  8. SDUT OJ 2783 小P寻宝记
  9. Python 随即生成DAG(有向无环图)
  10. Sequence operation(线段树区间多种操作)
  11. iOS开发针对SQL语句的封装
  12. Mybatis学习(七)————— mybatis的逆向工程的配置详解
  13. TypeScript体系调研报告
  14. 模板引擎ejs入门学习
  15. AJPFX技术分析入门
  16. Git和Gitlab协同工作
  17. 【CF870F】Paths 分类讨论+数学
  18. D3 drag
  19. 记2019年目标之一没有996的大数据分析BI实战历程
  20. Python:字符串操作总结

热门文章

  1. ASP调用WEBSERVICE并对返回结果进行解析时遇到的问题
  2. webstorm编写vue、react 将大驼峰组件命名转换成短横杠命名
  3. 高可用服务之Keepalived基础入门
  4. C009:产品格式化输出
  5. MySQL查询point类型类型的坐标,返回经度纬度
  6. Java 9天入门(黑马程序员) 课程收尾 ------学生管理系统 (9.13)
  7. Robotframework自动化7-数据库连接
  8. Fiddler的基本界面介绍
  9. python循环输出
  10. Jmeter测试工具