Mycat单库分表实践
来源:互联网 发布:淘宝便宜婴儿衣服 编辑:程序博客网 时间:2024/06/07 23:49
本文主要讲述Mycat单库分表的步骤,偏实践,不多讲理论。
我们知道数据拆分,有水平拆分和垂直拆分,具体的理论就不在这里赘述了。
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 –u root –p –P9066
reload @@config_all;
第四步,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月的数据
- Mycat单库分表实践
- Mycat生产实践---Mycat最佳实践
- Mycat生产实践---Mycat实施指南
- Mycat开发实践---MyCAT线程模型分析
- mycat单库分表
- Mycat开发实践---开发基础
- Mycat读写分离配置实践
- Mycat开发实践---mycat的连接池模型
- Mycat开发实践---Mycat的网络通信框架
- Mycat系列—生产实践案例-Mycat 读写分离案例
- Mycat实践之六:Mycat 目前存在的限制
- mycat实现mysql读写分离实践
- Mycat生产实践---生产环境部署
- Mycat生产实践---性能调优
- Mycat开发实践---数据库中间件架构分析
- mycat实现mysql读写分离实践
- MyCat生产实践--一致性hash分片&扩容
- MyCat生产实践--一致性hash分片&扩容
- JQuery.Ajax之错误调试帮助信息
- 理解回调函数
- arm体系结构总结笔记2-存储系统综述
- windows连接到linux上的FTP服务器进行文件传输
- python中使用xlrd、xlwt操作excel表格详解
- Mycat单库分表实践
- 开启技术之路
- EventBus3.0源码解析
- leetcode 396. Rotate Function 旋转向量的计算 + 最笨的方法其实挺不错的
- 虚幻4鼠标左键单击音效添加
- php 调用ffmpeg获取视频信息
- tar 从成员名中删除开头的"/"
- cache工具类
- POJ 1125 Stockbroker Grapevine(floyd算法)