MySQL运维13-Mycat分库分表之按月分片
一、按照月分片
使用场景为按照自然月来分片,每个自然月为一个分片,但是一年有12个月,是不是要有12个数据节点才行呢?并不是。例如我现在只有三个分片数据库,这样就可以1月在第一个数据分片中,2月在第二个数据分片中,3月在第三个数据分片中,当来到4月的时候,就会重新开始分片,4月在第一个数据分片,5月在第二个数据分片,6月在第三个数据分片,以此类推。

说明1:从开始时间开始,一个月为一个分片,到达结束时间之后,会重复开始分片插入
说明2:配置表的dataNode的分片,必须和分片规则数量一致,例如:2023-01-01到2023-12-31,一共就需要12个数据节点
说明3:我只有三个数据节点,所以配置表中,我只需要配置2023-01-01到2023-03-31即可,即使一年又12个月会可以重复插入的。
二、准备工作
使用之前已经创建tb_logs数据库

三、rule.xml配置

说明1:分片规则:"sharding-by-month"
说明2:分库分表字段为create_time
说明3:dateFormat为时间格式
说明4:sBeginDate是配置的起始日期
说明5:sEndDate是配置的结束日期
说明6:有几台数据节点,就只需要配置几个月的范围即可,即开始日期到结束日期的月份要等于数据节点的数。
四、配置schem.xml

说明1:逻辑库为hl_logs
说明2:逻辑表为tb_month
说明3:分片规则为:"sharding-by-month"


说明4:dn4对应的是dbhost1即192.168.3.90分片
说明5:dn5对应的是dbhost2即192.168.3.91分片
说明6:dn6对应的是dbhost3即192.168.3.92分片
五、配置server.xml

说明1:在之前的文章中已经将tb_logs表添加到root用户的权限中了,所以这里不需要更改即可。
六、按(月)日期分片测试
首先重启Mycat

登录Mycat

查看逻辑库和逻辑表

这里的tb_month只是逻辑库,而在MySQL中还并没有tb_month这个表,需要在Mycat中创建
create table tb_month(id int auto_increment primary key, name varchar(20), create_time varchar(19));
插入一组测试数据
insert into tb_month(name, create_time) values ("张三", "2023-01-02");
insert into tb_month(name, create_time) values ("李四", "2023-02-12");
insert into tb_month(name, create_time) values ("王五", "2023-03-22");
insert into tb_month(name, create_time) values ("赵六", "2023-04-18");
insert into tb_month(name, create_time) values ("侯七", "2024-05-01");
insert into tb_month(name, create_time) values ("孙八", "2024-06-11");
insert into tb_month(name, create_time) values ("周九", "2024-07-21");


说明1:一共三个数据节点,其中1月,4月,7月,10月的数据会分布在192.168.3.90第一个数据节点上,OK

说明2:一共三个数据节点,其中2月,5月,8月,11月的数据会分布在192.168.3.91第二个数据节点上,OK

说明3:一共三个数据节点,其中3月,6月,9月,12月的数据会分布在192.168.3.92第三个数据节点上,OK

说明4:在Mycat上进行查询的数据是,所有数据节点的全集。按(月)日期分片是水平分库分表的一种方式。
MySQL运维13-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分库分表入门
1.分区 对业务透明,分区只不过把存放数据的文件分成了许多小块,例如mysql中的一张表对应三个文件.MYD,MYI,frm. 根据一定的规则把数据文件(MYD)和索引文件(MYI)进行了分割,分区后 ...
- Mycat分库分表(一)
随着业务变得越来越复杂,用户越来越多,集中式的架构性能会出现巨大的问题,比如系统会越来越慢,而且时不时会宕机,所以必须要解决高性能和可用性的问题.这个时候数据库的优化就显得尤为重要,在说优化方案前,先 ...
- mycat分库分表 看这一篇就够了
之前我们已经讲解过了数据的切分,主要有两种方式,分别是垂直切分和水平切分,所谓的垂直切分就是将不同的表分布在不同的数据库实例中,而水平切分指的是将一张表的数据按照不同的切分规则切分在不同实例的相同 ...
- MyCat | 分库分表实践
引言 先给大家介绍2个概念:数据的切分(Sharding)根据其切分规则的类型,可以分为两种切分模式. 切分模式 一种是按照不同的表(或者Schema)来切分到不同的数据库(主机)之上,这种切可以称之 ...
- mycat 分库分表
单库分表已经在上篇写过了,这次写个分库分表,不同在于配置文件上的一点点不同 <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> &l ...
随机推荐
- C#结合OpenCVSharp4图片相似度识别
OpenCVSharp4图片相似度识别 需求背景:需要计算两个图片的相似度,然后将相似的图片进行归纳 1. 图片相似度算法 由于我是CRUD后端仔,对图像处理没什么概念.因此网上调研了几种相似度算法分 ...
- tcpdump后台不间断抓包
版本1的抓包命令 这两天排查一个小问题,需要在服务器上使用tcpdump24小时不间断抓包,这里简单记录下. 先看下tcpdump的语法: tcpdump [ -AbdDefhHIJKlLnNOpqS ...
- Linux下安装MySQL问题及报错解决
前言: 在Linux环境下,安装MySQL服务 环境: 虚拟机CentOS7 \-----------------------------------------------\ 流程: 确保mysql ...
- Docker Compose V2 安装常用数据库MySQL+Mongo
前言 书接上篇:Docker V24 及 Docker Compose V2 的安装及使用 本篇操作都在 centos8 虚拟机 devops01 中进行,并都归属网络:devopsnetwork 主 ...
- IntelliJ IDEA安装中文插件
1.运行IntelliJ IDEA程序2.点击左上角"File"//文件3.点击下拉的"Settings" //设置4.点击"Plugins" ...
- 19c上ADG主库sys密码修改会影响备库同步吗?
一套Oracle 19c的ADG集群要修改sys密码,由于之前遇见过11g上sys密码修改导致同步问题的情况,所以改之前特意查了下文档,发现其实12cR2开始,在主库修改密码就会自动同步到备库了,以下 ...
- PHP-basename
basename 定义: basename() 函数返回路径中的文件名部分. 语法: basename(path,suffix) 参数 描述 path 必需.规定要检查的路径 suffix 可选.规定 ...
- 差异行压缩算法(C#实现)
private byte[] DifferenceRowOrder(int offset, int count, byte[] inbyte)//差异行命令(此处的offset和count都从1开始) ...
- ORACLE SQL语句逻辑读高优化案例
川川找我优化SQL,逻辑读达到398,000,安排一下. SQL和执行计划: SELECT t1.*, t3.bed_number, t3.patient_name, t4.name FROM odw ...
- 快速入门:构建您的第一个 .NET Aspire 应用程序
前言 云原生应用程序通常需要连接到各种服务,例如数据库.存储和缓存解决方案.消息传递提供商或其他 Web 服务..NET Aspire 旨在简化这些类型服务之间的连接和配置.在本快速入门中,您将了解如 ...