Mysql之 Mycat 分布式-枚举分片

MySQL学习-运维(2)-Mycat的使用 MyCat是一款开源的MySQL分布式数据库中间件,通过逻辑库和逻辑表的概念屏蔽底层分库分表细节,支持读写分离等功能。其核心配置文件包括schema.xml(定义逻辑库表映射)、rule.xml(配置分片规则)和server.xml(管理用户权限)。MyCat提供多种分片策略,如枚举法、范围分片、取模分片、时间分片等,可根据业务场景选择合适的数据分布方案。系统还支持一致性哈希和复合分片等高级功能,满足不同规模的分布式数据库需求。 阅读详情

使用范围:

对数据进行分片,如 t5表,这个表里面,name有北京跟上海,北京在一个表,上海在一个表

t5 表
id name telnum
1   bj   1212
2   sh   22222
3   bj   3333
4   sh   44444
5   bj   5555

vim /usr/local/mycat/conf/schema.xml

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="sh1">
        <table name="t5" dataNode="sh1,sh2" rule="sharding-by-intfile" />
</schema>
    <dataNode name="sh1" dataHost="oldguo1" database= "taobao" />
    <dataNode name="sh2" dataHost="oldguo2" database= "taobao" />
    <dataHost name="oldguo1" maxCon="1000" minCon="10" balance="1"  writeType="0" dbType="mysql"  dbDriver="native" switchType="1">
        <heartbeat>select user()</heartbeat>
    <writeHost host="db1" url="192.168.78.4:3307" user="root" password="123456">
            <readHost host="db2" url="192.168.78.4:3309" user="root" password="123456" />
    </writeHost>
    <writeHost host="db3" url="192.168.78.5:3307" user="root" password="123456">
            <readHost host="db4" url="192.168.78.5:3309" user="root" password="123456" />
    </writeHost>
    </dataHost>

    <dataHost name="oldguo2" maxCon="1000" minCon="10" balance="1"  writeType="0" dbType="mysql"  dbDriver="native" switchType="1">
        <heartbeat>select user()</heartbeat>
    <writeHost host="db1" url="192.168.78.4:3308" user="root" password="123456">
            <readHost host="db2" url="192.168.78.4:3310" user="root" password="123456" />
    </writeHost>
    <writeHost host="db3" url="192.168.78.5:3308" user="root" password="123456">
            <readHost host="db4" url="192.168.78.5:3310" user="root" password="123456" />
    </writeHost>
    </dataHost>
</mycat:schema>

 

 <table name="t5" dataNode="sh1,sh2" rule="sharding-by-intfile" />

把一张表拆分两张表,用rule,sharding-by-intfile (枚举分片)策略把t5表今进行拆分,分片到两个节点sh1,sh2。

看一下枚举分片策略定义:

cat /usr/local/mycat/conf/rule.xml

 <tableRule name="sharding-by-intfile">
                <rule>
                        <columns>sharding_id</columns>
                        <algorithm>hash-int</algorithm>
                </rule>
        </tableRule>

解释:
                       <columns>sharding_id</columns>     考虑枚举分片最好拿什么列做分片
                       <algorithm>hash-int</algorithm>  hash-in函数名字,通过mycat写好的分片策略

根据测试环境:

<tableRule name="sharding-by-intfile">
      <rule>
          <columns>name</columns>
          <algorithm>hash-int</algorithm>
      </rule>
    </tableRule>

columns 标识将要分片的表字段,algorithm 分片函数, 其中分片函数配置中,mapFile标识配置文件名称

cat /usr/local/mycat/conf/rule.xml    

 <function name="hash-int"
                class="io.mycat.route.function.PartitionByFileMap">
                <property name="mapFile">partition-hash-int.txt</property>
        </function>

解释:

            函数要有参数,参数:你的告诉,怎么分配

         <property name="mapFile">partition-hash-int.txt</property>   mapFile说明了,你就按照partition-hash-int.txt分片

小细节:mycat 默认不识别字符串列,比如字符串bj、或者文字,北京

所以需要加上<property name="type">1</property>   type=1 支持字符串枚举

根据测试环境:

 <function name="hash-int"
                class="io.mycat.route.function.PartitionByFileMap">
                <property name="mapFile">partition-hash-int.txt</property>
               <property name="type">1</property>
        </function>

vim  /usr/local/mycat/conf/partition-hash-int.txt

bj=0     bj输出到0 也就是sh1
sh=1     bj输出到1 也就是sh2
DEFAULT_NODE=1     如果需要其他地区,默认输出到1 也就是sh2

准备测试环境

mysql  -uroot -p123456 -S /data/3307/mysql.sock -P 3307 -e "use taobao;create table t5 (id int not null primary key auto_increment,name varchar(20) not null);"

mysql -uroot -p123456 -S /data/3308/mysql.sock -P 3308  -e "use taobao;create table t5 (id int not null primary key auto_increment,name varchar(20) not null);"

重启mycat 
mycat restart 


mysql -uroot -p123456 -h10.0.0.51 -P8066
use TESTDB;
insert into t5(id,name) values(1,'bj');
insert into t5(id,name) values(2,'sh');
insert into t5(id,name) values(3,'bj');
insert into t5(id,name) values(4,'sh');
insert into t5(id,name) values(5,'tj');


分别登录后端节点查询数据
mysql -uroot -p123456 -S /data/3307/mysql.sock -e "select * from taobao.t5;"

+----+------+
| id | name |
+----+------+
|  1 | bj   |
|  3 | bj   |
+----+------+

mysql -uroot -p123456 -S /data/3308/mysql.sock -e "select * from taobao.t5;"

| id | name |
+----+------+
|  2 | sh   |
|  4 | sh   |
|  5 | tj   |
+----+------+
 

从2D到3D地图开发:手把手教你用Cesium+Three.js实现卫星轨迹可视化(含代码片段) 本文详细介绍了如何结合Cesium与Three.js实现从2D到3D的卫星轨迹可视化。通过对比传统Web GIS框架的局限,阐述了Cesium处理三维地理与轨道数据、Three.js负责高级图形渲染的分工优势,并提供了从环境搭建、坐标同步到动态粒子效果实现的完整代码实战指南。 阅读详情

相关推荐

Lattice CrosslinkNx LIFCL-40实战解析:MIPI D-PHY硬核IP配置与CSI-2数据解析全流程

本文详细解析了Lattice CrosslinkNx LIFCL-40 FPGA中MIPI D-PHY硬核IP的配置与CSI-2数据解析全流程。通过实战案例,介绍了硬件环境搭建、寄存器配置、数据包结构解析及视频流重构技巧,帮助开发者快速掌握高速图像采集系统的设计与优化方法。

weixin_29159613的博客 200

Mycat之——枚举分片

一、简单描述 今天,我们就一起来看下Mycat中的枚举分片,所谓的枚举分片,就是通过在配置文件中配置可能的枚举id,自己配置分片,本规则适用于特定的场景,比如有些业务需要按照省份或区县来做保存,而全国省份区县固定的,具体使用场景可根据自己具体的业务场景确定。 二、实现枚举分片 1、配置rule.xml 在rule.xml添加如下配置: <!-- mapFile标识配置文

冰河的专栏 2163

从零到一:手把手教你构建自定义ReaxFF力场参数

本文手把手教你从零构建自定义ReaxFF力场参数,详解反应力场的动态键序机制与参数化逻辑。通过LAMMPS实战演示,涵盖训练数据准备、参数优化算法选择及性能优化技巧,助力研究人员精准模拟化学反应过程。适用于材料科学、催化研究等领域,特别适合已掌握分子动力学基础的进阶用户提升力场开发能力。

weixin_28365523的博客 1058

MyCat分片规则之枚举分片

一、简介 在MyCat中,有许多分片规则,比如枚举分片、取模分片、范围分片、一致性hash分片等等,每一种分片规则都需要根据项目中具体的业务已经数据量来决定,所以说没有哪一种分片规则很好,哪一种分片规则就不好,都是依业务来定。本文将对其中一种,也是比较简答的分片规则 - 枚举分片进行简单的介绍,并通过一个示例说明其用法以及规则。 二、实现方式 按照partition-hash-int-enu...

weixiaohuai的博客 1039

[Ethernet in CANoe]4--CANoe工程中SOME/IP报文的详细介绍(二)

介绍了SOME/IP报文的SD报文(ServiceDiscovery),本片文章开始继续介绍SOME/IP报文。

汽车ECU自动化测试 1114

Titans:谷歌新型神经记忆架构,突破 Transformer 长序列处理的瓶颈

Titans 是谷歌推出的新型神经网络架构,通过神经长期记忆模块突破 Transformer 在处理长序列数据时的瓶颈,支持并行计算,显著提升训练效率。

士多啤梨先生の博客 992

MyCat专题(十)-MyCat分片规则之枚举分片

1.简介 在MyCat中,有许多分片规则,比如枚举分片、取模分片、范围分片、一致性hash分片等等,每一种分片规则都需要根据项目中具体的业务已经数据量来决定,所以说没有哪一种分片规则很好,哪一种分片规则就不好,都是依业务来定。本文将对其中一种,也是比较简答的分片规则 - 枚举分片进行简单的介绍,并通过一个示例说明其用法以及规则。 2.实现方式 按照partition-hash-int-enum.t...

专业的计算机毕业设计指南 700

Halcon深度学习2 -- 标注工具Deep Learning Tool下载安装

Deep Learning Tool为Halcon开发公司MVTec官方提供的一款标注工具: 标记培训数据是任何深度学习应用程序的关键的第一步。 当涉及到应用程序的性能,准确性和健壮性时,此标记数据的质量起着重要作用。 借助MVTec深度学习工具,我们正在为HALCON用户创建全面流畅的深度学习体验。 通过开发我们自己的解决方案,我们确保可以将其输出无缝集成到HALCON中。 该应用程序还使我们能够吸收在开发HALCON深度学习算法时获得的丰富经验和专业知识,而该算法自然也涉及很多标签! Deep.

fengyingv的博客 1万+

【MySQL合集】运维9-Mycat分库分表之枚举分片

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

Reische的博客 1122

基于 LSTM 的船舶轨迹预测,单步预测

基于 LSTM 的船舶轨迹预测,单步预测

fyuhao的博客 1万+

寄存器与计数器设计(Verilog)

always @(posedge Reset or posedge Clock)//请在括号中补充敏感信号列表。always @(negedge Resetn , posedge Clock)//请在括号中补充敏感信号列表。always @(negedge Resetn,posedge Clock)//请在括号中补充敏感信号列表。//为了便于自动评测,请勿更改n的值。//为了便于自动评测,请勿更改n的值。//为了便于自动评测,请勿更改n的值。//为了便于自动评测,请勿更改n的值。

M_inherit的博客 362

Mycat--实践--07--分片--枚举

Mycat–实践–07–分片–枚举 1、介绍 1.1、配置说明 <tableRule name="sharding-by-intfile"> <rule> <columns>sharding_id</columns> <algorithm>hash-int</algorithm> </rule> </tableRule> <function name="

zhou920786312的博客 401

从LLM到VLM再到VLA:三兄弟的“变形记”——定义、架构演进与最新趋同

LLM、VLM、VLA虽然在时间上依次出现,但它们在架构上的演进并非线性替代,而是形成了一个从“理解语言”到“理解世界”再到“改变世界”的认知闭环。VLA之所以能在短短三年内从概念走向现实,正是因为它站在了LLM和VLM的肩膀上——RT-2的泛化能力来自互联网规模的VLM预训练,π0的扩散策略受益于生成式模型的突破,Helix的双系统架构借鉴了“快慢思考”的认知科学洞见。而反过来,VLA在实际部署中遇到的效率瓶颈和实时性要求,也在倒逼LLM和VLM向更轻量、更高效的架构方向演进。

Ven%的博客 490

mysql分布式架构的含义_MySQL分布式架构——MyCAT

一、MyCAT准备环境两台虚拟机 db01 db02每台创建四个mysql实例:3307 3308 3309 3310节点主从规划箭头指向谁是主库192.168.1.1:3307 192.168.1.2:3307192.168.1.1:3309 ------> 192.168.1.1:3307192.168.1.2:3309 ------> 192.168.1...

weixin_42181693的博客 239

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

MySQL分布式解决方案

Mycat是一个开源的分布式数据库系统,其核心功能是分表分库,即将一个大表水平分割为多个小表

2201_75459324的博客 911

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

MySQL-分布式架构

MySQL 分布式架构 1. 结构图 2. MyCAT基础架构准备 2.1 环境准备: 两台虚拟机 db01 db02 每台创建四个mysql实例:3307 3308 3309 3310 2.2 删除历史环境: pkill mysqld rm -rf /data/330* mv /etc/my.cnf /etc/my.cnf.bak 2.3 创建相关目录初始化数据 mkdir /data/33{07..10}/data -p my

每天进步一点点!!! 1376

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

MySQL分布式架构-中间件Mycat

1. MyCAT基础架构图 2. MyCAT基础架构准备 2.1 环境准备: 两台虚拟机 db01 db02 每台创建四个mysql实例:3307 3308 3309 3310 2.2 删除历史环境: pkill mysqld rm -rf /data/330* mv /etc/my.cnf /etc/my.cnf.bak 2.3 创建相关目录初始化数据 mkdir /data/33{07..10}/data -p mysqld --initialize-insecu.

干货满满~ 326

08MySQL 架构篇二

Mycat分布式架构1.MyCAT基础架构图2.MyCAT基础架构准备1 环境准备:2 删除历史环境:3 创建相关目录初始化数据4 准备配置文件和启动脚本5 修改权限,启动多实例6 节点主从规划7 分片规划8 开始配置9 检测主从状态3.分布式解释4.Mycat应用01.应用前环境准备02.用户创建及数据库导入 测试03.配置读写分离以及高可用文件05.参数介绍5.Mycat分布式垂直分表 1.MyCAT基础架构图 2.MyCAT基础架构准备 1 环境准备: 两台虚拟机 db01 db02 每台创建

weixin_45598345的博客 93

第17章、MySQL分库分表

mysql -uroot -p123456 -h 127.0.0.1 -P8066 对外连接(root 123456是server.xml配置文件中的)schema.xml ----->主配置文件(读写分离、高可用、分表、节点控制)rule.xml ----->分片规则配置文件(分片规则列表、使用方法)下载Mycat-server-xxxxx.linux.tar.gz。server.xml ----->mycat软件本身相关的配置。use TESTDB;1主1从:读写分离架构。

weixin_42257277的博客 992

分布式结构

当双主双从模式(M1->S1,M2->S2,并且M1与 M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡。要在所有的分片上保存一份数据即可,Mycat 在Join操作中,业务表与全局表进行Join聚合会优先选择相同分片内的全局表join,2. balance="1",全部的readHost与standby writeHost参与select语句的负载均衡,简单的说,当写节点宕机后,后面跟的readhost也不提供服务,这时候standby的writehost就提供写服务,

qq_69931534的博客 156

MyCat配置全解析:从单机到分布式数据库集群的平滑过渡

本文详细解析了MyCat数据库中间件的配置实践,指导如何从单机MySQL平滑过渡到高可用分布式集群。文章深入探讨了MyCat的核心价值、环境搭建、MySQL主从复制配置,并重点解析了实现读写分离的关键配置与高级特性,帮助开发者构建高性能、可扩展的数据库架构。

weixin_29300241的博客 252

【mysql】mysql之读写分离以及分库分表

Mycat读写分离 & 分库分表   什么是mycat   Mycat原理   为什么使用Mycat   Mycat读写分离    环境准备    二进制安装mysql   mysql分布式架构介绍   mycat基础应用    配置文件介绍    读写分离配置    读写分离和高可用    垂直分表    分片(水平拆分)    取模分片(mod-long):    枚举分片    Mycat全局表    E-R分片

zerotoall的博客 1430

03-Mycat进阶

Mycat进阶 MySQL 主从复制 主从复制的含义 在 MySQL 多服务器的架构中,至少要有一个主节点(master),跟主节点相对的, 我们把它叫做从节点(slave)。主从复制,就是把主节点的数据复制到一个或者多个从节点。主服务器和从服务器可以在不同的 IP 上,通过远程连接来同步数据,这个是异步的过程。 主从复制的形式 一主一从/一主多从 多主一从 主主复制 级联复制 主从复制的...

weixin_39169791的博客 793

mysql(四)分表分库

数据库分表分库策略 数据库分表分库原则遵循垂直拆分与水平拆分。 垂直拆分 垂直拆分就是根据不同的业务,分为不同的数据库,比如会员数据库、订单数据库、支付数据库等,垂直拆分在大型电商系统中用的非常常见。 优点:拆分后业务清晰,拆分规则明确,系统之间整合或扩展容易。 缺点:部分业务表无法join,只能通过接口方式解决,提高了系统复杂度,存在分布式事务问题。 水平拆分 把同一个表拆到...

daziyuanazhen的博客 205

Mycat引领MySQL分布式部署新纪元:性能与扩展性的双重飞跃

在当今数据驱动的时代,数据库的性能和可扩展性成为了企业IT架构中不可忽视的关键要素。随着数据量的爆炸式增长,传统的单节点MySQL数据库逐渐暴露出性能瓶颈和扩展性受限的问题。为了应对这些挑战,分布式数据库架构应运而生,而Mycat作为一款开源的数据库中间件,凭借其强大的数据分片、读写分离和动态扩展能力,在MySQL分布式部署领域崭露头角。本文旨在深入探讨Mycat在MySQL分布式部署中的应用与实践。我们将从Mycat的基本概念入手,逐步揭开其神秘面纱,详细解析其工作原理、配置方法以及性能优化策略。

xyyy060908的博客 1829

MyCat安装配置,及数据分片

保持数据`表结构不变`,通过某种策略对**数据**进行分片。这样每一片数据分散到不同库中,达到了分布式的目的。 水平拆分可以支撑非常大的数据量。

总结分享 1822
上一篇: Mysql之 Mycat 分布式-取模分片(mod-long)
下一篇: Docker 介绍、安装、基础搭建 --01
Jerry00713
博客等级 码龄11年 273粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值