![](https://img-blog.csdnimg.cn/20190911152841158.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
MyCat
MyCat分库分表中间件
每天都要进步一点点
工作日常技术学习、积累、总结
展开
-
MyCat重要概念以及基础配置详解
一、使用场景a. 高可用性和MySQL读写分离:当一台服务器宕机时,由集群中的另外一台服务器自动接管它的工作,持续提供服务,由MyCat自动完成切换。MyCat可以轻松实现读写分离,实现主数据库的插入、更新、删除等写操作,从数据库的查询读操作。 b. 100亿大表水平分片,集群并行计算:将存放在同一个数据库中的数据通过某种规则进行切分,达到分散单台数据库设备负载的效果。(水平切分和垂直切分,...原创 2019-08-23 20:48:39 · 534 阅读 · 0 评论 -
MyCat分片规则之按自然月分片
一、简介一般来说,按自然月份来进行数据分片的规则比较适用于商城系统订单查询,类似最近三个月、最近半年等查询,这样的数据放在一个分片就省去了MyCat进行数据合并的时间, 当然按月分片之后每个自然月分片的数据量不要过大。实现方式:将数据按一年中的月份进行分片,每个自然月对应一个分片。 优点:可以自由地将每个月的数据分开保存。 缺点:由于数据是连续的,其他自然月分片中的资源无法被充分利用。...原创 2019-09-11 09:45:48 · 1251 阅读 · 2 评论 -
MyCat分片规则之一致性hash分片
一、简介实现方式:一致性hash分片,利用一个分片节点对应一个或者多个虚拟hash桶的思想,,尽可能减少分片扩展时的数据迁移。 优点:有效解决了分布式数据库的扩容问题。 缺点:在横向扩展的时候,需要迁移部分数据;由于虚拟桶倍数与分片节点数都必须是正整数,而且要服从"虚拟桶倍数×分片节点数=设计极限",因此在横向扩容的过程中,增加分片节点并不是一台一台地加上去的,而是以一种因式分解的方...原创 2019-09-11 15:21:59 · 1814 阅读 · 0 评论 -
MyCat分片规则之字符串hash解析算法分片
一、简介字符串hash解析分片,其实就是根据配置的hash预算位规则,将截取的字符串进行hash计算后,得到的int数值即为datanode index(分片节点索引,从0开始)。二、字符串hash分片实现步骤:【a】创建数据库和表create database stringhash01;create table user(id bigint not null prim...原创 2019-09-11 15:33:49 · 1600 阅读 · 0 评论 -
MyCat分片规则之固定hash分片
一、简介实现方式:该算法类似于十进制的求模运算,但是为二进制的操作,例如,取 id 的二进制低 10 位 与 1111111111 进行 & 运算。 优点:较灵活,可以均匀分配也可以非均匀分配,各节点的分配比例和容量大小由partitionCount 和 partitionLength两个参数决定 缺点:不方便扩展; 注意:partitionCount 和partitionL...原创 2019-09-11 15:40:46 · 1255 阅读 · 0 评论 -
MyCat之全局表和ER表
一、全局表全局表:如果项目中有一些数据类似数据字段,这种数据一般数据量不会很大,而且改动也比较少,通常这种表可以不需要进行拆分,把它当做全局表进行处理,每个分片都创建一张相同的表,在所有的分片上都保存一份数据。在进行插入、更新、删除操作时,会将sql语句发送到所有分片上进行执行,在进行查询时,也会把sql发送到各个节点。这样避免了跨库JOIN操作,直接与本分片上的全局表进行聚合操作。 特性:...原创 2019-09-16 20:33:18 · 2746 阅读 · 0 评论 -
MyCat基于MySQL实现读写分离
一、简介读写分离:顾名思义,就是将插入、更新、删除等事务性的操作分发到主数据库master上,而将读请求分发到从数据库slave上,利用mysql主从同步,从数据库服务器将同步更新本机数据,这样就保证了两个数据库中数据一致性。 读写分离有几种实现方式,可以在应用层配置多个数据源,根据业务需求访问不同的数据,指定对应的策略,也可以使用动态切换数据源方式实现,也可以借助数据库中间件的方式实现,m...原创 2019-09-25 21:14:14 · 437 阅读 · 0 评论 -
MyCat基于MySQL实现主从切换
一、简介主从切换:顾名思义,就是MySQL写节点出现宕机后,会自动切换到备用节点(也就是把从机也配置成writeHost),这样的话,第一个writeHost故障后,会自动切换到第二个,第二个故障后自动切换到第三个....以此类推;如果当是1主3从模式,可以把第1个从节点配置为writeHost2,第2个和第3个从节点则配置为writeHost1的readHost;一般情况下,都会结合...原创 2019-09-27 20:02:29 · 1275 阅读 · 0 评论 -
Mycat跨库join实现方式总结
一、简介MyCAT 支持跨库表 Join,目前版本仅支持跨库两表 Join。虽然如此,已经能够满足我们大部分的业务场景,毕竟join多表的话,性能也存在一些问题。目前主要方式有: catlet、shareJoin、全局表、ER分片四种方式,本文将主要介绍catlet、全局表以及ER分片方式进行跨库join。二、catlet跨库join【a】创建数据库和表create databa...原创 2019-09-27 20:15:25 · 4511 阅读 · 1 评论 -
MyCat分片规则之ASCII码取模范围分片
一、简介上一篇文章介绍了如何在MyCat中实现取模范围分片,其实还有一个分片方式与它很相似,那就是本节讲解的ASCII码取模范围分片。实现方式:与取模范围算法类似,支持数值、符号、字母取模。根据配置的分片字段,截取长度为 prefixLength 的子串,在对子串中每一个字符的 ASCII 码求和,然后对各个字符的ASCII 码求和值进行取模运算(sum % patternValue),...原创 2019-09-11 09:29:18 · 641 阅读 · 0 评论 -
MyCat分片规则之取模范围分片
一、简介本文介绍另外一种分片规则 --- 取模范围分片,先进行取模运算再根据求余结果范围进行分片。实现方式:该种分片规则首先根据配置的分片字段,与配置的取模基数进行求余操作,根据求余的结果,然后判断在哪一个分片范围内,由此对应到具体某个数据分片上。 优点:可以自由地决定取模后数据的节点分布 缺点:dataNode 划分节点是事先建好的,扩展比较麻烦。二、取模范围分片下面通过...原创 2019-09-09 20:10:28 · 1125 阅读 · 0 评论 -
MyCat分库分表入门示例
一、简介分库:将原本一个数据库中的数据,拆分到多个数据库进行保存,然后我们通过访问一个数据库,在MyCat中成为逻辑库。 分表:如果一个数据表的数据量已经超过千万,那么查询速度会比较慢,这时候可以考虑进行分表操作,将一个表的数据保存到多个表中,这样可以控制单表的数据量。二、作用分库分表的作用可以通过下表对比可见:分库分表作用 分库分表前 分库分表后 并发情况...原创 2019-08-12 21:12:16 · 732 阅读 · 1 评论 -
MyCat全局序列之本地文件方式
一、简介在使用MyCat分库分表之后,如果还是使用MySql中的主键自增的话,已经无法保证这个自增主键在MySql集群中的唯一性了,为了实现全局唯一主键,MyCat提供了好几种方式实现全局唯一主键,分别有:本地文件方式 数据库方式 时间戳方式 分布式 ZK ID生成器 ZK 递增 ID 生成本文将对本地文件方式进行简单的说明,并通过一个示例描述其使用方法。二、本地文件方式...原创 2019-08-30 21:26:28 · 498 阅读 · 0 评论 -
MyCat全局序列之数据库方式
一、简介上一篇文件介绍了MyCat全局序列的本地文件方式,由于MyCat重新发布后,配置文件中的 sequence 会恢复到初始值(当这台机器宕机时会出现,序列文件丢失,造成序列冲突问题),所以在实际项目中并不会采用本地文件生成序列,更多是采用数据库的方式,本文就将对如何在MyCat中使用数据库实现全局序列主键唯一。二、数据库方式实现方式:在数据库中建立一张表MYCAT_SEQUE...原创 2019-08-31 08:59:07 · 548 阅读 · 1 评论 -
MyCat全局序列之本地时间戳方式
一、简介上一篇文件主要讲解了在MyCat中如何实现数据库方式的全局序列,除了上面讲过的本地文件方式以及数据库方式,其实还可以使用本地时间戳方式生成全局唯一序列作为主键,本文将总结时间戳方式实现全局序列作为主键。二、时间戳方式实现方式:ID = 64 位二进制 (42(毫秒)+5(机器 ID)+5(业务编码)+12(重复累加) 换算成十进制为 18 位数的 long 类型,每毫秒可...原创 2019-08-31 21:21:17 · 897 阅读 · 0 评论 -
MyCat分片规则之枚举分片
一、简介在MyCat中,有许多分片规则,比如枚举分片、取模分片、范围分片、一致性hash分片等等,每一种分片规则都需要根据项目中具体的业务已经数据量来决定,所以说没有哪一种分片规则很好,哪一种分片规则就不好,都是依业务来定。本文将对其中一种,也是比较简答的分片规则 - 枚举分片进行简单的介绍,并通过一个示例说明其用法以及规则。二、实现方式按照partition-hash-int-enu...原创 2019-09-01 20:18:39 · 678 阅读 · 0 评论 -
MyCat分片规则之取模分片
一、简介除了上一章总结的枚举分片之外,MyCat中还有一种比较常见的分片 - 取模分片规则,本节将总结如何实现取模分片。二、实现方式实现方式:切分规则根据配置中输入的数值n。此种分片规则将数据分成n份(通常dn节点也为n),从而将数据均匀的分布于各个节点上。优点:可以很好的分散数据库写的压力,比较适合于单点查询的情景。 缺点:不方便扩展;当出现了范围查询,此时需要MyCat去...原创 2019-09-02 21:16:19 · 810 阅读 · 0 评论 -
MyCat分片规则之自定义范围分片
一、实现方式实现方式:范围分片,就是我们自己根据某个字段的数值范围来确定这些数据到底存放在哪一个分片上,不过需要我们提前规划好分片字段某个范围属于哪个分片。切分规则根据文件(autopartition-long.txt)配置的范围来进行切片,根据配置的分片字段取值范围,然后把这一范围的所有数据都插入到该分片。 举个例子:比如将id在0-500W的数据分片在第一个节点上面,将id在500W-1...原创 2019-09-04 21:24:09 · 2275 阅读 · 3 评论 -
MyCat分片规则之程序指定分片
一、简介实现方式:根据指定的分片字段以及分片规则,截取分片字段的字符串子串,根据字符串的子串(必须是数字)计算分区号(由调用方传递参数,显示指定分区号),例如,id=0-zhangsan,其中 id 是从 startIndex = 0,size=1,即截取的子串是0(数字) ,0 就是获取的分区,如果大于分区数,则分配到 defaultPartition 分区中。 优点:可以在运行阶段...原创 2019-09-05 20:17:44 · 334 阅读 · 0 评论 -
MyCat的zookeeper集群模式总结
一、简介本文将介绍ZooKeeper部署管理Mycat,ZK管理mycat的server.xml、schema.xml、rule.xml等一系列配置,ZK修改配置,同一个集群中mycat节点配置自动更新,下面就总结一下如何搭建ZK集群环境管理MyCat配置。二、集群搭建【a】环境准备环境准备虚拟机:CentOS7 jdk版本:1.8.0_161 zookeeper版本:zo...原创 2019-09-30 20:44:03 · 926 阅读 · 0 评论