MySQL-分库分表详解(二)

news2024/11/24 22:46:53

♥️作者:小刘在C站

♥️个人主页: 小刘主页 

♥️努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生!

♥️学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏:云计算技术

♥️小刘私信可以随便问,只要会绝不吝啬,感谢CSDN让你我相遇!

前言

上章文章讲到MySQL-分库分表(一)本章继续

目录

MySQL

2.4 目录介绍

2.5 概念介绍

3 MyCat入门

3.1 需求

 3.2 环境准备

3.3 配置

1). schema.xml

2). server.xml

3.4 测试

3.4.1 启动

 3.4.2 测试

1). 连接MyCat

2). 数据测试


MySQL

MySQL是一个关系型数据库管理系统由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。

2.4 目录介绍

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

conf :存放 mycat 的配置文件
lib :存放 mycat 的项目依赖包( jar
logs :存放 mycat 的日志文件

2.5 概念介绍

MyCat 的整体结构中,分为两个部分:上面的逻辑结构、下面的物理结构。

 

MyCat 的逻辑结构主要负责逻辑库、逻辑表、分片规则、分片节点等逻辑结构的处理,而具体的数据存储还是在物理结构,也就是数据库服务器中存储的。
在后面讲解 MyCat 入门以及 MyCat 分片时,还会讲到上面所提到的概念。

3 MyCat入门

3.1 需求

由于 tb_order 表中数据量很大,磁盘 IO 及容量都到达了瓶颈,现在需要对 tb_order 表进行数
据分片,分为三个数据节点,每一个节点主机位于不同的服务器上 , 具体的结构,参考下图:

 3.2 环境准备

准备 3 台服务器:
192.168.200.210 MyCat 中间件服务器,同时也是第一个分片服务器。
192.168.200.213 :第二个分片服务器。
192.168.200.214 :第三个分片服务器。

 

并且在上述 3 台数据库中创建数据库 db01

3.3 配置

1). schema.xml

schema.xml 中配置逻辑库、逻辑表、数据节点、节点主机等相关信息。具体的配置如下:
<?xml version="1.0"?>

<!DOCTYPE mycat:schema SYSTEM "schema.dtd">

<mycat:schema xmlns:mycat="http://io.mycat/">

<schema name="DB01" checkSQLschema="true" sqlMaxLimit="100">

<table name="TB_ORDER" dataNode="dn1,dn2,dn3" rule="auto-sharding-long"

/>

</schema>

<dataNode name="dn1" dataHost="dhost1" database="db01" />

<dataNode name="dn2" dataHost="dhost2" database="db01" />

<dataNode name="dn3" dataHost="dhost3" database="db01" />

<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.200.210:3306?

useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;characterEncoding=utf8"

user="root" password="1234" />

</dataHost>
</mycat:schema>

2). server.xml

需要在 server.xml 中配置用户名、密码,以及用户的访问权限信息,具体的配置如下:
<user name="root" defaultAccount="true">
<property name="password">123456</property>
<property name="schemas">DB01</property>
<!-- 表级 DML 权限设置 -->
<!--
<privileges check="true">
<schema name="DB01" dml="0110" >
<table name="TB_ORDER" dml="1110"></table>
</schema>
</privileges>
-->
</user>
<user name="user">
<property name="password">123456</property>
<property name="schemas">DB01</property>
<property name="readOnly">true</property>
</user>
上述的配置表示,定义了两个用户 root user ,这两个用户都可以访问 DB01 这个逻辑库,访
问密码都是 123456 ,但是 root 用户访问 DB01 逻辑库,既可以读,又可以写,但是 user 用户访问
DB01 逻辑库是只读的。

3.4 测试

3.4.1 启动

配置完毕后,先启动涉及到的 3 台分片服务器,然后启动 MyCat 服务器。切换到 Mycat 的安装目录,执行如下指令,启动 Mycat:        
 
#启动
bin/mycat start
#停止
bin/mycat stop
Mycat 启动之后,占用端口号 8066
启动完毕之后,可以查看 logs 目录下的启动日志,查看 Mycat 是否启动完成。

我们看到我们是通过MySQL的指令来连接的MyCat,因为MyCat在底层实际上是模拟了MySQL的协议。

 3.4.2 测试

1). 连接MyCat

通过如下指令,就可以连接并登陆 MyCat
mysql -h 192.168.200.210 -P 8066 -uroot -p123456

2). 数据测试

然后就可以在 MyCat 中来创建表,并往表结构中插入数据,查看数据在 MySQL 中的分布情况。
CREATE TABLE TB_ORDER (
id BIGINT(20) NOT NULL,
title VARCHAR(100) NOT NULL ,
PRIMARY KEY (id)
) ENGINE=INNODB DEFAULT CHARSET=utf8 ;
INSERT INTO TB_ORDER(id,title) VALUES(1,'goods1');
INSERT INTO TB_ORDER(id,title) VALUES(2,'goods2');
INSERT INTO TB_ORDER(id,title) VALUES(3,'goods3');
INSERT INTO TB_ORDER(id,title) VALUES(1,'goods1');
INSERT INTO TB_ORDER(id,title) VALUES(2,'goods2');
INSERT INTO TB_ORDER(id,title) VALUES(3,'goods3');
INSERT INTO TB_ORDER(id,title) VALUES(5000000,'goods5000000');
INSERT INTO TB_ORDER(id,title) VALUES(10000000,'goods10000000');
INSERT INTO TB_ORDER(id,title) VALUES(10000001,'goods10000001');
INSERT INTO TB_ORDER(id,title) VALUES(15000000,'goods15000000');
INSERT INTO TB_ORDER(id,title) VALUES(15000001,'goods15000001');
经过测试,我们发现,在往 TB_ORDER 表中插入数据时:
如果 id 的值在 1-500w 之间,数据将会存储在第一个分片数据库中。
如果 id 的值在 500w-1000w 之间,数据将会存储在第二个分片数据库中。
如果 id 的值在 1000w-1500w 之间,数据将会存储在第三个分片数据库中。
如果 id 的值超出 1500w ,在插入数据时,将会报错。
为什么会出现这种现象,数据到底落在哪一个分片服务器到底是如何决定的呢? 这是由逻辑表配置时的一个参数 rule 决定的,而这个参数配置的就是分片规则,关于分片规则的配置,在后面的课中 会详细讲解。

♥️关注,就是我创作的动力

♥️点赞,就是对我最大的认可

♥️这里是小刘,励志用心做好每一篇文章,谢谢大家

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

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

相关文章

港联证券|利好刺激创新药板块迎久违拉升 估值处历史低位

昨日&#xff0c;国家医保局就《谈判药品续约规则》及《非独家药品竞价规则》公开征求意见。在此利好消息影响下&#xff0c;创新药板块集体拉升。截至收盘&#xff0c;创新药指数涨幅近1%&#xff0c;实现四连阳。港股创新药指数收盘涨超3%。 机构认为政策利好创新药发展 《非…

Impala3.4源码阅读笔记(一)data-cache功能

前言 本文为笔者个人阅读Apache Impala源码时的笔记&#xff0c;仅代表我个人对代码的理解&#xff0c;个人水平有限&#xff0c;文章可能存在理解错误、遗漏或者过时之处。如果有任何错误或者有更好的见解&#xff0c;欢迎指正。 基本信息 data-cache是impala在本地的数据缓…

解决github无法打开问题

第一步&#xff0c;去如下目录复制hosts文件副本到桌面【切记&#xff0c;要复制到其他文件夹下&#xff0c;不要直接改原文件】。 C:\Windows\System32\drivers\etc 第二步&#xff0c;以文本文档形式打开复制的副本文件&#xff0c;添加如下语句保存后【替换】掉原有hosts文件…

Ubuntu 16.04 安装Arduino ESP32开发环境记录

文章目录 安装arduino开发环境&#xff1a;安装ESP32开发环境编译上传 安装arduino开发环境&#xff1a; Arduino IDE 2.x好像对于ubuntu16.04不太支持&#xff0c;尝试了一下执行不了。这里 我们可以下载早期的1.8.x版本。 根据自己的电脑类型在红框中选择对应的版本进行下载…

CHI 控制信号说明

&#xff08;部分描述采用了他人的文章&#xff0c;待后续补充出处&#xff0c;此处为草稿&#xff09; Address PA/VA 位宽之间的对应关系&#xff1b; Non-secure bit 该bit指示了secure和non-secure空间&#xff0c;对于snoopable的trans, 即使地址相同&#xff0c;secure和…

阿里首次公布 Java10W 字面试复盘笔记,面面俱到、太全了

Java 面试 “金三银四&#xff0c;金九银十”这个字眼对于程序员应该是再熟悉不过的了&#xff0c;每年的金三银、金九银十都会有很多程序员找工作、跳槽等一系列的安排。说实话&#xff0c;面试中 7 分靠能力&#xff0c;3 分靠技能&#xff1b;在刚开始的时候介绍项目都是技…

代码行数统计插件(Intellij IDEA 代码统计插件 Statistic 详细使用教程)

代码行数统计插件&#xff08;Intellij IDEA 代码统计插件 Statistic 详细使用教程&#xff09; 在项目的开发过程中&#xff0c;你有没有遇到以下的一些场景&#xff1a; 想统计一下整个项目的代码量有多少&#xff0c;比如有多少源代码文件&#xff0c;总体有多少行代码&…

多元分类预测 | Matlab基于灰狼优化深度置信网络(GWO-DBN)的分类预测,多特征输入模型,GWO-DBN分类预测

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | Matlab基于灰狼优化深度置信网络(GWO-DBN)的分类预测,多特征输入模型,GWO-DBN分类预测 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab,程序可…

基于深度强化学习的人岗匹配算法研究

一.需求分析 面向HR的人岗匹配功能&#xff0c;帮助HR高效挑选简历。模型能够根据给出的不同岗位需求&#xff0c;在简历库中挑选出与岗位需求最匹配的几个简历推荐给HR。岗位的常见需求包括&#xff1a;年龄、学历、工作年限三方面。简历也具有以下几个特征&#xff1a;应聘人…

第一章 SSD综述

SSD&#xff08;Solid State Drive&#xff09;&#xff0c;即固态硬盘&#xff0c;以半导体存储数据&#xff0c;用纯电子电路实现&#xff0c;没有任何机械设备。 HDD&#xff08;Hard DiskDrive&#xff09;&#xff0c;即传统机械硬盘。 一、SSD与HDD 1.1 两者的异同 1…

50从零开始学Java之万类之王Object是怎么回事?

作者&#xff1a;孙玉昌&#xff0c;昵称【一一哥】&#xff0c;另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 在前面的文章中&#xff0c;壹哥跟大家说过&#xff0c;Java是面向对象的编程语言&#xff0c;而在面…

Ymodem协议应知应会

1.优势 在嵌入式环境中&#xff0c;一旦需要和设备之间通过某种协议传输文件&#xff0c;Ymodem协议因为具备如下特征&#xff1a; 基本的流控基本的握手支持多文件传输支持校验协议精简&#xff0c;代码量少用众多既有客户端软件可以供测试&#xff0c;免写上位机程序。 因…

C++11:右值引用

文章目录 1. C左值和右值2. C右值引用 右值引用是一种新的 C 语法&#xff0c;基于右值引用引申出了 2 种 C 编程技巧&#xff0c;分别为移动语义和完美转发。本文主要介绍什么是右值引用以及它的基本用法。 1. C左值和右值 右值引用可以从字面意思上理解&#xff0c;指的是以…

【springboot+云计算】B/S医院信息管理系统源码(云HIS)

一、基于云计算技术的B/S架构的医院管理系统(简称云HIS) 采用前后端分离架构&#xff0c;前端由Angular框架、JavaScript语言开发&#xff1b;后端使用Java语言开发。系统遵循服务化、模块化原则开发&#xff0c;具有强大的可扩展性&#xff0c;二次开发方便快捷。为医疗机构提…

2023最新ChatGPT商业运营网站源码+支持ChatGPT4.0+新增GPT联网功能+支持ai绘画+实时语音识别输入+用户会员套餐+免费更新版本

2023最新ChatGPT商业运营网站源码支持ChatGPT4.0新增GPT联网功能支持ai绘画实时语音识别输入用户会员套餐免费更新版本 一、AI创作系统二、系统程序下载三、系统介绍四、安装教程五、主要功能展示六、更新日志 一、AI创作系统 提问&#xff1a;程序已经支持GPT3.5、GPT4.0接口…

Python之全-新-深-细详解

文章目录 第一章 Python环境搭建1.1. 计算机基础1.1.1. 什么是编程1.1.2. 什么是进制1.1.2.1. 进制的简介1.1.2.2. 进制的分类1.1.2.3. 进制的表示1.1.2.4. 进制的转换1.1.2.5. 原反补(了解)数据的转换负数的表示补码的引入 1.2. Python的介绍1.3. Python的安装与使用1.3.1. Py…

SSM简单项目遇到的几个问题

这几个问题&#xff0c;干扰了我很长时间。 主要因为书本的例子&#xff0c;是通过controller层返回到jsp层。但是&#xff0c;最后一个SSM项目&#xff0c;它用的是controller返回信息给Service层&#xff0c;再由Service层返回Jsp层。 实训&#xff1a;编写一个模糊查询姓名…

前端(三)——MVC与MVVM模式的battle

&#x1f604;博主&#xff1a;小猫娃来啦 &#x1f604;文章核心&#xff1a;mvc模式mvvm模式的battle 文章目录 mvc模式是什么mvc模式的优缺点优化mvc模式致命的缺点mvvm是什么&#xff0c;和mvc有什么关系&#xff1f;细看mvvm和mvc的不同 mvvm的缺点简化视图层开发 mvc模式…

E类逆变器Ltspice仿真

1 参数计算&#xff08;待续&#xff09; &#xff08;1&#xff09;确定振荡频率&#xff1a; &#xff08;2&#xff09;计算各器件参数&#xff1b; 2 电路仿真 &#xff08;1&#xff09;电路图 &#xff08;2&#xff09;电路分析 3 结果 &#xff08;1&#xff09;…

vue项目业务实现,视频监控-文件流,大屏适配方案(v-scale-screen),websocket前端

最近把以前的业务场景及解决方案整理了一下&#xff0c;具体实现的工具如下&#xff1a; 监控-视频文件流>video.js videojs-contrib-hls 大屏适配方案> v-scale-screen websocket>sockjs-client webstomp-client 视频监控-文件流 使用方法 下载video插件&#xf…