MySQL运维9-Mycat分库分表之枚举分片
一、枚举分片
通过在配置文件中配置可能的枚举值,指定数据分布到不同数据节点上,这种方式就是枚举分片规则,本规则适用于按照省份,性别,状态拆分数据等业务

二、枚举分片案例
枚举分片需求:现有 tb_enum 表,其中有 id, username, status三个字段,其中status值为1,2,3 当status=1时表示:未启用,status=2时表示:已启用,status=3时表示:已注销。现在我们就需要根据这三种状态进行分片。
数据库需求:还是用之前文章中创建的 hl_logs 数据库
表需求:在 hl_logs 中重新创建表为 tb_enum

三、配置rule.xml

说明1:系统默认的枚举分片规则为:sharding-by-intfile
说明2:系统默认的枚举字段是:sharding_id (可以根据需要改成自己需要的枚举字段,但是不推荐,因为有可能多个表的枚举字段会有冲突,请看说明4)
说明3:系统默认的枚举分片的算法:hsah-int
说明4:这里我将系统的枚举算法复制一份改了名字为"my-sharding-by-intfile1",columns改为我需要的枚举字段status,这样做的原因是,因为如果一个数据库中可能还会有其他的表根据其他枚举字段分片,这样就冲突了,所以为了防止多个表的枚举分片规则冲突,最好的方式就是重新复制一个新的枚举规则,改一下规则的名称,然后再改一个枚举的字段,只要保证枚举算法:hash-int不变就行了。

说明5:在function标签中的mapFile属性可以看出,枚举分片的配置通过partition-hash-int.txt文件配置

说明6:修改partition-hash-int.txt文件,其中1代表status=1,表示未启用的用户,写入到索引为0的第一个数据节点中
说明7:修改partition-hash-int.txt文件,其中2代表status=2,表示已启用的用户,写入到索引为1的第二个数据节点中
说明8:修改partition-hash-int.txt文件,其中3代表status=3,表示已注销的用户,写入到索引为2的第三个数据节点中
四、配置schema.xml

说明1:枚举分片的逻辑库是hl_logs
说明2:枚举分片的逻辑表是tb_enum
说明3:dataNode同样是dn4,dn5,dn6
说明4:枚举分片的规则是自定义的枚举规则 rule="my-sharding-by-intfile1"

说明5:因为 tb_logs 和 tb_enum 是在同一个数据库中,所以dataNode配置一样,就可以共用

说明6:dbhost1数据节点为192,168.3.90
说明7:dbhost2数据节点为192.168.3.91
说明8:dbhost3数据节点为192.168.3.92
五、配置server.xml

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

登录Mycat

查看逻辑库和逻辑表

这里的tb_enum只是逻辑库,而在MySQL中还并没有tb_enum这个表,需要在Mycat中创建
create table tb_enum(id bigint(20), username varchar(20), status int(2));

插入一下数据进行分片测试
insert into tb_enum(id, username,status) values (1, "张三", 1);
insert into tb_enum(id, username,status) values (2, "李四", 2);
insert into tb_enum(id, username,status) values (3, "王五", 3);
insert into tb_enum(id, username,status) values (4, "赵六", 1);
insert into tb_enum(id, username,status) values (5, "侯七", 2);
insert into tb_enum(id, username,status) values (6, "孙八", 3);


说明1:数据节点192.168.3.90上存的全部是status=1的数据

说明2:数据节点192.168.3.91上存的全部是status=2的数据

说明3:数据节点192.168.3.92上存的全部是status=3的数据

说明4:在Mycat上进行查询的数据是,所有数据节点的全集。枚举分片是水平分库分表的一种方式。
MySQL运维9-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.所谓的 ...
- 分库分表后跨分片查询与Elastic Search
携程酒店订单Elastic Search实战:http://www.lvesu.com/blog/main/cms-610.html 为什么分库分表后不建议跨分片查询:https://www.jian ...
- 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)进行了分割,分区后 ...
- mysql(5):主从复制和分库分表
主从复制集群 概念:主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点. 使用场景: 读写分离:使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读 ...
随机推荐
- 如何用PHP写接口
当用PHP编写API接口时,可以使用PHP中的框架(如Laravel.Symfony.CodeIgniter等)来简化开发过程.接下来,以使用Laravel框架为例,提供一个简单的示例代码: 首先,确 ...
- 重磅| Falcon 180B 正式在 Hugging Face Hub 上发布!
引言 我们很高兴地宣布由 Technology Innovation Institute (TII) 训练的开源大模型 Falcon 180B 登陆 Hugging Face! Falcon 180B ...
- 通过提示大语言模型进行个性化推荐LLM-Rec: Personalized Recommendation via Prompting Large Language Models
论文原文地址:https://arxiv.org/abs/2307.15780 本文提出了一种提示LLM并使用其生成的内容增强推荐系统的输入的方法,提高了个性化推荐的效果. LLM-Rec Promp ...
- C# Wke例子 -- WebUI登录窗口
概述 Wke介绍: http://blog.csdn.net/sabrecode/article/details/78145938 用Wke做了一个登录窗口, webui比较特殊. 因为它就是一个超文 ...
- Unity 游戏开发、01 基础篇 | 阿发入门篇全课程学习笔记
Unity Documentation .全课程视频 .第15,24章视频 afanihao Unity入门,全课程内容个人学习笔记,简单部分一笔带过,重点内容带 2.3 窗口布局 Unity默认窗口 ...
- 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(2)
在前面随笔<循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(1)>中介绍了Mvvm 的开发,以及一些界面效果,本篇随笔继续深入探讨 ...
- padans 常用的统计方法
#coding=utf-8import pandas as pdimport numpy as npfile="./IMDB-Movie-Data.csv"data=pd.read ...
- Modbus动态链接库供多语言使用 | Go
Modbus协议控制动态链接库 应用场景 基于各门语言都有各自的modbus协议库,且良莠不齐,而且在具体的框架下可能存在版本依赖问题, 而且对modbus协议存在比较多的细节处理,可以查看modbu ...
- python系列:argparse详解 外部传参给python的库
一.argparse简介 argparse 模块是 Python 内置的用于命令项选项与参数解析的模块,argparse 模块可以让人轻松编写用户友好的命令行接口,能够帮助程序员为模型定义参数. ar ...
- js数据结构--字典
<!DOCTYPE html> <html> <head> <title></title> </head> <body&g ...