Mycat分片-水平拆分

news2024/11/23 4:40:51

目录

场景

准备

配置

测试


续接上篇:Mycat分片-垂直拆分-CSDN博客

 

场景

在业务系统中, 有一张表(日志表), 业务系统每天都会产生大量的日志数据 , 单台服务器的数据存 储及处理能力是有限的, 可以对数据库表进行拆分。

 

准备

准备三台服务器,具体的结构如下:(本次操作使用续接上篇的环境操作,就不需要重新搭建了)

 

配置

schema.xml

(在上次垂直拆分的基础上新增水平配置即可,不需要删除重新搭建)

该文件全部替换为下述配置,参照自己的名字进行修改或者依照我的参数不修改进行测试。

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

	<schema name="SHOPPING" checkSQLschema="true" sqlMaxLimit="100">
		<table name="tb_goods_base" dataNode="dn1" primaryKey="id" />
		<table name="tb_goods_brand" dataNode="dn1" primaryKey="id" />
		<table name="tb_goods_cat" dataNode="dn1" primaryKey="id" />
		<table name="tb_goods_desc" dataNode="dn1" primaryKey="goods_id" />
		<table name="tb_goods_item" dataNode="dn1" primaryKey="id" />
		
		<table name="tb_order_item" dataNode="dn2" primaryKey="id" />
		<table name="tb_order_master" dataNode="dn2" primaryKey="order_id" />
		<table name="tb_order_pay_log" dataNode="dn2" primaryKey="out_trade_no" />
		
		<table name="tb_user" dataNode="dn3" primaryKey="id" />
		<table name="tb_user_address" dataNode="dn3" primaryKey="id" />
		
		<table name="tb_areas_provinces" dataNode="dn1,dn2,dn3" primaryKey="id"/>
		<table name="tb_areas_city" dataNode="dn1,dn2,dn3" primaryKey="id"/>
		<table name="tb_areas_region" dataNode="dn1,dn2,dn3" primaryKey="id"/>
	</schema>
	
	<schema name="ITCESHI" checkSQLschema="true" sqlMaxLimit="100">
		<table name="tb_log" dataNode="dn4,dn5,dn6" primaryKey="id" rule="mod-long" />
	</schema>


    <dataNode name="dn1" dataHost="dhost1" database="shopping" />
    <dataNode name="dn2" dataHost="dhost2" database="shopping" />
    <dataNode name="dn3" dataHost="dhost3" database="shopping" />
	
	<dataNode name="dn4" dataHost="dhost1" database="itceshi" />
	<dataNode name="dn5" dataHost="dhost2" database="itceshi" />
	<dataNode name="dn6" dataHost="dhost3" database="itceshi" />

    <dataHost name="dhost1" maxCon="1000" minCon="10" balance="0"
              writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <writeHost host="master" url="jdbc:mysql://192.168.226.100:3306?useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;characterEncoding=utf8" user="root" password="admin" />
    </dataHost>

    <dataHost name="dhost2" maxCon="1000" minCon="10" balance="0"
              writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <writeHost host="master" url="jdbc:mysql://192.168.226.101:3306?useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;characterEncoding=utf8" user="root" password="admin" />
    </dataHost>

    <dataHost name="dhost3" maxCon="1000" minCon="10" balance="0"
              writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <writeHost host="master" url="jdbc:mysql://192.168.226.102:3306?useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;characterEncoding=utf8" user="root" password="admin" />
    </dataHost>

</mycat:schema>

server.xml

(在上次垂直拆分的基础上新增水平配置即可,不需要删除重新搭建)

仅仅修改下述模块即可,其他模块不同动

	<user name="root" defaultAccount="true">
		<property name="password">123456</property>
		<property name="schemas">SHOPPING,ITCESHI</property>
		
		<!-- 表级 DML 权限设置 -->
		<!-- 		
		<privileges check="false">
			<schema name="TESTDB" dml="0110" >
				<table name="tb01" dml="0000"></table>
				<table name="tb02" dml="1111"></table>
			</schema>
		</privileges>		
		 -->
	</user>

	<user name="user">
		<property name="password">123456</property>
		<property name="schemas">SHOPPING</property>
		<property name="readOnly">true</property>
	</user>

登录三台主机的mysql创建一个库,名字为itceshi

CREATE DATABASE itceshi;

测试

重启mycat

/usr/local/mycat/bin/mycat stop
/usr/local/mycat/bin/mycat start

配置完毕后,重新启动MyCat,然后在mycat的命令行中,执行如下SQL创建表、并插入数据,查看数 据分布情况。

CREATE TABLE tb_log (
id bigint(20) NOT NULL COMMENT 'ID',
model_name varchar(200) DEFAULT NULL COMMENT '模块名',
model_value varchar(200) DEFAULT NULL COMMENT '模块值',
return_value varchar(200) DEFAULT NULL COMMENT '返回值',
return_class varchar(200) DEFAULT NULL COMMENT '返回值类型',
operate_user varchar(20) DEFAULT NULL COMMENT '操作用户',
operate_time varchar(20) DEFAULT NULL COMMENT '操作时间',
param_and_value varchar(500) DEFAULT NULL COMMENT '请求参数名及参数值',
operate_class varchar(200) DEFAULT NULL COMMENT '操作类',
operate_method varchar(200) DEFAULT NULL COMMENT '操作方法',
cost_time bigint(20) DEFAULT NULL COMMENT '执行方法耗时, 单位 ms',
source int(1) DEFAULT NULL COMMENT '来源 : 1 PC , 2 Android , 3 IOS',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO tb_log (id, model_name, model_value, return_value, return_class,
operate_user, operate_time, param_and_value, operate_class, operate_method,
cost_time,source)
VALUES('1','user','insert','success','java.lang.String','10001','2022-01-06
18:12:28','{\"age\":\"20\",\"name\":\"Tom\",\"gender\":\"1\"}','cn.itcast.contro
ller.UserController','insert','10',1);
INSERT INTO tb_log (id, model_name, model_value, return_value, return_class,
operate_user, operate_time, param_and_value, operate_class, operate_method,
cost_time,source)
VALUES('2','user','insert','success','java.lang.String','10001','2022-01-06
18:12:27','{\"age\":\"20\",\"name\":\"Tom\",\"gender\":\"1\"}','cn.itcast.contro
ller.UserController','insert','23',1);
INSERT INTO tb_log (id, model_name, model_value, return_value, return_class,
operate_user, operate_time, param_and_value, operate_class, operate_method,
cost_time,source)
VALUES('3','user','update','success','java.lang.String','10001','2022-01-06
18:16:45','{\"age\":\"20\",\"name\":\"Tom\",\"gender\":\"1\"}','cn.itcast.contro
ller.UserController','update','34',1);
INSERT INTO tb_log (id, model_name, model_value, return_value, return_class,
operate_user, operate_time, param_and_value, operate_class, operate_method,
cost_time,source)
VALUES('4','user','update','success','java.lang.String','10001','2022-01-06
18:16:45','{\"age\":\"20\",\"name\":\"Tom\",\"gender\":\"1\"}','cn.itcast.contro
ller.UserController','update','13',2);
INSERT INTO tb_log (id, model_name, model_value, return_value, return_class,
operate_user, operate_time, param_and_value, operate_class, operate_method,
cost_time,source)
VALUES('5','user','insert','success','java.lang.String','10001','2022-01-06
18:30:31','{\"age\":\"200\",\"name\":\"TomCat\",\"gender\":\"0\"}','cn.itcast.co
ntroller.UserController','insert','29',3);
INSERT INTO tb_log (id, model_name, model_value, return_value, return_class,
operate_user, operate_time, param_and_value, operate_class, operate_method,
cost_time,source)
VALUES('6','user','find','success','java.lang.String','10001','2022-01-06
18:30:31','{\"age\":\"200\",\"name\":\"TomCat\",\"gender\":\"0\"}','cn.itcast.co
ntroller.UserController','find','29',2);

可以看到,插入数据按照配置里使用的取模分片规则进行存储。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2059317.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年Google开发者大会:AI赋能的Web、移动和云开发

一、大会概览 1.1 开幕与主题演讲 在北京国家会议中心举办的2024年Google开发者大会&#xff0c;是一场汇聚了全球顶尖开发者和技术爱好者的盛会。大会的开幕由Google大中华区总裁陈俊廷先生的主题演讲引领&#xff0c;他不仅回顾了中国开发者在全球技术舞台上的卓越表现&…

华硕飞行堡垒键盘全部失灵【除电源键】

华硕飞行堡垒FX53VD键盘全部失灵【除电源键】 前言一、故障排查二、发现问题三、使用方法总结 前言 版本型号&#xff1a; 型号 ASUS FX53VD&#xff08;华硕-飞行堡垒&#xff09; 板号&#xff1a;GL553VD 故障情况描述&#xff1a; 键盘无法使用&#xff0c;键盘除开机键外…

小型无人机训练与运用技术研究

1. 基础理论与概念 小型无人机&#xff08;Small Unmanned Aerial Vehicle, sUAV&#xff09;作为近年来快速发展的技术领域&#xff0c;其基础理论与概念是理解其全貌的基石。小型无人机通常指质量轻、尺寸小、易于携带和操作的无人飞行器&#xff0c;广泛应用于航拍、环境监…

基于yolov5 红绿灯交通检测,可对道路红绿灯进行检测可根据界面信息直接上传图片,视频等

模型训练&#xff1a;使用特定的数据集来训练YOLOv5模型以准确识别红绿灯。Web界面&#xff1a;构建一个用户友好的Web界面&#xff0c;让用户能够轻松上传图片或视频进行检测。性能优化&#xff1a;针对实时应用进行性能优化&#xff0c;确保检测速度足够快。部署&#xff1a;…

【高级IO-1】探索五种 I/O 模型及其高级I/O技术:基于 fcntl() 的代码应用

文章目录 1. 五种IO模型2. 高级IO的重要概念2.1 同步通信 与 异步通信2.2 阻塞与非阻塞2.3 如何理解四者间的关系&#xff1f; 3. 其他高级IO3.1 非阻塞 I/O3.2 纪录锁&#xff08;Record Lock&#xff09;3.3 系统 V 流机制3.4 I/O 多路复用&#xff08;I/O Multiplexing&…

自养号测评技术:如何挑选适合的IP环境方案

市面上的IP服务及常见问题 当前市场上常见的IP服务包括911、Luminati、Google Fi、TM流量卡、Socks专线等。这些服务在为用户提供网络代理或VPN服务时&#xff0c;常会遇到以下主要问题&#xff1a; 1. 高负载与重复率高&#xff1a;由于使用人数众多&#xff0c;导致网络拥堵…

投入式水位计的测量精度和稳定性如何保证

投入式水位计作为水位监测的重要工具&#xff0c;其测量精度和稳定性直接关系到数据的准确性和可靠性。在实际应用中&#xff0c;多种因素会影响投入式水位计的测量精度和稳定性&#xff0c;了解这些因素并采取相应的措施&#xff0c;是确保测量准确性的关键。 1、环境因素 温度…

Tomca安装和配置教程

目录 一.背景: 二.下载和安装Tomcat&#xff1a; 三.配置Tomcat环境变量 四.检查Tomcat安装成功 一.背景: Tocamt是Apache软件基金会(Apache Software Fouondation)的jakarta项目中的一个核心项目&#xff0c;由Apache、Sun以及其他一些公司及个人共同开发而成。Tocmat是一…

微服务⽹关

微服务网关&#xff08;API Gateway&#xff09;是微服务架构中的一个重要组成部分&#xff0c;它充当客户端与后端服务之间的单一入口。API网关负责处理所有的出入请求&#xff0c;提供集中式的安全、路由、负载均衡、监控等功能。 主要功能&#xff1a; 请求路由&#xff1a…

【JAVA】阿里巴巴 EasyExcel:高效的Excel处理解决方案

文章目录 EasyExcel1. EasyExcel 简介1.1 主要特点1.2 依赖配置 2. EasyExcel 核心功能2.1 写入 Excel 文件2.2 读取 Excel 文件 3. 业务开发示例3.1 用户数据导出3.2 用户数据导入 4. 进阶用法4.1 自定义转换器4.2 自定义格式 更多相关内容可查看 附官网地址&#xff1a;https…

Directory Opus 添加管理员获得所有权右键菜单

Directory Opus 添加管理员获得所有权右键菜单 在windows的资源管理器中添加管理员获得所有权的右键菜单很容易,通过注册表就可以了. 但是在Directory Opus需要另外的操作方式, 点击设置->文件类型: 选择运行DOpus函数,因为我的资源管理器已经有这个右键了,就选这个: …

营运管理系统应用架构设计

集中营运系统2020年1月《银行业集中营运规范(JR/T0173-2020号)》标准由全国金融标准化技术委员会审查通过,并由中国人民银行作为银发〔2020〕10号文件正式发布。集中运营的建设核心应该围绕多元化作业和运营能力共享两大方面服务。集中营运的系统建设方向如图10-01所示。 图…

ARP协议分析

目录 实验设备和环境 实验记录 1、ARP报文分析 &#xff08;1&#xff09;建立实验拓扑 &#xff08;2&#xff09;设置抓包接口 &#xff08;3&#xff09;启动设备&#xff0c;开始抓包 &#xff08;4&#xff09;协议分析 ARP代理 &#xff08;1&#xff09;建立实…

如何科学设定短信群发频率

在利用短信群发作为营销策略时&#xff0c;平衡好发送频率至关重要。过于频繁的短信可能招致客户反感甚至被屏蔽&#xff0c;而发送不足则可能导致品牌信息被遗忘。因此&#xff0c;精准把握短信群发频率&#xff0c;是提升客户体验与品牌记忆度的关键。以下是几个常见行业短信…

YOLOv5改进 | 模块融合 | C3融合可变形自注意力模块【模块缝合】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录&#xff1a; 《YOLOv5入门 改…

豆瓣评分8.7!Python pandas创始人亲码的数据分析入门手册!

在众多解释型语言中&#xff0c;Python最大的特点是拥有一个巨大而活跃的科学计算社区。进入21世纪以来&#xff0c;在行业应用和学术研究中采用python进行科学计算的势头越来越猛。 近年来&#xff0c;由于Python有不断改良的库(主要是pandas)&#xff0c;使其成为数据处理任…

原神单机版【无脑一键搭建】纯单机*非私服*稳定版*

版本介绍 版本3.7、4.0、4.0、4.4、4.5、4.6稳定版【过分追新并不稳&#xff0c;合理才完美】 独家原神&#xff0c;游戏内自带剧情任务&#xff0c;完美仿官&#xff0c;一比一完美复制&#xff01; 已经拥有完美剧情、任务、副本、卡池、深渊、全物品、和全部功能和皮肤。 …

【漏洞复现】微商城系统 goods SQL注入漏洞

声明&#xff1a;本文档或演示材料仅用于教育和教学目的。如果任何个人或组织利用本文档中的信息进行非法活动&#xff0c;将与本文档的作者或发布者无关。 一、漏洞描述 微商城是基于微信这一广受欢迎的社交平台的商业应用&#xff0c;利用微信的广泛用户基础和快速传播特性&…

安泰ATA-7015高压放大器在机器人测试中的应用研究

随着机器人技术的快速发展&#xff0c;机器人在各个领域的应用日益广泛。然而&#xff0c;要确保机器人能够稳定、准确地完成各种任务&#xff0c;就需要对其进行严格的测试和评估。在机器人测试过程中&#xff0c;高压放大器作为一种关键的测试设备&#xff0c;发挥着不可替代…

dll文件丢失最简单的修复方法——电脑丢失dll文件一键修复

在日常使用Windows操作系统的过程中&#xff0c;DLL文件由于各种原因丢失或损坏是一个非常常见的问题。这可能导致软件运行不稳定或无法启动等问题&#xff0c;给用户带来诸多不便。尽管手动寻找并替换相应的DLL文件是一个可行的解决方案&#xff0c;但对于大多数用户而言&…