一、枚举分片

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

  

二、枚举分片案例

  枚举分片需求:现有 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分库分表之枚举分片的更多相关文章

  1. Mysql系列五:数据库分库分表中间件mycat的安装和mycat配置详解

    一.mycat的安装 环境准备:准备一台虚拟机192.168.152.128 1. 下载mycat cd /softwarewget http:-linux.tar.gz 2. 解压mycat tar ...

  2. MySQL+MyCat分库分表 读写分离配置

    一. MySQL+MyCat分库分表 1 MyCat简介 java编写的数据库中间件 Mycat运行环境需要JDK. Mycat是中间件.运行在代码应用和MySQL数据库之间的应用. 前身 : cor ...

  3. Mysql系列四:数据库分库分表基础理论

    一.数据处理分类 1. 海量数据处理,按照使用场景主要分为两种类型: 联机事务处理(OLTP) 面向交易的处理系统,其基本特征是原始数据可以立即传送到计算机中心进行处理,并在很短的时间内给出处理结果. ...

  4. 《MyCat分库分表策略详解》

    在我们的项目发展到一定阶段之后,随着数据量的增大,分库分表就变成了一件非常自然的事情.常见的分库分表方式有两种:客户端模式和服务器模式,这两种的典型代表有sharding-jdbc和MyCat.所谓的 ...

  5. 分库分表后跨分片查询与Elastic Search

    携程酒店订单Elastic Search实战:http://www.lvesu.com/blog/main/cms-610.html 为什么分库分表后不建议跨分片查询:https://www.jian ...

  6. 3.Mysql集群------Mycat分库分表

    前言: 分库分表,在本节里是水平切分,就是多个数据库里包含的表是一模一样的. 只是把字段散列的分到不同的库中. 实践: 1.修改schema.xml 这里是在同一台服务器上建立了4个数据库db1,db ...

  7. MyCat | 分库分表实践

    引言 先给大家介绍2个概念:数据的切分(Sharding)根据其切分规则的类型,可以分为两种切分模式. 切分模式 一种是按照不同的表(或者Schema)来切分到不同的数据库(主机)之上,这种切可以称之 ...

  8. mycat 分库分表

    单库分表已经在上篇写过了,这次写个分库分表,不同在于配置文件上的一点点不同 <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> &l ...

  9. MyCat分库分表入门

    1.分区 对业务透明,分区只不过把存放数据的文件分成了许多小块,例如mysql中的一张表对应三个文件.MYD,MYI,frm. 根据一定的规则把数据文件(MYD)和索引文件(MYI)进行了分割,分区后 ...

  10. mysql(5):主从复制和分库分表

    主从复制集群 概念:主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点. 使用场景: 读写分离:使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读 ...

随机推荐

  1. 如何用PHP写接口

    当用PHP编写API接口时,可以使用PHP中的框架(如Laravel.Symfony.CodeIgniter等)来简化开发过程.接下来,以使用Laravel框架为例,提供一个简单的示例代码: 首先,确 ...

  2. 重磅| Falcon 180B 正式在 Hugging Face Hub 上发布!

    引言 我们很高兴地宣布由 Technology Innovation Institute (TII) 训练的开源大模型 Falcon 180B 登陆 Hugging Face! Falcon 180B ...

  3. 通过提示大语言模型进行个性化推荐LLM-Rec: Personalized Recommendation via Prompting Large Language Models

    论文原文地址:https://arxiv.org/abs/2307.15780 本文提出了一种提示LLM并使用其生成的内容增强推荐系统的输入的方法,提高了个性化推荐的效果. LLM-Rec Promp ...

  4. C# Wke例子 -- WebUI登录窗口

    概述 Wke介绍: http://blog.csdn.net/sabrecode/article/details/78145938 用Wke做了一个登录窗口, webui比较特殊. 因为它就是一个超文 ...

  5. Unity 游戏开发、01 基础篇 | 阿发入门篇全课程学习笔记

    Unity Documentation .全课程视频 .第15,24章视频 afanihao Unity入门,全课程内容个人学习笔记,简单部分一笔带过,重点内容带 2.3 窗口布局 Unity默认窗口 ...

  6. 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(2)

    在前面随笔<循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(1)>中介绍了Mvvm 的开发,以及一些界面效果,本篇随笔继续深入探讨 ...

  7. padans 常用的统计方法

    #coding=utf-8import pandas as pdimport numpy as npfile="./IMDB-Movie-Data.csv"data=pd.read ...

  8. Modbus动态链接库供多语言使用 | Go

    Modbus协议控制动态链接库 应用场景 基于各门语言都有各自的modbus协议库,且良莠不齐,而且在具体的框架下可能存在版本依赖问题, 而且对modbus协议存在比较多的细节处理,可以查看modbu ...

  9. python系列:argparse详解 外部传参给python的库

    一.argparse简介 argparse 模块是 Python 内置的用于命令项选项与参数解析的模块,argparse 模块可以让人轻松编写用户友好的命令行接口,能够帮助程序员为模型定义参数. ar ...

  10. js数据结构--字典

    <!DOCTYPE html> <html> <head> <title></title> </head> <body&g ...