mycat2 分库分表

news2025/1/11 2:19:43

mycat2读写分离
mysql主从复制

mycat2 分库分表 实在 配置mycat2 读写分离 及主从复制的基础上完成的

以下所有操作 在mycat 登录后执行

一、配置分库分表数据源

name:数据名称 一般以以最后一个字母判断 r 是读 w是写
url: 真实数据源ip地址 理论上是每一个ip都不相同的 我这儿是为了测试 做成的相同
user:数据库账号
password:数据库密码

#第一个写库
/*+ mycat:createDatasource{"name":"dw0","url":"jdbc:mysql://192.168.245.132:3306","user":"root","password":"Root_123"} */
#第二个读库
/*+ mycat:createDatasource{"name":"dr0","url":"jdbc:mysql://192.168.245.132:3306","user":"root","password":"Root_123"} */
#第二个写库
/*+ mycat:createDatasource{"name":"dw1","url":"jdbc:mysql://192.168.245.136:3306","user":"root","password":"Root_123"} */
#第二个读库
/*+ mycat:createDatasource{"name":"dr1","url":"jdbc:mysql://192.168.245.136:3306","user":"root","password":"Root_123"} */
显示所有数据源
/*+ mycat:showDataSources{} */; 

二、配置分库分表集群

name: 建议以c开头
masters: 主机数据源名称
replicas: 从机数据源名称

#配置第一组集群
/*! mycat:createCluster{"name": "c0", "masters": ["dw0"], "replicas": ["dr0"]}*/;
#配置第二组集群
/*! mycat:createCluster{"name": "c1", "masters": ["dw1"], "replicas": ["dr1"]}*/;
# 显示所有集群
/*+ mycat:showClusters{} */; 

创建、使用数据库

CREATE DATABASE mycat_test;

use mycat_test;

分库分页方法

一、分片表配置

CREATE TABLE orders(
    id BIGINT NOT NULL,
    order_type INT,
    customer_id INT,
    amount DECIMAL(10, 2),
    PRIMARY KEY(id)
) ENGINE = INNODB DEFAULT CHARSET = utf8
dbpartition BY mod_hash(id )tbpartition BY mod_hash( id )tbpartitions 1 dbpartitions 2;

dbpartition BY mod_hash(id) 这部分是在说数据库级别的分区。“dbpartition”
意思是对数据库进行分区。“mod_hash (id)” 是分区的方式,它会根据 “id” 这个字段的值来做分区。
“mod_hash” 是一种哈希算法,叫取模哈希。就好像有一个公式,把 “id” 的值放进去算一下,得到一个结果。根据这个结果把数据分散存到不同的数据库分区里,这样做可以让数据分布得更均匀,就像把很多东西分别放在不同的盒子里,而不是都堆在一个盒子里,方便以后查找和管理。
tbpartition BY mod_hash(id) 这是关于表级别的分区。“tbpartition” 表示对表进行分区。同样是用
“id” 字段,通过 “mod_hash”
这种算法来分区。这就好比在每个盒子(数据库分区)里,再把东西用小隔板(表分区)分开,也是为了让数据分布得更合理,让查询数据的时候能更快地定位到需要的数据在哪里。
tbpartitions 1 dbpartitions 2 “tbpartitions 1” 是说表分区的数量是 1个。修改这个值来增加表分区数量。
“dbpartitions 2”表示数据库分区的数量是 2 个,就是说数据会被分成两部分存到两个不同的数据库分区里面。

插入数据

INSERT INTO orders(id,order_type,customer_id,amount) VALUES(1,101,100,100100.00);
INSERT INTO orders(id,order_type,customer_id,amount) VALUES(2,101,100,100300.00);
INSERT INTO orders(id,order_type,customer_id,amount) VALUES(3,101,101,120000.00);
INSERT INTO orders(id,order_type,customer_id,amount) VALUES(4,101,101,103000.00);
INSERT INTO orders(id,order_type,customer_id,amount) VALUES(5,102,101,100400.00);
INSERT INTO orders(id,order_type,customer_id,amount) VALUES(6,102,100,100020.00);

在这里插入图片描述

主机会多出一个mycat_test_0表 从机会多出mycat_test_1表
mycat_test_0表 内容

在这里插入图片描述

mycat_test_1表 内容

在这里插入图片描述

通过Mycat 查询 得出完整数据

在这里插入图片描述

二、全局表(广播表)通过 BROADCAST创建

CREATE TABLE orders(
    id BIGINT NOT NULL,
    order_type INT,
    customer_id INT,
    amount DECIMAL(10, 2),
    PRIMARY KEY(id)
) ENGINE = INNODB DEFAULT CHARSET = utf8 BROADCAST
插入数据
INSERT INTO broadcast_test (id,name)  VALUES (1,'a');
INSERT INTO broadcast_test (id,name)  VALUES (2,'b');
INSERT INTO broadcast_test (id,name)  VALUES (3,'c');
INSERT INTO broadcast_test (id,name)  VALUES (4,'d');
会发现两张表的内容相同

在这里插入图片描述

关联表(ER表)分片规则一样mod_hash

关联表也成为绑定表或者ER表。表示数据逻辑上有关联性的两个或多个表,例如订单和订单详情表。对于关联表,通常希望他们能够有相同的分片规则,这样在进 行关联查询时,能够快速定位到同一个数据分片中。

的order表基础上创建order_detail表 分片规则一样 mycat2 分片规则

CREATE TABLE orders_detail(
    `id` BIGINT NOT NULL,
		detail VARCHAR(2000),
		order_id INT,
		PRIMARY KEY (id)
) ENGINE = INNODB DEFAULT CHARSET = utf8
dbpartition BY mod_hash(order_id )tbpartition BY mod_hash( order_id )tbpartitions 1;

查看er表

/*+ mycat:showERGroup{} */

插入数据

INSERT INTO mycat_test.orders_detail(id,detail,order_id) VALUES(1,'detail1',1);
INSERT INTO mycat_test.orders_detail(id,detail,order_id) VALUES(2,'detail1',2);
INSERT INTO mycat_test.orders_detail(id,detail,order_id) VALUES(3,'detail1',3);
INSERT INTO mycat_test.orders_detail(id,detail,order_id) VALUES(4,'detail1',4);
INSERT INTO mycat_test.orders_detail(id,detail,order_id) VALUES(5,'detail1',5);
INSERT INTO mycat_test.orders_detail(id,detail,order_id) VALUES(6,'detail1',6);

查询数据

SELECT * FROM orders o INNER JOIN orders_detail od on o.id = od.order_id;

结果
在这里插入图片描述

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

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

相关文章

python pandas数据处理,对比两个xlsx文档的两列数据做对比匹配,然后复制单元格值

1,文档数据 文档A 批次编号编号风险等级意见ps001code1低风险同意ps001code2中风险同意ps001code3低风险同意ps001code4低风险同意ps001code5低风险同意ps001code6低风险同意ps002code11低风险同意ps002code12中风险否决ps002code13低风险否决ps002code14低风险否决…

Pytorch 手写数字识别 深度学习基础分享

本篇是一次内部分享,给项目开发的同事分享什么是深度学习。用最简单的手写数字识别做例子,讲解了大概的原理。 手写数字识别 展示首先数字识别项目的使用。项目实现过程: 训练出模型准备html手写板flask 框架搭建简单后端 简单手写数字识别 深度学习必…

WPS EXCEL 使用 WPS宏编辑器 写32位十六进制数据转换为浮点小数的公式。

新建EXCLE文件 另存为xlsm格式的文件 先打开WPS的开发工具中的宏编辑器 宏编辑器编译环境 在工作区添加函数并编译,如果有错误会有弹窗提示,如果没有错误则不会弹 函数名字 ”HEXTOFLOAT“ 可以自己修改。 function HEXTOFLOAT(hex) { // 将十六…

沃丰科技智能客服在跨境电商独立站中的核心角色

随着全球化进程的加速和互联网技术的不断发展,跨境电商行业蓬勃兴起,为消费者提供了更广阔、更便捷的购物选择。在这样一个竞争激烈的市场环境中,优质的客户服务成为了企业脱颖而出的关键。沃丰科技智能客服凭借其先进的技术和人性化的设计理…

langgraph实现无观测推理 (Reasoning without Observation)

图例 1. 图状态 在 LangGraph 中,每个节点都会更新一个共享的图状态。当任何节点被调用时,状态就是该节点的输入。 下面,我们将定义一个状态字典,用以包含任务、计划、步骤和其他变量。 from typing import List from typing…

2024企业数据资产入表合规指引——解读

更多数据资产资讯关注公众:数字化转型home 本报告旨在为企业数据资产入表提供合规保障。随着数字经济的发展,数据资产已成为重要战略资源和新生产要素。财政部发布的《企业数据资源相关会计处理暂行规定》明确,自2024年1月1日起,数…

19,[极客大挑战 2019]PHP1

这个好玩 看到备份网站字眼&#xff0c;用dirsearch扫描 在kali里打开 找出一个www.zip文件 访问一下 解压后是这个页面 class.php <?php include flag.php; error_reporting(0); class Name{ private $username nonono; private $password yesyes; public …

计算机键盘简史 | 键盘按键功能和指法

注&#xff1a;本篇为 “计算机键盘简史 | 键盘按键功能和指法” 相关文章合辑。 英文部分机翻未校。 The Evolution of Keyboards: From Typewriters to Tech Marvels 键盘的演变&#xff1a;从打字机到技术奇迹 Introduction 介绍 The keyboard has journeyed from a humb…

《Clustering Propagation for Universal Medical Image Segmentation》CVPR2024

摘要 这篇论文介绍了S2VNet&#xff0c;这是一个用于医学图像分割的通用框架&#xff0c;它通过切片到体积的传播&#xff08;Slice-to-Volume propagation&#xff09;来统一自动&#xff08;AMIS&#xff09;和交互式&#xff08;IMIS&#xff09;医学图像分割任务。S2VNet利…

HarmonyOS(65) ArkUI FrameNode详解

Node 1、Node简介2、FrameNode2.1、创建和删除节点2.2、对FrameNode的增删改2.3、 FramNode的查询功能3、demo源码4、总结5、参考资料1、Node简介 在HarmonyOS(63) ArkUI 自定义占位组件NodeContainer介绍了自定义节点复用的原理(阅读本本篇博文之前,建议先读读这个),在No…

Elasticsearch使用(2):docker安装es、基础操作、mapping映射

1 安装es 1.1 拉取镜像 docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/elasticsearch:7.17.3 1.2 运行容器 运行elasticsearch容器&#xff0c;挂载的目录给更高的权限&#xff0c;否则可能会因为目录权限问题导致启动失败&#xff1a; docker r…

java实现SpringBoot项目分页查询和消费的方法

简介 why&#xff1a; 最近在项目中&#xff0c;有一个sql需要查询100多万的数据&#xff0c;且需要在代码中遍历处理。面临两个问题 一次性查询出太多数据&#xff0c;速度较慢当前服务器内存支持以上操作&#xff0c;但是随着数据量的增多&#xff0c;以后可能会出现内存溢出…

专为高性能汽车设计的Armv9架构的Neoverse V3AE CPU基础知识与软件编码特性解析

一、ARMv9以及V3AE处理器架构 Armv9架构的Arm Neoverse V系列处理器是专为高性能计算设计的产品线&#xff0c;其中V3AE&#xff08;Advanced Efficiency&#xff09;特别强调了性能与效率之间的平衡。以下是关于Armv9架构下Neoverse V3AE处理器结构和指令集的一些详细解读&am…

Python数据清洗之重复数据处理

大家好&#xff0c;在数据处理和分析的过程中&#xff0c;重复数据是一个常见的问题。重复的数据不仅会影响数据的准确性&#xff0c;还可能导致模型训练中的偏差。因此&#xff0c;检测并清理重复数据是数据清洗中的重要步骤。Python 的 Pandas 提供了强大的功能来检测、标记和…

【实战教程】使用YOLO和EasyOCR实现视频车牌检测与识别【附源码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

【项目实战】基于python+爬虫的电影数据分析及可视化系统

注意&#xff1a;该项目只展示部分功能&#xff0c;如需了解&#xff0c;文末咨询即可。 本文目录 1.开发环境2 系统设计 2.1 设计背景2.2 设计内容 3 系统页面展示 3.1 用户页面3.2 后台页面3.3 功能展示视频 4 更多推荐5 部分功能代码 5.1 爬虫代码5.2 电影信息代码 1.开发环…

SDXL的优化工作

本文详细介绍SDXL在SD系列的基础上做了什么优化&#xff0c;包括模型架构优化和训练过程数据的相关优化策略。 目录 Stable Diffusion XL核心基础内容 SDXL整体架构初识 Base模型 Refiner模型 Base——VAE Base——U-Net Base——Text Encoder Refiner GPT补充【TODO】 SDXL官方…

计算机网络 —— HTTPS 协议

前一篇文章&#xff1a;计算机网络 —— HTTP 协议&#xff08;详解&#xff09;-CSDN博客 目录 前言 一、HTTPS 协议简介 二、HTTPS 工作过程 1.对称加密 2.非对称加密 3.中间人攻击 4.引入证书 三、HTTPS 常见问题 1.中间人能否篡改证书&#xff1f; 2.中间人能否调…

YonBuilder移动开发——调用手机系统的浏览器打开网页

概述 在YonBuilder移动开发中&#xff0c;可以通过使用引擎提供的 api.openWin 或者 api.openFrame 函数方法通过内置的浏览器引擎在App内部打开相关的远程H5网站的网页。但是在实际项目开发中&#xff0c;可能会有一种需求&#xff0c;调用手机操作系统提供的系统浏览器去打开…

美畅物联丨视频接入网关如何配置 HTTPS 证书

在安防领域&#xff0c;视频接入网关&#xff08;Video Access Gateway&#xff0c;VAG&#xff09;是视频监控系统的重要组成部分&#xff0c;其职责是把视频数据从前端设备传输至后端服务器。配置HTTPS证书后&#xff0c;可对视频流进行加密传输&#xff0c;避免数据在网络传…