本文我们来介绍下MyCat的分库分表操作
一、分片规则介绍
在rule.xml
中定义了各种myCat支持的分片规则。
- 取模mod-long
- 自然月分片 sharding-by-month
- 按日期(天)分片sharding-by-date
- 按单月小时拆分sharding-by-hour
- 范围约定,提前规划好分片字段某个范围属于哪个分片,auto-sharding-long
- 范围求模分片
- 取模范围约束sharding-by-pattern
- 分片枚举sharding-by-intfile
- 固定分片hash算法
- 截取数字hash解析sharding-by-stringhash
- 一致性hash
- 日期范围hash分片rangeDateHash
- 截取数字做hash求模范围约束sharding-by-prefixpattern
- 应用指定,在运行阶段有应用自主决定路由到那个分片。sharding-by-substring
- 冷热数据分片 sharding-by-date
- 有状态分片算法
- crc32slot分片算法
注意
:
- id中推荐配置主键列
- 所有的 tableRule 只能使用一次。如果需要为多个表配置相同的分片规则,那么需要在此重新定义该规则。
- 在 crc32Slot 算法中的分片数量一旦给定,MyCat 会将该分片数量和 slor 的取值范围保存到文件中。在次修改分片数量时是不会生效的,需要将该文件删除。文件位置位于 conf目录中的 ruledata 目录中。
二、分库配置
2.1 创建3个数据库
在master
中分别创建3个数据库demo1
,demo2
,demo3
,因为主从的关系会同步到从库中。
create database demo1 default character set utf8;
create database demo2 default character set utf8;
create database demo3 default character set utf8;
2.2 schema.xml配置
修改schema.xml文件中的信息,如下:
select user()
注意
:
- 因为有三个库,所以添加了三个
dataNode
- 使用的分配规则是
crc32slot
- 主从和读写分离设置没有动,所以
writeHost
和readHost
的配置没变
2.3 修改rule.xml文件
因为使用的是crc32slot
算法,且有3个数据库,所以需要修改rule.xml中的配置
同时我们需要删除掉ruledata
目录中的规则文件,不然修改的3
不会起作用
重启mycat服务
查看分配规则
2.3 在mycat中创建t_user表
先删除原来创建的t_user
表,然后通过mycat创建t_user
表示,通过mycat创建会多出来一个_slot
字段。
CREATE TABLE t_user (
`id` INT,
`name` VARCHAR (30),
`age` INT,
PRIMARY KEY (`id`)
) ENGINE = INNODB DEFAULT CHARSET = utf8;
三、分库测试
在mycat客户端插入数据,然后去对应的物理库中查询具体的情况
insert into t_user(id,name,age)values(1,"HG-93",14)
注意
:插入语句的语法要完整,不要偷懒省略字段,尤其是id
自增长!!!
数据按照我们设置的规则分别存储到了各自数据的表结构中了。
然后我们来看下查询操作,通过mycat看能否将所有的数据都查询出来,
关注微信公众号【程序员的梦想】,专注于Java,SpringBoot,SpringCloud,微服务,Docker以及前后端分离等全栈技术。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容- 如何在 Java 中实现对正方形的缩放操作?(如何在Java中对正方形进行缩放操作)
- 如何正确使用 Java 的 join 方法?(java join方法怎么使用)
- Java 中 DecimalFormat 在哪些场景下使用较为合适?(Java DecimalFormat在哪里使用合适)
- 如何确保Redis客户端的安全性:实用技巧与最佳实践
- 在 JavaScript 中如何使用 parentNode?(javascript中的parentNode怎么用)
- 如何高效编码 Java Supplier 接口?(java supplier接口的高效编码技巧)
- 如何进行 Java NoSQL 查询优化?(java nosql查询优化怎样进行)
- Java 中 `equals()` 的核心究竟是什么?(java eques的核心是什么)
- Java代理模式的优缺点分别有哪些?(Java代理模式有哪些优缺点)
- 2024下半年北京软考成绩复查时间及流程
猜你喜欢
AI推送时光机MyCat教程五:实现分库分表
数据库2015-12-28MyCat分库分表实例教程
数据库2023-06-01MyCat怎么实现分库分表
数据库2023-06-01MyCat分库分表--实战01--垂直分库
数据库2024-04-02MyCat分库分表中怎么实现ER分片
数据库2023-06-01MyCat分库分表--实战03--全局表
数据库2024-04-02Mycat简单实现读写分离与分库分表
数据库2024-04-02Mycat分库分表的简单实践
数据库2024-04-02MyCat教程四:实现读写分离
数据库2020-12-19Mycat中怎么实现MySQL单库分表
数据库2023-06-19MyCat分库分表--实战02--分片枚举
数据库2024-04-02借助MyCat如何实现MySQL分库分表的方法
数据库2024-04-02MyCat实现读写分离、分库、全局表的代码
数据库2024-04-02MyCat分库分表--实战07--按日期天
数据库2024-04-02MyCat分库分表--实战09--按单月小时
数据库2024-04-02Mycat读写分离以及拆库拆表综合实验3:通过日志分析mycat路由过程
数据库2024-04-02SpringBoot实现分库分表
数据库2024-04-02 咦!没有更多了?去看看其它编程学习网 内容吧