MyCat 数据库中间件

news2024/11/15 9:20:53

一、介绍

1、单数据库进行数据存储的问题:

IO瓶颈:热点数据太多,数据库缓存不足以容纳这些热点数据,产生大量磁盘IO,效率较低。

CPU瓶颈:排序、分组、连接查询、聚合统计等SQL会耗费大量的CPU资源。

2、分库分表:

分库分表的中心思想都是将数据分散存储,使得单一数据库/表的数据量变小来缓解单一数据库的性能问题,从而达到提升数据库性能的目的。

分库分表的形式,主要是两种:垂直拆分和水平拆分。而拆分的粒度,一般分为分库和分表。

实现技术:MyCat 数据库分库分表中间件,不用调整代码即可实现分库分表。

(1) 垂直拆分:

① 垂直分库:以表为依据,根据业务将不同表拆分到不同库中。

每个库的表结构都不一样。

每个库的数据也不一样。

所有库的并集是全量数据。

② 垂直分表:以字段为依据,根据字段属性将不同字段拆分到不同表中。

每个表的结构都不一样。

每个表的数据也不一样,一般通过一列(主键/外键)关联。

所有表的并集是全量数据。

(2) 水平拆分:

① 水平分库:以字段为依据,按照一定策略,将一个库的数据拆分到多个库中。

每个库的表结构都一样。

每个库的数据都不一样。

所有库的并集是全量数据。

② 水平分表:以字段为依据,按照一定策略,将一个表的数据拆分到多个表中。

每个表的表结构都一样。

每个表的数据都不一样。

所有表的并集是全量数据。

二、MyCat 概述

1、mycat 介绍:

Mycat是开源的、活跃的、基于Java语言编写的MySQL数据库中间件。可以像使用mysql一样来使用 mycat,具体的分库分表的策略,只需要在MyCat中配置即可。

2、mycat 安装:

(1) 环境部署:

10.1.1.10 :MyCat中间件服务器、分片服务器(MySQL、jdk、mycat)

10.1.1.30 :分片服务器(MySQL)

10.1.1.40 :分片服务器(MySQL)

(2) 安装 jdk:

① 解压安装包:

tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local

cd /usr/local

mv jdk1.8.0_171/ jdk/

② 配置环境变量:

vim /etc/profile

export JAVA_HOME=/usr/local/jdk

export PATH=$JAVA_HOME/bin:$PATH

source /etc/profile

(3) 安装mycat:

tar -zxvf Mycat-server-1.6.7.3-release-20210913163959-linux.tar.gz -C /usr/local/

目录介绍:

bin : 存放可执行文件,用于启动停止mycat

conf:存放mycat的配置文件

lib:存放mycat的项目依赖包(jar)

logs:存放mycat的日志文件

更改mysql驱动包:

lib中的mysql-connector-java-5.1.35.jar版本过低,需要替换成mysql-connector-java-8.0.22.jar。

修改权限:

chmod 777 mysql-connector-java-8.0.22.jar

3、mycat 结构:

MyCat的整体结构分为两个部分:逻辑结构和物理结构。

① 逻辑结构(不存放真实数据):

schema:逻辑层面上的数据库。

table:逻辑表,一个逻辑库中可以存有多个逻辑表。

dataNode:分片节点,一个逻辑表中的数据可分散存放在多个分片节点中 ;分片的划分由分片规则决定。

② 物理结构(存放真实数据):

真实的数据库与分片节点相关联,根据分片规则存储数据。

4、mycat 配置:

10.1.1.10 :MyCat中间件服务器、第一个分片服务器

10.1.1.30 :第二个分片服务器

10.1.1.40 :第三个分片服务器

在上述3台分片服务器库中创建数据库 db01。

(1) 配置 schema.xml:

在schema.xml中配置逻辑库、逻辑表、数据节点、节点主机等相关信息。

① 配置mycat逻辑数据库DB01,配置逻辑数据表TB_ORDER,设置三个分片节点dn1、dn2、dn3,设置分片规则为auto-sharding-long。

● auto-sharding-long:根据id值进行分片

vim rule.xml

auto-sharding-long引用了一个range-long方式

以id值作为分片依据:

0-5000000 分配到第一个数据库;

5000001-10000000 分配到第二个数据库;

10000001-15000000 分配到第三个数据库。

② 配置分片节点所关联的真实数据库名及存储数据的库名。

③ 配置真实数据库的信息:

修改name为dhost1/2/3,dbDriver为jdbc。

三台都为读写数据库,角色都是master,配置url,设置登录数据库所需的用户名和密码。

● jdbc:Java Database Connectivity,Java数据库连接,是一种用于数据库访问的应用程序API。

url="jdbc:mysql://10.1.1.10:3306?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8" user="root" password="1234" />

(2) 配置 server.xml:

在server.xml中配置登录mycat所需的用户名、密码,以及用户的访问权限信息。

设置登录mycat的用户为root,密码为123456,可访问DB01;

user用户类似,但user用户权限为只读。

5、mycat 测试:

(1) 启动 mycat:

切换到Mycat的安装目录:

bin/mycat start #启动

bin/mycat stop #停止

● 小插曲:第一次启动mycat时失败了,查看启动日志后发现报错原因如下:

Caused by: org.xml.sax.SAXParseException; lineNumber: 18; columnNumber: 88; The reference to entity "serverTimezone" must end with the ';' delimiter.

这条报错信息的意思是在配置真实数据库的url时,serverTimezone结尾漏了一个";",修改了三台真实服务器的url后,mycat启动成功。

(2) 连接 mycat:

mysql -h 10.1.1.10 -P 8066 -uroot -p123456

在MyCat中创建表,并往表结构中插入数据,查看数据在MySQL中的分布情况。

create table tb_order (id BIGINT(20));

mycat 会根据预设的分片规则 (auto-sharding-long) 将数据分配到指定的数据库中。

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

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

相关文章

Rest接口/Nginx日志记录和采集

文章目录 一、Rest接口日志二、Nginx日志三、采集日志四、夜莺查看Nginx日志五、夜莺查看Rest接口日志 一、Rest接口日志 记录日志字典定义 接口URL接口名称,类别,入参全记录,出参全记录,入参字段1:中文名1/入参字段2:中文名2,出参字段1:中文名1/test/api/login账户登录,登录…

【C++】开始使用优先队列

送给大家一句话: 这世上本来就没有童话,微小的获得都需要付出莫大的努力。 – 简蔓 《巧克力色微凉青春》 开始使用优先队列 1 前言2 优先队列2.1 什么是优先队列2.2 使用手册2.3 仿函数 3 优先队列的实现3.1 基本框架3.2 插入操作3.3 删除操作3.4 其他函数 4 总结T…

kubernetes的网络通信实现原理

网络原理 Kubernetes网络原理详解:一、Kubernetes 网络实现1.容器到容器(同一Pod内)通信流程:2. pod之间的通信(以Calico为例): 二、CNI 网络模型三、网络策略四、开源的容器网络方案五、 常见网…

Linux管道共享内存

前言 进程虽然是独立运行的个体,但它们之间有时候需要协作才能完成一项工作,比如有两个进程需要同步数据,进程 A 把数据准备好后,想把数据发往进程 B,进程 B 必须被提前通知有数据即将到来,或者进程 A 想发…

Spark集群的搭建

1.1搭建Spark集群 Spark集群环境可分为单机版环境、单机伪分布式环境和完全分布式环境。本节任务是学习如何搭建不同模式的Spark集群,并查看Spark的服务监控。读者可从官网下载Spark安装包,本文使用的是spark-2.0.0-bin-hadoop2.7.gz。 1.1.1搭建单机版…

《乱弹篇(30)厌战的杜诗》

时下地球村有一伙成天叫嚣着“打打杀杀”、鼓吹快快发动战争的狂人,他们视老百姓的生命如草芥,毫不珍惜。没有遭受过战火焚烧的人,也跟着成天吠叫“快开战吧”。然而中国唐朝大诗人却是个“厌战派”,他对战争的厌恶集中表现在诗《…

实在RPA设计器试用导引

一、产品概述 实在RPA设计器是一款将人工智能(AI)与机器人流程自动化(RPA)深度融合的可视化自动流程编辑器。它通过AI推荐与桌面嵌入式交互,极大简化了RPA的使用难度,让普通业务人员也能轻松使用。实在RPA设计器具备以下核心优势: 兼容性&a…

我与C++的爱恋:类和对象(四)

​ ​ 🔥个人主页:guoguoqiang. 🔥专栏:我与C的爱恋 ​ 朋友们大家好!本篇是类和对象的最后一个部分。 一、static成员 声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之…

系统架构最佳实践 -- 相关JAVA架构

1. java 类加载器架构 2. JVM 架构 3. Java 技术体系 4. 线程运行架构 5. Java 体系(编译与运行)结构 6. JMS 技术架构 7. JMX 技术架构 8. Spring 架构 9. Hibernate 架构 10. ibatis 架构 11. Struts2 架构 12. Struts1 架构 13. JBPM 14. EJB 技术架构…

Java面试八股之marshalling和demarshalling

marshalling和demarshalling Marshalling(序列化)是将内存中的对象状态转化为适合传输或存储的格式(如字节流、JSON、XML),以便进行网络通信、持久化存储或跨平台/语言交互操作。Demarshalling(反序列化&a…

渗透测试入门教程,从零基础入门到精通(非常详细)

目录 什么是渗透测试 渗透测试的重要性 渗透测试的前置技能 开始入门学习路线 什么是渗透测试 渗透测试,通常被视为模拟黑客的一种安全评估行为,其目的在于全面挖掘目标网站或主机的潜在安全漏洞。与真实的黑客攻击不同,渗透测试旨在发现…

9.MMD 基础内容总结及制作成品流程

前期准备 1. 导入场景和模型 在左上角菜单栏,显示里将编辑模型时保持相机和光照勾选上,有助于后期调色 将抗锯齿和各向异性过滤勾掉,可以节省资源,避免bug 在分辨率设定窗口,可以调整分辨率 3840x2160 4k分辨率 1…

05 MySQL--字段约束、事务、视图

1. CONSTRAINT 约束 创建表时,可以给表的字段添加约束,可以保证数据的完整性、有效性。比如大家上网注册用户时常见的:用户名不能为空。对不起,用户名已存在。等提示信息。 约束包括: 非空约束:not null检…

kafka实验部署

一、前期准备 二、kafka实验 在zookeeper后继续进行操作 2.1 为ndoe1、node2、node3作出部署 2.1.1 解压kafka压缩包(node1举例) 2.1.2 操作 将解压后的kafka移动到kafka,进入到kafka下的config中,复制文件 2.1.2.1 编辑server.pr…

LWIP开发之静态IP为什么接收和发送不了数据

使用的硬件开发板是探索者F4 V3版本 这里用的LWIP的lwIP例程7 lwIP_NETCONN_UDP实验 问了开发板的官方和其他人都说不清楚;搞了两天,浪费了两天时间; 最奇葩的问题还在于只能单片机发送,上位机能接收。而上位机发送单片机不能接…

虚拟机扩容方法

概述 我的虚拟机开始的内存是40G,接下来要扩成60GB 扩容步骤 步骤1 步骤2 步骤3 修改扩容后的磁盘大小,修改后的值只可以比原来的大,修改完成后点击扩展,等待扩展完成 步骤4 虽然外面扩展成功,但是新增的磁盘空间虚拟机内部还…

自媒体个人品牌IP策划打造孵化运营方案

【干货资料持续更新,以防走丢】 自媒体个人品牌IP策划打造孵化运营方案 部分资料预览 资料部分是网络整理,仅供学习参考。 ppt可编辑(完整资料包含以下内容)目录个人IP孵化方案概要: 1. 目标定位与市场分析 - 女性…

QMT和Ptrade有什么区别?该如何选择?

QMT(Quantitative Model Trading)和Ptrade(Professional Trading)是两种不同的交易策略和方法,它们在金融市场中被广泛应用。了解它们的区别有助于投资者根据自己的需求和目标做出选择: QMT(量…

AI+PS快捷键大全!

hello,我是小索奇, 你会用Photoshop(PS)或者(Illustrator)AI吗?相信很多人都会接触到吧,但有一部分人很少用快捷键,仅凭借鼠标点击来实现功能,殊不知快捷键能…

在线拍卖系统,基于SpringBoot+Vue+MySql开发的在线拍卖系统设计和实现

目录 一. 系统介绍 二. 功能模块 2.1. 管理员功能模块 2.2. 用户功能模块 2.3. 前台首页功能模块 2.4. 部分代码实现 一. 系统介绍 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系…