码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • MySQL运维8-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-18
    31.MySQL运维8-Mycat分库分表之范围分片2023-12-18
    32.MySQL运维9-Mycat分库分表之枚举分片2023-12-1833.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
    收起

    阅读目录

    • 一、范围分片
    • 二、准备工作
    • 三、配置schema.xml
    • 四、配置server.xml
    • 五、范围分片测试

    一、范围分片

      根据指定的字段及其配置的范围与数据节点的对应情况,来决定该数据属于哪一个分片。

      

      说明1:范围分片会提前提供一个分片的范围默认是0-500万是一个分片,500万-1000万是一个分片,1000万-1500万是一个分片,超过1500万要重新设置。

      说明2:这个范围我们可以根据自己的需要去自定义使用。

       

      说明3:在配置schema.xml的时候,默认的分片规则 rule="auto-sharding-long" 就是范围分片规则

      说明4:在rule.xml中有auto-sharding-long的定义,其分片的依据是 id 主键

      说明5:在rule.xml中有auto-sharding-long的定义,其采用的算法是 rang-long 算法

      说明6:在function rang-long中有一个property 属性,该属性引用了一个外部文件 “autopartition-long.txt” 文件,在这个文件中就是定义分片的范围,如果我们要实现自定义数据分片即修改该文件中的范围即可。

    二、准备工作

      

      说明1:在三个数据数据节点上都先创建好需要使用的数据库range_db

    三、配置schema.xml

      

      说明1:新增schema标签,逻辑库的名称为range_db,逻辑表的名称为tb_range

      说明2:分片规则为 rule="auto-sharding-long" 即范围分片

      

      说明3:dn7,dn8,dn9对应的数据节点依然是dbhost1,dbhost2,dbhost3.

       

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

      说明5:dbhost2数据节点为192.168.3.91

      说明5:dbhost3数据节点为192.168.3.92

    四、配置server.xml

      

      说明1:给root用户添加range_db的操作权限

    五、范围分片测试

      首先重启Mycat

      

      登录Mycat

      

      查看逻辑库逻辑表

      

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

    create table tb_range (id int auto_increment primary key, name varchar(20));

      

      插入一条数据,然后查看数据节点中对应的数据变化

    insert into tb_range (id, name) values (1,'张三');

      

      说明1:id=1的数据插入到了192.168.3.90的数据节点上了,我们采用的是默认的分片范围

      说明2:继续添加一个id为5000000的数据看一下是否会继续插入到192.168.3.90这个数据节点上

    insert into tb_range (id, name) values (5000000,'李四');

      

      说明3:没有问题,id=5000000的也插入到了第一个数据节点上,继续测试id=5000001的数据

    insert into tb_range (id, name) values (5000001,'王五');

      

      说明4:id=5000001的数据,插入到了192.168.3.91第二个数据节点上了,说明5000000是第一个和第二个数据节点的分界线,我们在测试一下id=10000001

    insert into tb_range (id, name) values (10000001,'赵六');

      

      说明5:id=10000001的数据插入到了192.168.3.92第三个数据节点上了。继续测试一下15000001这个id超过了分片范围,看看是否还能成功?

    insert into tb_range (id, name) values (15000001,'侯七');

      

      说明6:这是就报错了,因为根据分片规则已经找不到15000001应该保存到那个分片了,如果要继续添加id的话,就需要在自定义去增加分片范围了,需要修改 “autopartition-long.txt”这个文件

      

      修改了配置文件后,我们重新启动一下Mycat然后再次插入id=15000001数据试试

       

      重新插入id=15000001的数据

    insert into tb_range (id, name) values (15000001,'侯七');

      

      

      说明7:修改分片范围后,id=15000001的数据也可以保存了。

      说明8:如果使用范围分片的时候,如果默认的分片范围满足不了需求,我们只需要修改 "autopartition-long.txt" 这个文件即可。

      

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

     
  • 相关阅读:
    【LeetCode】每日一题:反转链表
    【MySQL索引与优化篇】索引的数据结构
    PHP_EOL不起作用或者无效的原因
    微信小程序页面的交互
    Linux开发:进程间通过Unix Domain Socket传递文件描述符
    Docker入门
    史上最全的mysql数据类型汇总(下)
    MyBatis多条件查询、动态SQL、多表操作、注解开发详细教程
    Ryght 在 Hugging Face 专家助力下赋能医疗保健和生命科学之旅
    java毕业设计开题报告基于SSM学生成绩管理系统
  • 原文地址:https://www.cnblogs.com/Se7eN-HOU/p/17910617.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号