MySQL数据库实践学习(十八)
2023-06-13 09:13:59 时间
3.5.3.4 枚举分片
1). 介绍
通过在配置文件中配置可能的枚举值, 指定数据分布到不同数据节点上, 本规则适用于按照省份、性别、状态拆分数据等业务 。
2). 配置
schema.xml中逻辑表配置:
<!-- 枚举 -->
<table name="tb_user" dataNode="dn4,dn5,dn6" rule="sharding-by-intfile-enumstatus"
/>
schema.xml中数据节点配置:
<dataNode name="dn4" dataHost="dhost1" database="itcast" />
<dataNode name="dn5" dataHost="dhost2" database="itcast" />
<dataNode name="dn6" dataHost="dhost3" database="itcast" />
rule.xml中分片规则配置:
<tableRule name="sharding-by-intfile">
<rule>
<columns>sharding_id</columns>
<algorithm>hash-int</algorithm>
</rule>
</tableRule>
<!-- 自己增加 tableRule -->
<tableRule name="sharding-by-intfile-enumstatus">
<rule>
<columns>status</columns>
<algorithm>hash-int</algorithm>
</rule>
</tableRule>
<function name="hash-int" class="io.mycat.route.function.PartitionByFileMap">
<property name="defaultNode">2</property>
<property name="mapFile">partition-hash-int.txt</property>
</function>
partition-hash-int.txt ,内容如下 :
1=0
2=1
3=2
分片规则属性含义:
3). 测试
配置完毕后,重新启动MyCat,然后在mycat的命令行中,执行如下SQL创建表、并插入数据,查看数据分布情况。
CREATE TABLE tb_user (
id bigint(20) NOT NULL COMMENT 'ID',
username varchar(200) DEFAULT NULL COMMENT '姓名',
status int(2) DEFAULT '1' COMMENT '1: 未启用, 2: 已启用, 3: 已关闭',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
insert into tb_user (id,username ,status) values(1,'Tom',1);
insert into tb_user (id,username ,status) values(2,'Cat',2);
insert into tb_user (id,username ,status) values(3,'Rose',3);
insert into tb_user (id,username ,status) values(4,'Coco',2);
insert into tb_user (id,username ,status) values(5,'Lily',1);
相关文章
- MySQL数据库实践学习(二十九)
- MySQL数据库原理学习(四十)
- MySQL Error number: 3598; Symbol: ER_WINDOW_EXPLAIN_JSON; SQLSTATE: HY000 报错 故障修复 远程处理
- 方案MySQL主从备份恢复方案:实现高可用方便稳定(mysql主从备份恢复)
- MySQL触发器:更新你的数据库!(mysql触发器更新)
- MySQL数据库:实现数据的转码技术(mysql数据库转码)
- MySQL数据库安装指南(mysql数据库怎么安装)
- MySQL: 指定编码创建数据库(mysql创建库指定编码)
- 教程MySQL读写分离技术视频教程:提高性能与数据安全(mysql读写分离视频)
- MySQL vs Oracle: 数据库管理的对比(mysql与oracle的区别)
- 连接阿里云上MySQL:实现从零构建强大的数据库(连接阿里云上的mysql)
- 快速完成MySQL批量数据导入(mysql批量导入)
- MySQL的排它锁:确保数据事务安全(mysql排它锁)
- MySQL索引引擎:优化数据库查询的新方法(mysql索引引擎)
- MySQL数据库中分组数大于1的情况(mysql分组大于1)
- MySQL驱动程序下载:简单、快速地获取数据库连接(mysql数据库驱动下载)
- 如何通过MySQL b 命令行快速管理数据库(mysql-b)
- MySQL 存储过程:优化数据库操作流程(mysql使用存储过程)
- MySQL自动更新:实现更稳定、安全数据库(mysql自动更新)
- 妙用MySQL:导入导出数据库技巧(mysql导入导出数据库)
- 优化MySQL多实例:实现性能优化的新方法(mysql多实例性能)
- 数据库简单易携:使用单文件 MySQL 数据库(单文件mysql)
- 库快来练习MySQL,掌握数据库运维的秘诀!(mysql练习数据)
- MySQL数据库文件转移的技术指导(mysql数据库文件转移)
- MySQL远程复制数据库简单实现指南(mysql远程复制数据库)
- MySQL数据库:掌握操作指令的必备法宝(mysql数据库操作命令)
- MySQL连接数据库指南:快速掌握连接入门技巧(mysql如何连接数据库)
- MySQL中文乱码问题如何解决中文字符变成问号(mysql中中文变成问号)
- 探究MySQL中中国的编码方式(mysql中中国的代码)
- MySQL中如何使用不为空的语句(mysql中不为空怎么写)
- MySQL数据库:64位版本真正的强大(mysql数据库64位)
- 库500万条MySQL数据库的极致驾驭(500万条mysql数据)
- 遇到MySQL安装问题跟着这些步骤解决安装不成功的问题(mysql_ 安装不成功)
- 深入探究MySQL不支持级联插入的原因及解决方式(mysql不支持级联插入)
- MySQL数据库不支持断言语句限制测试与调试(mysql不支持断言)