mycat:水平分库之按月分库
Posted 纯洁的明依
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mycat:水平分库之按月分库相关的知识,希望对你有一定的参考价值。
2.4、按月分片
如果你现在一年的数据量都非常的大,或者是说你每一个月的数据量都非常庞大,那么此时最好的做法是进行按照不同的月分片。那么你应该准备出12个数据库来实现你的操作,可是不要忘记了,12个数据库还需要12个从数据库进行配置。
1、【mycat-server-01】修改分片规则文件:vim/usr/local/mycat/conf/rule.xml;
·定义一个分片规则:
·定义分片的使用算法:
2、【mycat-server-01】修改mycat的配置文件:vim/usr/local/mycat/conf/schema.xml
·mysql-server-01:1~4;
·mysql-server-02:5~8;
·mysql-server-03:9~12
3、【mycat-server-01】启动mycat服务:/usr/local/mycat/bin/mycatconsole
如果现在要是建立了12个主机,那么一定观察很给力。
2.5、ER模型分片(子表分片)
一般在进行购物系统建立的时候往往都会建立这样的一种机制:假设说,现在有一个订单,那么订单里面一定要对应有多个订单的详情信息,以详细的描述出用户所购买的全部商品。那么这个订单的详细信息的数据存储,那么这个订单详情的数据一定要对应有一个订单的数据信息,这个数据应该保存在订单记录同样的数据库里面。
1、【mysql-server-*】建立数据库脚本:
DROPDATABASEIFEXISTSmdb;
CREATEDATABASEmdbCHARACTERSETUTF8;
usemdb;
2、【mycat-server-01】修改mycat规则:vim/usr/local/mycat/conf/schema.xml;
3、【mycat-server-01】启动mycat服务:/usr/local/mycat/bin/mycatconsole;
4、【mysql-server-*】连接mycat进行测试
·追加订单数据:
INSERTINTOorders(oid,title,pubdate)VALUES(11,@@hostname,'2020-01-01');
INSERTINTOorders(oid,title,pubdate)VALUES(12,@@hostname,'2020-01-01');
·追加订单详情:
INSERTINTOorders_details(odid,oid,gtitle,amount)VALUES
(1001,11,'java',100);
此时orders_details作为子表会与父表保存在同一个数据库里面。
3、总结
Mycat是库表分离最好的设计理念实现。库表分离的理论价值很高,互联网公司都会使用它。
以上是关于mycat:水平分库之按月分库的主要内容,如果未能解决你的问题,请参考以下文章
每期一个小窍门(003): mycat实现单库按月分表 (可以跨年)