美文网首页
基于mycat一致性hash分表与扩容

基于mycat一致性hash分表与扩容

作者: Newzer | 来源:发表于2020-09-23 10:45 被阅读0次

这两天项目中接到一个需求,好友系统,由于用户量比较多,好友关系又是多对多的关系,因此,到后期数据会急剧上升,因此需要分表,并且后期可以扩容。(单库多表)

1,首先是完成分表,这里分成20个表

Schema.xml文件配置如下

这里只配置单节点分表,分片规则为hash一致性分片

Rule.xml文件

 根据user_id进行分片

分片方法中的count字段配置为分表的个数即可,注释为数据库节点数量不对,亲测:我只有一个节点,配置为1,插入的数据全到表0中去了。

登录mycat的数据端口查询数据验证:全部的数据

查询某个用户的数据

可以看到只查询了7表,至此,完成了分表。

考虑到后期数据会增大,20个表不够,所以需要扩容,扩容为单库50个表,也就是在原来的基础上新增30个表,同样用脚本先建好表。

3,扩容操作

1)复制 schema.xml、rule.xml 并重命名为 newSchema.xml、newRule.xml 放于 conf 目录下,必须命名为这两个文件名称,且在执行扩容操作之前,因为后续执行扩容脚本时会用到这两个文件名。

2)修改newSchema.xml、newRule.xml这两个文件的参数配置

只需要修改这两个地方就好了

3)修改 conf 目录下的 migrateTables.properties 配置文件,配置需要扩容的表,由于节点中只有一个表的分片表,因此,这个文件不用改。

4)修改 bin 目录下的 dataMigrate.sh 脚本文件,这个文件是扩容执行脚本文件,只需要配置一个参数,配置mysql的bin目录

5)执行dataMigrate.sh脚本,完成扩容

6)将newSchema.xml 和 newRule.xml 重命名为 schema.xml 和 rule.xml 并替换掉原文件,重启 mycat 服务,整个扩容缩容过程完成。

验证:

可以看到新插入的数据已经到了30表,但这里有个问题是,扩容前的数据还在原来的表中,并没有重新分到别的表,不知道是因为数据少(原来只有3条)的原因还是什么。至此完成了扩容。

相关文章

  • 基于mycat一致性hash分表与扩容

    这两天项目中接到一个需求,好友系统,由于用户量比较多,好友关系又是多对多的关系,因此,到后期数据会急剧上升,因此需...

  • 数据库hash分表后的扩容方案

    postgres的hash分表不停机扩容方案原来我们hash分表之后,数据扩容采用的是rehash,这样迁移全部的...

  • Mycat,入门篇

    Mycat是什么 Mycat是一款基于阿里开源产品Cobar而研发的开源数据库分库分表中间件(基于Java语言开发...

  • Mycat,入门篇

    Mycat是什么 Mycat是一款基于阿里开源产品Cobar而研发的开源数据库分库分表中间件(基于Java语言开发...

  • Mycat,入门篇

    Mycat是什么 Mycat是一款基于阿里开源产品Cobar而研发的开源数据库分库分表中间件(基于Java语言开发...

  • 基于mycat的分表分库

    一、schema.xml配置 二、rule.xml配置

  • 一致性hash

    一致性hash思想 一般的hash算法对资源做缓存,出现扩容或者缩小容量时,需要对所有资源hash重新计算存储位置...

  • 分表分库的一些思考

    1.一致性hash算法,如果用来做分表分库,添加节点或者删除节点,原数据应该怎么处理???根据hash算法刷数据?...

  • 分库分布的几件小事(三)可以动态扩容缩容的分库分表方案

    1.扩容与缩容 这个是你必须面对的一个事儿,就是你已经弄好分库分表方案了,然后一堆库和表都建好了,基于分库分表中间...

  • 使用mycat进行分表分库安装与配置

    使用mycat进行分表分库安装与配置 1. 安装 进入官网下载mycat安装包并解压(此处略过步骤......)解...

网友评论

      本文标题:基于mycat一致性hash分表与扩容

      本文链接:https://www.haomeiwen.com/subject/qsmnyktx.html