首页 > 数据库 >MySQL运维9-Mycat分库分表之枚举分片

MySQL运维9-Mycat分库分表之枚举分片

时间:2023-12-18 23:44:17浏览次数:51  
标签:status 分库 运维 enum Mycat 说明 枚举 分片 tb

一、枚举分片

  通过在配置文件中配置可能的枚举值,指定数据分布到不同数据节点上,这种方式就是枚举分片规则,本规则适用于按照省份,性别,状态拆分数据等业务

  

二、枚举分片案例

  枚举分片需求:现有 tb_enum 表,其中有 id, username, status三个字段,其中status值为1,2,3 当status=1时表示:未启用,status=2时表示:已启用,status=3时表示:已注销。现在我们就需要根据这三种状态进行分片。

  数据库需求:还是用之前文章中创建的 hl_logs 数据库

  表需求:在 hl_logs 中重新创建表为 tb_enum

  

三、配置rule.xml

  

  说明1:系统默认的枚举分片规则为:sharding-by-intfile

  说明2:系统默认的枚举字段是:sharding_id (可以根据需要改成自己需要的枚举字段,但是不推荐,因为有可能多个表的枚举字段会有冲突,请看说明4)

  说明3:系统默认的枚举分片的算法:hsah-int

  说明4:这里我将系统的枚举算法复制一份改了名字为"my-sharding-by-intfile1",columns改为我需要的枚举字段status,这样做的原因是,因为如果一个数据库中可能还会有其他的表根据其他枚举字段分片,这样就冲突了,所以为了防止多个表的枚举分片规则冲突,最好的方式就是重新复制一个新的枚举规则,改一下规则的名称,然后再改一个枚举的字段,只要保证枚举算法:hash-int不变就行了。

  

  说明5:在function标签中的mapFile属性可以看出,枚举分片的配置通过partition-hash-int.txt文件配置

  

  说明6:修改partition-hash-int.txt文件,其中1代表status=1,表示未启用的用户,写入到索引为0的第一个数据节点中

  说明7:修改partition-hash-int.txt文件,其中2代表status=2,表示已启用的用户,写入到索引为1的第二个数据节点中

  说明8:修改partition-hash-int.txt文件,其中3代表status=3,表示已注销的用户,写入到索引为2的第三个数据节点中

四、配置schema.xml

  

  说明1:枚举分片的逻辑库是hl_logs

  说明2:枚举分片的逻辑表是tb_enum

  说明3:dataNode同样是dn4,dn5,dn6

  说明4:枚举分片的规则是自定义的枚举规则 rule="my-sharding-by-intfile1"

  

  说明5:因为 tb_logs 和 tb_enum 是在同一个数据库中,所以dataNode配置一样,就可以共用

  

  说明6:dbhost1数据节点为192,168.3.90

  说明7:dbhost2数据节点为192.168.3.91

  说明8:dbhost3数据节点为192.168.3.92

五、配置server.xml

  

  说明1:在之前的文章中已经将tb_logs表添加到root用户的权限中了,所以这里不需要更改即可。

六、枚举分片测试

  首先重启Mycat

  

  登录Mycat

  

  查看逻辑库和逻辑表

  

  这里的tb_enum只是逻辑库,而在MySQL中还并没有tb_enum这个表,需要在Mycat中创建

create table tb_enum(id bigint(20), username varchar(20), status int(2));

  

  插入一下数据进行分片测试

insert into tb_enum(id, username,status) values (1, "张三", 1);
insert into tb_enum(id, username,status) values (2, "李四", 2);
insert into tb_enum(id, username,status) values (3, "王五", 3);
insert into tb_enum(id, username,status) values (4, "赵六", 1);
insert into tb_enum(id, username,status) values (5, "侯七", 2);
insert into tb_enum(id, username,status) values (6, "孙八", 3);

  

  

  说明1:数据节点192.168.3.90上存的全部是status=1的数据

  

  说明2:数据节点192.168.3.91上存的全部是status=2的数据

  

  说明3:数据节点192.168.3.92上存的全部是status=3的数据

  

  说明4:在Mycat上进行查询的数据是,所有数据节点的全集。枚举分片是水平分库分表的一种方式。

 

标签:status,分库,运维,enum,Mycat,说明,枚举,分片,tb
From: https://www.cnblogs.com/Se7eN-HOU/p/17912178.html

相关文章

  • openGauss学习笔记-164 openGauss 数据库运维-备份与恢复-导入数据-使用COPY FROM STD
    openGauss学习笔记-164openGauss数据库运维-备份与恢复-导入数据-使用COPYFROMSTDIN导入数据-处理错误表164.1操作场景当数据导入发生错误时,请根据本文指引信息进行处理。164.2查询错误信息数据导入过程中发生的错误,一般分为数据格式错误和非数据格式错误。数据格式错......
  • MySQL运维8-Mycat范围分表
    一、范围分片根据指定的字段及其配置的范围与数据节点的对应情况,来决定该数据属于哪一个分片。说明1:范围分片会提前提供一个分片的范围默认是0-500万是一个分片,500万-1000万是一个分片,1000万-1500万是一个分片,超过1500万要重新设置。说明2:这个范围我们可以根......
  • wgcloud运维部署 - 配置使用https证书
    https://www.wgstart.com/help/docs137.html......
  • openGauss学习笔记-163 openGauss 数据库运维-备份与恢复-导入数据-使用COPY FROM STD
    openGauss学习笔记-163openGauss数据库运维-备份与恢复-导入数据-使用COPYFROMSTDIN导入数据-简介163.1关于COPYFROMSTDIN导入数据用户可以使用以下方式通过COPYFROMSTDIN语句直接向openGauss写入数据。通过键盘输入向openGauss数据库写入数据。详细请参见COPY。通过......
  • MySQL运维6-Mycat垂直分库
    一、垂直分库场景场景:在业务系统中,涉及一下表结构,但是由于用户与订单每天都会产生大量的数据,单台服务器的数据存储以及处理能力是有限的,可以对数据库表进行拆分,原有数据库如下说明1:整个业务系统中的表,大致分为四个,商品信息类的表,订单相关的表,用户相关表及省市区相......
  • 菜鸡运维成长记-第二周
    文本处理工具总结:查看文本文件内容:cat:-A|--show-all#显示所有控制符-n|--number#对显示出的每一行进行编号-b|--number-nonblank#非空行编号-s|--squeeze-blank#压缩连续的空行成一行nl:显示行号,相当于cat-btac:逆向显示文本内容,行倒序显示rev:将同一行的内......
  • 某航空公司引入运维管理软件,提升信息化运营效率
      在信息化时代,企业信息化的程度已经成为影响其核心竞争力的重要因素。某航空公司作为行业领导者,积极推进信息化建设,不断提升运维管理水平,以适应日益激烈的市场竞争。该公司成功引入了一款先进的运维管理软件,实现了对IT设备的集中监控、自动化管理和安全管理,显著提升了信息化业......
  • SRE Google运维解密 第三章
    第二部分指导思想本部分将描述SRE日常工作背后的指导思想——工作模式、行为方式,以及平时运维工作中关注的重点等。第三章拥抱风险管理风险在构建系统的过程中,可靠性的进一步提升成本并不是线性增加的。高昂的成本主要存在于以下两个维度:冗余物理服务器/计算资源的成......
  • 云平台运维过程问题,以及解决方法
    1.裸金属替换下发,后bond1网络不通或者丢包。:排查用到的命令:ifdown  ifconfigeth0down/up ip-bra  demsg|grepDMI查看服务器厂家 、cat/etc/os-release查看操作系统版本#用带外看服务器的状态ipmitool-Ilanplus-H22.234.11.158-Uadmin-PPCfwq@psbc202......
  • openGauss学习笔记-161 openGauss 数据库运维-备份与恢复-导出数据-使用gs_dump和gs_d
    openGauss学习笔记-161openGauss数据库运维-备份与恢复-导出数据-使用gs_dump和gs_dumpall命令导出数据-导出所有数据库-无权限角色导出数据161.1无权限角色导出数据gs_dump和gs_dumpall通过-U指定执行导出的用户帐户。如果当前使用的帐户不具备导出所要求的权限时,会无法导出......