首页 > 数据库 >MySQL运维8-Mycat范围分表

MySQL运维8-Mycat范围分表

时间:2023-12-18 17:46:11浏览次数:42  
标签:运维 数据 MySQL Mycat range 分片 节点 tb id

一、范围分片

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

  

  说明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的数据也可以保存了。

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

 

标签:运维,数据,MySQL,Mycat,range,分片,节点,tb,id
From: https://www.cnblogs.com/Se7eN-HOU/p/17910617.html

相关文章

  • kettle组件控制操作MySQL
    使用kettle执行脚本:然后保存执行实现以下效果;转换参数:实现变量转换:deletefromtestwhereuserid='${userid}';实现效果:100被删除......
  • MySQL入门
    ps:(文中的中括号表示可以添加或者不添加)初始操作:  自己创建了数据库,展示时是这样的,但是在每一个数据库名字之下,可以想象又是一张这种表格,与一层层打开文件夹相似;如下:列类型:以上图中lesson数据库中红色表格为例:每个表格中的一列都可能对应不同类型;eg:姓名那一列放置的就是......
  • wgcloud运维部署 - 配置使用https证书
    https://www.wgstart.com/help/docs137.html......
  • mysql有哪些权限
    MySQL是一款常用的数据库管理系统,它有许多不同的权限,用于限制不同用户的访问和操作权限。1.全局权限GRANTALLPRIVILEGESON*.*TO'username'@'host'IDENTIFIEDBY'password'WITHGRANTOPTION;全局权限是最高权限,它允许用户在所有数据库和表中进行任何操作,并且可以进行......
  • 通过 Sysbench 在低配置低数据基础上分别压测 MySQL 和 TiDB,实际结果 TiDB 出乎我的想
    作者:tidb菜鸟一只背景最近要上一个新项目,原来提供的是一个主从mysql数据库,两台16C64G的主机(还有个预发环境也是mysql主从,2个4C8G主机),感觉不是很靠谱,所以想要切换成tidb,所以对两边进行了压测(包括预发),两边磁盘都是垃圾机械盘,性能不说了,但是两边都垃圾,对比数据还是比较靠谱的。......
  • 基于php+mysql的一个开源IT资产管理系统——CAT:v1.0.5
    来自作者的一段为提高管理效率,良好发展开源的理想。   来一杯咖啡与茶,为IT运维从业者减轻管理负担,提升管理效率,从繁重无序的工作中解压出来,利用剩余时间多喝一杯休息一下。这是一个专为IT运维从业者打造的一站式解决方案平台,包含资产管理、工单、工作流、仓储等功能模......
  • MySQL 8.0 OCP 36
    Choosethebestanswer.YouwishtostoretheusernameandpasswordforaclientconnectiontoMySQLserverinafileonalocalfilesystem.您希望将MySQL服务器的用户名和密码存储在本地文件系统的文件中。Whichisthebestwaytoencryptthefile?加密文件的......
  • MySQL 8 手动安装后无法启动的问题解决
    首先的自我检讨与自我批评,最近有点懒,知识的更新慢,最近在更换系统到ubuntu22.04,废弃centos ,同时MYSQL都在8以上,之前MySQL都是在CENTOS7.5上安装,并且也都自动化安装,基本上没有问题,但到了ubuntu22.04基于对于系统的不熟悉,产生很多的问题。今天就梳理一下,转换了系统对于M......
  • mysql 5.7和8.0 yum安装
    安装环境Centos7.61.下载mysql源安装包$wgethttp://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm2.安装mysql源$yumlocalinstallmysql57-community-release-el7-8.noarch.rpm3.检查mysql源是否安装成功$yumrepolistenabled|grep"mysql.-comm......
  • mysql在使用myisam引擎的情况下如何提升查询速度
    MyISAM是MySQL的一种存储引擎,它在某些情况下可能比其他存储引擎(例如InnoDB)慢。但是,仍然有一些方法可以优化MyISAM表的查询速度:索引优化:为经常用于查询的列和WHERE子句中的列添加索引。使用复合索引来覆盖多个列,但要注意索引的列顺序。定期使用 OPTIMIZETABLE 命令来重新......