Mycat搭建分库分表方式!
Mycat搭建分库分表方式!
文章介绍了如何使用分库分表架构来解决单表数据量过大带来的性能和存储容量限制的问题,通过在一对主从复制节点上配置数据源,并使用分片算法将数据分配到不同的数据库表中,可以有效降低单表数据量过大导致的效率问题。
分库分表解决的问题
单表数据量过大带来的性能和存储容量的限制的问题:
- 索引效率下降
- 读写瓶颈
- 存储容量限制
- 事务性能问题
分库分表架构
- 再搭建一对主从复制节点,3307主节点,3309从节点
- 配置数据源 dw1 , dr1,
- 创建集群c1
- 创建逻辑库 CREATE DATABASE clusterdb;
- 创建广播表 BROADCAST代表广播表,意味着所有的数据源都会创建这张表
1
2
3
4
5
6
|
CREATE TABLE clusterdb.`dict_type` ( `id` int (11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键' , `type_id` int (11) NOT NULL COMMENT '业务类型id' , ` name ` varchar (255) DEFAULT NULL COMMENT '名称' , PRIMARY KEY (`id`) USING BTREE )ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT= '类型字典' BROADCAST; |
添加数据
1
2
3
4
5
6
|
INSERT INTO clusterdb.`dict_type` VALUES (1,1, '发货单' ); INSERT INTO clusterdb.`dict_type` VALUES (2,2, '收货单' ); INSERT INTO clusterdb.`dict_type` VALUES (3,3, '出库单' ); INSERT INTO clusterdb.`dict_type` VALUES (4,4, '入库单' ); INSERT INTO clusterdb.`dict_type` VALUES (5,5, '出室单' ); INSERT INTO clusterdb.`dict_type` VALUES (6,6, '入室单' ); |
验证一下是否每个数据节点都有数据
创建分片库表
- 分库分片表就是把数据按照特定的算法,分配到不同的数据库表中,达到降低单表数据量过大导致的效率问题。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
CREATE TABLE clusterdb.orders( `id` int (11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键' , `order_type` int (11) NOT NULL COMMENT '业务类型id' , `order_name` varchar (255) DEFAULT NULL COMMENT '名称' , PRIMARY KEY (`id`) USING BTREE )ENGINE=INNODB DEFAULT CHARSET=utf8 dbpartition BY mod_hash(id) tbpartition BY mod_hash(id) tbpartitions 1 dbpartitions 2; INSERT into clusterdb.orders values (1,1, 'test1' ); INSERT into clusterdb.orders values (2,1, 'test2' ); INSERT into clusterdb.orders values (3,2, 'test3' ); INSERT into clusterdb.orders values (4,3, 'test4' ); INSERT into clusterdb.orders values (5,3, 'test5' ); INSERT into clusterdb.orders values (6,4, 'test6' ); INSERT into clusterdb.orders values (7,5, 'test7' ); INSERT into clusterdb.orders values (8,5, 'test8' ); INSERT into clusterdb.orders values (9,5, 'test9' ); INSERT into clusterdb.orders values (10,5, 'test10' ); |
验证结果
在mycat进行查询 select * from clusterdb.orders; 能得到全部的结果
主节点1,自动创建clusterdb_0 orders_0 并且存放的是id偶数的数据
主节点2,自动创建clusterdb_1 orders_1 并且存放的id是基数的数据
到这里分库分表就成功啦~~
总结
以上为个人经验,希望能给大家一个参考。
学习资料见知识星球。
以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。
快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利!
更多技巧, www.excelbook.cn
欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;
1、价值上万元的专业的PPT报告模板。
2、专业案例分析和解读笔记。
3、实用的Excel、Word、PPT技巧。
4、VIP讨论群,共享资源。
5、优惠的会员商品。
6、一次付费只需129元,即可下载本站文章涉及的文件和软件。
共有 0 条评论