码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • MySQL运维9-Mycat分库分表之枚举分片


    合集 - mysql(39)
    1.侯哥的Python分享2019-04-162.MySQL基础1-关系型数据库与非关系型数据库2022-03-173.MySQL基础2-数据库及表的操作2022-03-174.MySQL基础3-数据库增删改操作2022-03-175.MySQL基础4-数据查询2023-07-176.MySQL基础5-用户及权限管理2023-07-187.MySQL基础6-常用数据库函数2023-07-188.MySQL基础7-约束2023-07-209.MySQL基础8-多表查询2023-07-2110.MySQL基础9-事务基础2023-08-3111.MySQL高级1-存储引擎2023-07-2412.MySQL高级2-SQL性能分析2023-07-2713.MySQL高级3-索引的结构和分类2023-07-2714.MySQL高级4-索引的使用规则2023-07-2815.MySQL高级5-SQL优化2023-07-3116.MySQL高级6-视图2023-07-3117.MySQL高级7-存储过程2023-08-1418.MySQL高级8-触发器2023-08-1719.MySQL高级9-锁2023-09-0420.MySQL高级10-InnoDB引擎存储架构2023-09-1921.MySQL高级11-后台进程2023-09-2022.MySQL高级12-事务原理 2023-09-2023.MySQL高级13-MySQL管理工具2023-09-2124.MySQL运维1-日志2023-09-2525.MySQL运维2-主从复制2023-09-2726.MySQL运维3-分库分表策略2023-12-1227.MySQL运维4-Mycat入门2023-12-1428.MySQL运维5-Mycat配置2023-12-1429.MySQL运维6-Mycat分库分表之垂直分库2023-12-1730.MySQL运维7-Mycat分库分表之取模分片2023-12-1831.MySQL运维8-Mycat分库分表之范围分片2023-12-18
    32.MySQL运维9-Mycat分库分表之枚举分片2023-12-18
    33.MySQL运维10-Mycat分库分表之一致性哈希分片2023-12-1934.MySQL运维11-Mycat分库分表之应用指定分片2023-12-1935.MySQL运维12-Mycat分库分表之按天分片2023-12-2036.MySQL运维13-Mycat分库分表之按月分片2023-12-2037.MySQL运维14-管理及监控工具Mycat-web的安装配置2023-12-2138.MySQL运维15-一主一从读写分离2023-12-2539.MySQL运维16-双主双从读写分离2023-12-25
    收起

    阅读目录

    • 一、枚举分片
    • 二、枚举分片案例
    • 三、配置rule.xml
    • 四、配置schema.xml
    • 五、配置server.xml
    • 六、枚举分片测试

    一、枚举分片

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

      

    二、枚举分片案例

      枚举分片需求:现有 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上进行查询的数据是,所有数据节点的全集。枚举分片是水平分库分表的一种方式。

     

  • 相关阅读:
    Spring之环境变量配置
    深度学习之Tensorboard的详细使用
    01背包的变形-最后一块石头重量。
    BIO、NIO、AIO有什么区别
    协程(四)——Android中使用协程
    java List截取
    非素数模下的二次剩余
    【校招VIP】java语言考点之switch和default
    flask-vue-sqlite3-->api接口-优化版本
    react 安装教程
  • 原文地址:https://www.cnblogs.com/Se7eN-HOU/p/17912178.html
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号