MySQL运维10-Mycat分库分表之一致性哈希分片
一、一致性哈希分片
一致性哈希分片的实现思路和我们之前介绍的水平分表中的取模分片是类似的。只不过取模分片,采用的是利用主键和分片数进行取模运算,然后根据取模后的结果,将数据写入到不同的分片数据中。但是这种分片方式有一个局限性就只能对id是整形的数据使用,如果id是个uuid类型这个的非整形的字段,就没有办法使用取模的方式进行分片了。这时候就可以采用一致性hash算法分片,其分片的原则是根据id 哈希运算之后,然后再决定写入到哪个分片,所以我认为一致性哈希的分表方式是对取模分片的补充。
一致性哈希分片是将主键采用哈希算法,将数据分布到不同的数据库节点上,以实现分布式存储和查询。
说明1:一致性哈希的规则是 rule="sharding-by-murmur"
说明2:在function标签中只需要修改count属性的值即可,即有几个数据节点就改为几。
二、准备数据库
说明1:在三个数据节点上都先创建好hash_db数据库
三、配置schema.xml
说明1:逻辑库为hash_db
说明2:逻辑表为tb_hash
说明3:分片规则为 rule="sharding-by-murmur"
说明4:dn10对应的是dbhost1即192.168.3.90分片
说明5:dn11对应的是dbhost2即192.168.3.91分片
说明6:dn12对应的是dbhost3即192.168.3.92分片
四、配置server.xml
说明1:增加 root 用户对 hash_db 的操作权限
五、配置rule.xml
说明1:在一致性哈希分片的rule.xml中name=count这个属性,要修改为我们指定的3个数据节点
六、一致性哈希分片测试
首先重启Mycat
登录Mycat
查看逻辑库和逻辑表
这里的tb_hash只是逻辑库,而在MySQL中还并没有tb_hash这个表,需要在Mycat中创建
create table tb_hash (id varchar(255) primary key, name varchar(20));
插入一条数据,然后查看数据节点中对应的数据变化
insert into tb_hash (id, name) values ("1fc74326-9fd3-45f5-949e-33339f618dbf",'张三');
说明1:id经过hash算法之后,数据存在了192.168.3.92数据节点上了,继续插入数据测试。
insert into tb_hash (id, name) values ("9f08bab8-4abe-43e4-97c5-41efcfa45e75",'李四');
说明2:id经过hash算法之后,数据存在了192.168.3.91数据节点上了,继续插入数据测试
insert into tb_hash (id, name) values ("7355535e-e1ce-421c-8715-29f41a91dca3",'王五');
说明3:id经过hash算法之后,数据存在了192.168.3.90数据节点上了,继续插入三条数据测试
insert into tb_hash (id, name) values ("87558171-e5ce-4b1d-8cde-d911a625b8c9",'赵六');
insert into tb_hash (id, name) values ("596a6d86-6c79-4ffa-8de4-db0a537713a5",'侯七');
insert into tb_hash (id, name) values ("6fc23dd4-9733-4511-9427-bdeea9383b50",'孙八');
说明4:一致性hash会根据id键hash运算之后决定写入到哪个分片,如果数据量足够大的话,其会尽量保证数据的负载均衡,但不是绝对的,因为这取决于id哈希运算后的结果。
说明5:在Mycat上进行数据查询,是全集查询的,一致性哈希分片是水平分库分表的一种。
MySQL运维10-Mycat分库分表之一致性哈希分片的更多相关文章
- Mysql系列五:数据库分库分表中间件mycat的安装和mycat配置详解
一.mycat的安装 环境准备:准备一台虚拟机192.168.152.128 1. 下载mycat cd /softwarewget http:-linux.tar.gz 2. 解压mycat tar ...
- MySQL+MyCat分库分表 读写分离配置
一. MySQL+MyCat分库分表 1 MyCat简介 java编写的数据库中间件 Mycat运行环境需要JDK. Mycat是中间件.运行在代码应用和MySQL数据库之间的应用. 前身 : cor ...
- Mysql系列四:数据库分库分表基础理论
一.数据处理分类 1. 海量数据处理,按照使用场景主要分为两种类型: 联机事务处理(OLTP) 面向交易的处理系统,其基本特征是原始数据可以立即传送到计算机中心进行处理,并在很短的时间内给出处理结果. ...
- 《MyCat分库分表策略详解》
在我们的项目发展到一定阶段之后,随着数据量的增大,分库分表就变成了一件非常自然的事情.常见的分库分表方式有两种:客户端模式和服务器模式,这两种的典型代表有sharding-jdbc和MyCat.所谓的 ...
- 3.Mysql集群------Mycat分库分表
前言: 分库分表,在本节里是水平切分,就是多个数据库里包含的表是一模一样的. 只是把字段散列的分到不同的库中. 实践: 1.修改schema.xml 这里是在同一台服务器上建立了4个数据库db1,db ...
- MyCat | 分库分表实践
引言 先给大家介绍2个概念:数据的切分(Sharding)根据其切分规则的类型,可以分为两种切分模式. 切分模式 一种是按照不同的表(或者Schema)来切分到不同的数据库(主机)之上,这种切可以称之 ...
- mycat 分库分表
单库分表已经在上篇写过了,这次写个分库分表,不同在于配置文件上的一点点不同 <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> &l ...
- MyCat分库分表入门
1.分区 对业务透明,分区只不过把存放数据的文件分成了许多小块,例如mysql中的一张表对应三个文件.MYD,MYI,frm. 根据一定的规则把数据文件(MYD)和索引文件(MYI)进行了分割,分区后 ...
- 分布式数据库中间件 MyCat | 分库分表实践
MyCat 简介 MyCat 是一个功能强大的分布式数据库中间件,是一个实现了 MySQL 协议的 Server,前端人员可以把它看做是一个数据库代理中间件,用 MySQL 客户端工具和命令行访问:而 ...
- Mycat分库分表(一)
随着业务变得越来越复杂,用户越来越多,集中式的架构性能会出现巨大的问题,比如系统会越来越慢,而且时不时会宕机,所以必须要解决高性能和可用性的问题.这个时候数据库的优化就显得尤为重要,在说优化方案前,先 ...
随机推荐
- 基于bert-base-chinese训练bert模型(最后附上整体代码)
目录: 一.bert-base-chinese模型下载 二.数据集的介绍 三.完成类的代码 四.写训练方法 五.总源码及源码参考出处 一.bert-base-chinese模型下载 对于已经预训练好的 ...
- 不关闭Tamper Protection(篡改保护)下强制卸载Windows Defender和安全中心所有组件
个人博客: xzajyjs.cn 背景介绍 由于微软不再更新arm版本的win10系统,因此只能通过安装insider preview的镜像来使用.而能找到的win10 on arm最新版镜像在安装之 ...
- 完全可复制、经过验证的 Go 工具链
原文在这里. 由 Russ Cox 发布于 2023年8月28日 开源软件的一个关键优势是任何人都可以阅读源代码并检查其功能.然而,大多数软件,甚至是开源软件,都以编译后的二进制形式下载,这种形式更难 ...
- webgl 刷底色的基本步骤
1.在html中建立画布 <canvas id="canvas"><canvas> 2.在js中获取canvas画布 const canvas = docu ...
- lattice crosslink开发板mipi核心板csi测试dsi屏lif md6000 fpga
1. 概述 CrossLink开发板,是用Lattice的芯片CrossLink 家族系列的,LIF-MD6000-6JM80I.该芯片用于桥接视频接口功能,自带2路MIPI硬核的功能,4 LANE ...
- 别再用 float 布局了,flex 才是未来!
大家好,我是树哥! 前面一篇文章整体介绍了 CSS 的布局知识,其中说到 float 布局是 CSS 不断完善的副产物.而在 2023 年的今天,flex 这种布局方式才是未来!那么今天我们就来学习下 ...
- SpringCloud-ZipKin搭建保姆级教程
服务链路追踪 一.服务追踪说明 微服务架构是通过业务来划分服务的,使⽤REST调⽤.对外暴露的⼀个接⼝,可能需要 很多个服务协同才能完成这个接⼝功能,如果链路上任何⼀个服务出现问题或者⽹络超 时,都会 ...
- tmai
天猫精灵技能应用平台合作协议 发布日期:2020年03月18日 更新日期:2021年02月01日 鉴于您(语音技能.小程序或应用程序APP等的制作.提供或开发者)希望入驻或与天猫精灵技能应用平台(又称 ...
- 基本操作:vscode快捷键
1.复制,剪切 补选中具体内容的话,光标放在这一行的任何位置,输入Ctrl+C,就表示已经复制这一行了:直接Ctrl+V可以粘贴: 截切也一样:光标放在这一行的任何位置,输入Ctrl+X,就表示已 ...
- 一个Node.js的小爬虫
爬虫其实就是对网页内特定id.class.标签内容的提取,多是循环出来的,对我们爬取非常便利. 1.安装node node官网下载安装包安装,后在命令行工具中输入node -v查看node安装的版本. ...