MySQL运维7-Mycat水平分表
一、水平分表场景
在业务系统中,有一张日志表,业务系统每天都会产生大量的日志数据,单台服务器的数据存储即处理能力是有限的,可以对数据库表进行拆分,这时候就可以使用水平分表的策略

说明1:水平分表,每个表的结构一致
说明2:水平分表,每个表的数据不同
说明3:水平分表,所有表的合集才是完整的数据
二、准备工作
在192.168.3.90,192.168.3.91,192.168.92 三台MySQL服务器上创建hl_logs数据库

三、配置schema.xml

说明1:之前的schema.xml已经配置过其他的schema,dataNode等标签都不用动,直接新增我们本次案例需要的就行了,多个标签只要不冲突是可以并存的
说明2:逻辑库为hl_logs
说明3:逻辑表为tb_logs
说明4:数据节点为dn4,dn5,dn6
说明5:数据节点dn4,dn5,dn6需要的数据库配置也是dbhost1,dbhost2,dbhost3,是可以公用的。

说明6:分片规则使用的是 rule="mod-long" 规则,该规则在rule.xml有定义如下

说明7:继续看 function 中 mod-long 的定义

说明8:这里的count 3的意思是 id主键 按照和3进行取模运算,然后根据取模后的结果,将数据写入到不同的数据节点,即有几个数据节点,就会平均的写入到数据节点中
说明9:我这里整好配置了三个数据节点,而这里的默认值也是3,所以不用改了,如果我们想要将数据平均的写到4个数据节点上,则这里的count需要改为4
四、配置server.xml

说明1:root 这个用户可以访问 shopping 和 hl_logs 两个数据库
说明2:而 user 这个用户只能访问 shopping 这个数据库
说明3:我现在测试的都是使用 root 这个账户,所以 user 这个可以不用配置
五、水平分表测试
首先重启Mycat

登录Mycat

查看逻辑库和逻辑表

这里的tb_logs只是逻辑库,而在MySQL中还并没有tb_logs这个表,需要在Mycat中创建
create table tb_logs (id int auto_increment primary key, model_name varchar(200), operate_user varchar(20), operate_time varchar(19));

插入一条数据,然后查看数据节点中对应的数据变化
insert into tb_logs (id, model_name, operate_user, operate_time) values (1, '访问首页','张三', '2023-12-17 21:52:54');

说明1:id=1的数据,按照mod-long的算法,会用 1%3=1, 因为 和3取模 的结果只有 0,1,2, 所以结果为0时, 数据将写在第一个数据节点,结果为1时,结果会保存在第二个数据节点,结果为2时,保存在第三个数据节点上,而 1%3=1 ,所以id=1的数据写在了192.168.3.91第二个数据节点上。

说明2:第二个数据节点即192.168.3.91这个节点,所以id=1的数据只写入到这个数据节点上,其他节点上还没有数据。
继续验证
insert into tb_logs (id, model_name, operate_user, operate_time) values (2, '访问详情页','李四', '2023-12-17 22:55:24');

说明3:按照mod-long算法,id=2的数据被写入到192.168.3.92,第三个数据节点上,成功,继续验证。
insert into tb_logs (id, model_name, operate_user, operate_time) values (3, '访问评论页','王五', '2023-12-17 22:03:34');

说明4:按照mod-long算法,id=3的数据被写入到192.168.3.90,第1个数据节点上,成功,继续验证。
insert into tb_logs (id, model_name, operate_user, operate_time) values (4, '访问首页','赵六', '2023-12-17 22:09:34');

说明5:按照mod-long算法,id=4的数据被写入到192.168.3.91,第二个数据节点上,成功。
MySQL运维7-Mycat水平分表的更多相关文章
- mycat水平分表
和垂直分库不同,水平分表,是将那些io频繁,且数据量大的表进行水平切分. 基本的配置和垂直分库一样,我们需要改的就是我们的 schema.xml和rule.xml文件配置(server.xml不用做任 ...
- mycat - 水平分表
相对于垂直拆分的区别是:垂直拆分是把不同的表拆到不同的数据库中,而水平拆分是把同一个表拆到不同的数据库中.水平拆分不是将表的数据做分类,而是按照某个字段的某种规则来分散到多个库之中,每个表中包含一部分 ...
- mysql使用MRG_MyISAM(MERGE)实现水平分表
在MySQL中数据的优化尤其是大数据量的优化是一门很大的学问,当然其它数据库也是如此,即使你不是DBA,做为一名程序员掌握一些基本的优化信息,也可以让你在自己的程序开发中受益匪浅.当然数据库的优化有很 ...
- keeplived+mycat+mysql高可用读写分离水平分表(谁看谁都会)
一:环境准备: 应用 主机 mysql-master 192.168.205.184 mysql-slave 192.168.205.185 mycat-01,keeplived,jdk 192.16 ...
- 转:三思!大规模MySQL运维陷阱之基于MyCat的伪分布式架构
在微信公众号看到一篇关于mycat的文章,觉得分析的很不错,给大家分享一下 三思!大规模MySQL运维陷阱之基于MyCat的伪分布式架构 原文链接:https://mp.weixin.qq.com/s ...
- mysql运维------分库分表
1. 介绍 问题分析: 随着互联网以及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行数据存储,存在以下性能瓶颈: IO瓶颈:热点数据太多,数据库缓存不足,产生大量磁盘IO,效率 ...
- mysql中的优化, 简单的说了一下垂直分表, 水平分表(有几种模运算),读写分离.
一.mysql中的优化 where语句的优化 1.尽量避免在 where 子句中对字段进行表达式操作select id from uinfo_jifen where jifen/60 > 100 ...
- mysql 水平分表技术
这里做的是我的一个笔记. 水平分表比较简单, 理解就是: 合并的表使用的必须是MyISAM引擎 表的结构必须一致,包括索引.字段类型.引擎和字符集 数据表 user1 CREATE TABLE `us ...
- MySQL常见水平分表技术方案
根据经验,Mysql表数据一般达到百万级别,查询效率会很低,容易造成表锁,甚至堆积很多连接,直接挂掉:水平分表能够很大程度较少这些压力. 1.按时间分表 这种分表方式有一定的局限性,当数据有较强的实效 ...
- mysql数据库的水平分表与垂直分表实例讲解
mysql语句的优化有局限性,mysql语句的优化都是围绕着索引去优化的,那么如果mysql中的索引也解决不了海量数据查询慢的状况,那么有了水平分表与垂直分表的出现(我就是记录一下自己的理解) 水平分 ...
随机推荐
- 给你的模糊测试开开窍——定向灰盒模糊测试(Directed Greybox Fuzzing)综述
本文系原创,转载请说明出处 Please Subscribe Wechat Official Account:信安科研人,获取更多的原创安全资讯 原论文:<The Progress, Cha ...
- Jenkins持续集成入门到精通(进阶篇)
视频参考:https://www.bilibili.com/video/BV1Vp4y1b7ZN?p=51 1. Jenkins+Docker+SpringCloud持续集成流程说明 大致流程说明: ...
- Java并发Map的面试指南:线程安全数据结构的奥秘
简介 在计算机软件开发的世界里,多线程编程是一个重要且令人兴奋的领域.然而,与其引人入胜的潜力相伴而来的是复杂性和挑战,其中之一就是处理共享数据.当多个线程同时访问和修改共享数据时,很容易出现各种问题 ...
- 解决软件安装无法自定义文件夹,自动安装在C盘 (Windows系统)
其实就是软链接的简单应用 1.软件已经自动安装 2.完全退出当前软件 3.通过软件图标的属性找到其实际的安装目录 4.进入该软件的安装目录 5.将该软件整个剪切(你没有看错)到指定文件夹(自定义的安装 ...
- TrueUpdate白加黑木马分析保姆级教程
目录 TrueUpdate白加黑木马分析保姆级教程 0x00:前言 TrueUpdate是什么? 0x01: TrueUpdate逆向分析解压密码 查壳 脱壳 分金定穴 找到解压密码方法1: 找到解压 ...
- mooc第四单元《管理团队》单元测试
第四单元<管理团队>单元测试 返回 本次得分为:6.00/10.00, 本次测试的提交时间为:2020-08-30, 如果你认为本次测试成绩不理想,你可以选择 再做一次 . 1 判断(2分 ...
- JuiceFS 目录配额功能设计详解
JuiceFS 在最近 v1.1 版本中加入了社区中呼声已久的目录配额功能.已发布的命令支持为目录设置配额.获取目录配额信息.列出所有目录配额等.完整的详细信息,请查阅文档. 在设计此功能时,对于它的 ...
- 通过unittest加载测试用例的不同方法
使用python+unitest做自动化测试执行时, 执行用例时就涉及测试用例的加载. 即如何把测试cases加载到测试suite,然后进行运行. 一般把用例加载方法分为两大类:通过unittest. ...
- Ubuntu18.04环境下安装redis 6.2.0,配置文件的部分参数说明
环境是win11的Linux子系统Ubuntu-18.04,安装方式是源码安装,也可以用apt安装(见本文最后参考资料),用的用户是默认用户(所以一些关键命令要注意用sudo,不用会报错) 安装: j ...
- 合并果子(lgP1090)
贪心. 每次取最小的两堆合并,最后即为正确答案.(我也不会证明/wq) 所以说主要问题就是怎么找最小的两堆. 由于中间不断有插入和删除,所以用优先队列. 扯不下去了 直接看代码吧. #include& ...