Mongodb入门--头歌实验MongoDB 复制集 分片

一、MongoDB之副本集配置

1.1MongoDB主从复制

主从复制是MongoDB最早使用的复制方式, 该复制方式易于配置,并且可以支持任意数量的从节点服务器,与使用单节点模式相比有如下优点:

在从服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。

可配置读写分离,主节点负责写操作,从节点负责读操作,将读写压力分开,提高系统的稳定性。

MongoDB 的主从复制至少需要两个服务器或者节点。其中一个是主节点,负责处理客户端请求,其它的都是从节点,负责同步主节点的数据。

主节点记录在其上执行的所有写操作,从节点定期轮询主节点获取这些操作,然后再对自己的数据副本执行这些操作。由于和主节点执行了相同的操作,从节点就能保持与主节点的数据同步。

主节点的操作记录称为oplog(operation log),它被存储在 MongoDB 的 local 数据库中。oplog 中的每个文档都代表主节点上执行的一个操作。需要重点强调的是oplog只记录改变数据库状态的操作。比如,查询操作就不会被存储在oplog中。这是因为oplog只是作为从节点与主节点保持数据同步的机制。

 然而,主从复制并非生产环境下推荐的复制方式,主要原因如下两点:

1、灾备都是完全人工的 如果主节点发生故障失败,管理员必须关闭一个从服务器,然后作为主节点重新启动它。然后应用程序必须重新配置连接新的主节点。
2、数据恢复困难 因为oplog只在主节点存在,故障失败需要在新的服务器上创建新的oplog,这意味着任意存在的节点需要重新从新的主节点同步oplog。

因此,在新版本的MongoDB中已经不再支持使用主从复制这种复制方式了,取而代之的是使用副本集复制方式。

1.2MongoDB副本集

MongoDB副本集(Replica Set)其实就是具有自动故障恢复功能的主从集群,和主从复制最大的区别就是在副本集中没有固定的“主节点;整个副本集会选出一个节点作为“主节点”,当其挂掉后,再在剩下的从节点中选举一个节点成为新的“主节点”,在副本集中总有一个主节点(primary)和一个或多个备份节点(secondary)

除了primarysecondary之外,副本集中的节点还可以是以下角色:

成为primary对客户端可见参与投票延迟同步复制数据
Default
Secondary-Only
Hidden
Delayed∕
Arbiters
Non-Voting

官方推荐的副本集最小配置需要有三个节点:一个主节点接收和处理所有的写操作,两个备份节点通过复制主节点的操作来对主节点的数据进行同步备份。

 为什么使用复制集:

  • 备份数据 数据库的数据只有一份的话是极不安全的,一旦数据所在的电脑坏掉,我们的数据就彻底丢失了,所以要有一个备份数据的机制。

  • 故障自动转移 部署了复制集,当主节点挂了后,集群会自动投票再从节点中选举出一个新的主节点,继续提供服务。而且这一切都是自动完成的,对运维人员和开发人员是透明的。当然,发生故障了还是得人工及时处理,不要过度依赖复制集,万一都挂了,那就连喘息的时间都没有了。

  • 在某些特定的场景下提高读性能 默认情况下,读和写都只能在主节点上进行。 下面是 MongoDB 的客户端支持5种复制集读选项:

  • primary :默认模式,所有的读操作都在复制集的主节点进行的;

  • primaryPreferred :在大多数情况时,读操作在主节点上进行,但是如果主节点不可用了,读操作就会转移到从节点上执行;

  • secondary :所有的读操作都在复制集的从节点上执行;

  • secondaryPreferred :在大多数情况下,读操作都是在从节点上进行的,但是当从节点不可用了,读操作会转移到主节点上进行;

  • nearest :读操作会在复制集中网络延时最小的节点上进行,与节点类型无关。

复制集结构,如图1所示:

图1

图 1

1.3分片

分片(sharding)是指将数据库拆分,使其分散在不同的机器上的过程。将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载。基本思想就是将集合切成小块,这些块分散到若干片里,每个片只负责总数据的一部分,最后通过一个均衡器来对各个分片进行均衡(数据迁移)。通过一个名为 mongos 的路由进程进行操作,mongos 知道数据和片的对应关系(通过配置服务器)

什么时候使用分片:

  • 机器的磁盘不够用了,使用分片解决磁盘空间的问题;

  • 单个 mongod 已经不能满足写数据的性能要求,通过分片让写压力分散到各个分片上面,使用分片服务器自身的资源;

  • 想把大量数据放到内存里提高性能,通过分片使用分片服务器自身的资源。

分片结构,如图2所示:

分片结构,如图2所示:

图2

图 2

 

上图中主要有如下所述三个主要组件:

  • Shard :用于存储实际的数据块,实际生产环境中一个 shard server 角色可由几台机器组个一个 replica set 承担,防止主机单点故障;

  • Config Server :mongod 实例,存储了整个 ClusterMetadata,其中包括 chunk 信息;

  • Query Routers :前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。

二、MongoDB 复制集搭建

任务描述

本关任务:按照编程要求搭建复制集。

相关知识

为了完成本关任务,你需要掌握: 1.如何设置配置文件启动服务; 2.如何配置主从节点; 3.如何验证复制集同步; 4.如何手动切换 Primary 节点到指定的节点。

我们在一台虚拟机中启动三个 mongodb 服务,来模拟多台服务器协同工作的情况。

选用三个端口连接数据库:27018、27019、27020。

配置文件设置

因为我们要启动三个 mongodb 服务,所以要准备三个数据存放位置,三个日志文件,三个配置文件。

  • 数据存放位置;

在 /data 路径下创建文件夹 db1、db2 和 db3 来存放三个服务的数据。

  • 日志文件;

在 /logs 路径下创建文件夹 mongo 存放日志文件 mongod1.log、mongod2.log 和 mongod3.log(文件不用创建,到时候会自动生成,但路径即文件夹必须提前创建好)。

  • 配置文件。

在 /etc/mongod 路径下新建三个配置文件,使用配置文件启动 mongod 服务(在之前的实训中我们都是用命令启动的)。

mongod1.conf 内容如下:

port=27018     #配置端口号
dbpath=/data/db1     #配置数据存放的位置
logpath=/logs/mongo/mongod1.log     #配置日志存放的位置
logappend=true     #日志使用追加的方式
fork=true     #设置在后台运行
replSet=YOURMONGO     #配置复制集名称,该名称要在所有的服务器一致

mongod2.conf 内容如下:

port=27019     #配置端口号
dbpath=/data/db2     #配置数据存放的位置
logpath=/logs/mongo/mongod2.log     #配置日志存放的位置
logappend=true     #日志使用追加的方式
fork=true     #设置在后台运行
replSet=YOURMONGO     #配置复制集名称,该名称要在所有的服务器一致

mongod3.conf 内容如下:

port=27020     #配置端口号
dbpath=/data/db3     #配置数据存放的位置
logpath=/logs/mongo/mongod3.log     #配置日志存放的位置
logappend=true     #日志使用追加的方式
fork=true     #设置在后台运行
replSet=YOURMONGO     #配置复制集名称,该名称要在所有的服务器一致

以上工作准备完成,便可以开启服务了,配置文件启动命令(在命令行中输入):

mongod -f /etc/mongod/mongod1.conf
mongod -f /etc/mongod/mongod2.conf
mongod -f /etc/mongod/mongod3.conf

具体效果如图1所示:

图 1

配置主从节点

三个端口的服务全部启动成功后,需要进入其中一个进行配置节点。 设置27019为 arbiter 节点。

  • 进入端口号为27018的进行配置,连接数据库:mongo --port 27018;

  • 选择数据库 admin;

  • 输入配置要求如下

  • 使用 rs.initiate(config)进行初始化:
rs.initiate(config)

具体效果如图2所示:

图 2

如上所示配置成功后,不同端口的数据库登陆后左边的>可能变为如下两种状态:

  • 说明该端口为主节点,如图3所示:

    图 3

  • 说明该端口为从节点,如图4所示:

    图4

    图 4

  • 使用 rs.status() 查看状态。

验证复制集同步

在主数据库插入数据,然后去从数据库查看数据是否一致。

连接主数据库:mongo --port 27018;

use test
db.person.insert({name:'王小明',age:20})

具体步骤如图5所示:

图5

图 5

连接从数据库:mongo --port 27020; 从库查询数据需要设置 slaveOk 为 true;

use test
rs.slaveOk(true)
db.person.find()

具体步骤如图6所示:

图6

图 6

 

至此复制集搭建完成,主数据库的数据的更新后,从数据库的数据也会同步更改,一旦主数据库挂掉,从

切换 Primary 节点到指定的节点

在实际应用中,如果想指定某服务器或端口作为主节点,而不是随机选举一个主节点,可以通过以下方法改变 Primary 节点:

数据库可自动变为主数据库,极大地保障了数据的安全,这也是搭建复制集的必要性。

  • 先进入主节点中进行操作:
mongo --port 27018
  • 查看目前的节点状态:
rs.conf()     #查看配置
rs.status()   #查看状态

其中 priority : 是优先级,默认为 1,优先级 0 为被动节点,不能成为活跃节点。优先级不为 0 则按照由大到小选出活跃节点。

因为默认的都是1,所以只需要把给定的服务器的 priority 加到最大即可。让27020成为主节点,操作如下: 现进入目前的主节点进行操作如下:

cfg=rs.conf()
cfg.members[2].priority=2     #修改priority,members[2]即对应27020端口
rs.reconfig(cfg)     #重新加载配置文件,强制了副本集进行一次选举,优先级高的成为Primary。在这之间整个集群的所有节点都是secondary
rs.status()

这样,给定的服务器或端口就成为了主节点。

编程要求

根据提示,仿照实训中的例子,在右侧命令行进行操作,搭建复制集,要求如下:

  • 数据存放路径为:/data/test/db1、/data/test/db2 和 /data/test/db3;

  • 日志存放路径为:/logs/test/mongod1.log、/logs/test/mongod2.log和 /logs/test/mongod3.log;

  • 配置文件所在路径为:/etc/test/mongod1.conf、/etc/test/mongod2.conf 和 /etc/test/mongod3.conf;

  • 端口选用20001、20002和20003,其中要求20001成为主节点,20002为 arbiter 节点。

root@evassh-13183285:~# mkdir /data/test
root@evassh-13183285:~# mkdir /data/test/db1
root@evassh-13183285:~# mkdir /data/test/db2
root@evassh-13183285:~# mkdir /data/test/db3
root@evassh-13183285:~# mkdir /logs
root@evassh-13183285:~# mkdir /logs/test
root@evassh-13183285:~# cd /etc
root@evassh-13183285:/etc# mkdir /etc/test
root@evassh-13183285:/etc# cd /etc/test
 
root@evassh-13183285:/etc/test# vim mongod1.conf
root@evassh-13183285:/etc/test# mongod -f /etc/test/mongod1.conf
 
root@evassh-13183285:/etc/test# vim mongod2.conf
root@evassh-13183285:/etc/test# mongod -f /etc/test/mongod2.conf
 
root@evassh-13183285:/etc/test# vim mongod3.conf
root@evassh-13183285:/etc/test# mongod -f /etc/test/mongod3.conf

mongod1.conf内容:

port=20001
dbpath=/data/test/db1
logpath=/logs/test/mongod1.log
logappend=true
fork=true
replSet=YOURMONGO 

 

mongod2.conf内容:

port=20002
dbpath=/data/test/db2
logpath=/logs/test/mongod2.log
logappend=true
fork=true
replSet=YOURMONGO 

 

mongod3.conf内容:

port=20003
dbpath=/data/test/db3
logpath=/logs/test/mongod3.log
logappend=true
fork=true
replSet=YOURMONGO 

 

> use admin
switched to db admin
> config = {_id:"YOURMONGO", members:[{_id:0,host:'127.0.0.1:20001'},{_id:1,host:'127.0.0.1:20002',arbiterOnly:true},{_id:2,host:'127.0.0.1:20003'}]}
 
> rs.initiate(config)
 
YOURMONGO:SECONDARY> cfg=rs.conf()
 
YOURMONGO:PRIMARY> cfg.members[2].priority=2
2
YOURMONGO:PRIMARY> rs.reconfig(cfg)
 
YOURMONGO:PRIMARY> rs.status()
 
YOURMONGO:PRIMARY> 

三、MongoDB 分片集搭建

任务描述

本关任务:按照编程要求搭建分片集。

相关知识

为了完成本关任务,你需要掌握: 1.用配置文件启动服务; 2.如何配置 config 节点; 3.如何配置 route 节点; 4.如何验证分片集。

:分片实际是在多台机器配置的,由于评测原因我们在一台机子上模拟,其步骤和原理相同。

 

配置文件设置
  • 同复制集一样,我们要准备目录存放我们的数据和日志:

mkdir -p /data/shard1/db
mkdir -p /logs/shard1/log
mkdir -p /data/shard2/db
mkdir -p /logs/shard2/log
mkdir -p /data/shard3/db
mkdir -p /logs/shard3/log
mkdir -p /data/config/db
mkdir -p /logs/config/log
mkdir -p /logs/mongs/log
  • 配置文件 (新建在 /etc/mongo 目录下);

mongod1.conf 内容如下:

dbpath=/data/shard1/db
logpath=/logs/shard1/log/mongodb.log
port=10001
shardsvr=true
fork=true

mongod2.conf 内容如下:

dbpath=/data/shard2/db
logpath=/logs/shard2/log/mongodb.log
port=10002
shardsvr=true
fork=true

 mongod3.conf 内容如下:

dbpath=/data/shard3/db
logpath=/logs/shard3/log/mongodb.log
port=10003
shardsvr=true
fork=true

其中 shardsvr 是用来开启分片的。

  • 从配置文件启动 mongod 服务:
mongod -f /etc/mongo/mongod1.conf
mongod -f /etc/mongo/mongod2.conf
mongod -f /etc/mongo/mongod3.conf
config 节点
  • 配置启动节点服务:
mongod --dbpath /data/config/db --logpath /logs/config/log/mongodb.log --port 10004 --configsvr --replSet cs --fork
  • 连接 route 节点:
mongo localhost:10004
  • 输入以下命令:
use admin
cfg = {
   _id:'cs',
   configsvr:true,
   members:[
       {_id:0,host:'localhost:10004'}
    ]
}
rs.initiate(cfg)

运行效果如图1所示,说明设置成功:

图1

图 1

route 节点
  • 配置启动节点服务:

mongos --configdb cs/localhost:10004 --logpath /logs/mongs/log/mongodb.log --port 10005 --fork
  • 连接上 route 节点:
mongo localhost:10005
  • 添加分片:
sh.addShard('localhost:10001')
sh.addShard('localhost:10002')
sh.addShard('localhost:10003')

查看集群的状态:分片摘要信息、数据库摘要信息、集合摘要信息等;

sh.status()

运行效果如图 2 所示,说明设置成功:

图2

图 2

分片验证
  • 连接 route 节点:mongo localhost:10005;

数据量太小可能导致分片失败,这是因为 chunksize 默认的大小是 64MB( chunkSize 来制定块的大小,单位是 MB ),使用以下代码把 chunksize 改为 1MB 后,插入数据,便可以分片成功。

use config
db.settings.save( { _id:"chunksize", value: 1 } )
  • 对集合使用的数据库启用分片:
sh.enableSharding("test")
  • 添加索引:
db.user.ensureIndex({ "uid" : 1})
  • 分片:
sh.shardCollection("test.user",{"uid" : 1})
  • 插入10万条数据(大概需要40s 左右):
use test
for(i=0;i<100000;i++){db.user.insert({uid:i,username:'test-'+i})}
  • 再次运行 sh.status() 会多出如图 3 内容,显示了分片的情况。

    图3

    图 3

  • 去各个节点查看数据分布情况:

以下分别是在端口10001(图4)、10002(图5)和10003(图6)查询的文档条数,加起来正好10万条。

图4

图 4

图5

图 5

图6

图 6

编程要求

根据提示,仿照实训中的例子,在右侧命令行进行操作,搭建分片,要求如下:

  • 数据、日志和配置文件存放路径如下:

mkdir -p /data/test2/shard1/db
mkdir -p /logs/test2/shard1/log
mkdir -p /data/test2/shard2/db
mkdir -p /logs/test2/shard2/log
mkdir -p /data/test2/shard3/db
mkdir -p /logs/test2/shard3/log
mkdir -p /data/test2/config/db
mkdir -p /logs/test2/config/log
mkdir -p /logs/test2/mongs/log
mkdir -p /etc/test2
  • 端口选用21001、21002、21003、21004和21005,其中要求21004成为 config 节点,21005为 route 节点。

注意:再次点击测评前删除数据库中的所有索引 db.collection.dropIndexes(),防止影响测评结果。

dbpath=/data/shard1/db
logpath=/logs/shard1/log/mongodb.log
port=10001
shardsvr=true
fork=true

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【已解决】VMware Horizon Client: 无法建立安全加密链路连接

文章目录 问题原因解决方法方法1&#xff1a;在HTTPS拦截中添加VMware忽略列表 (推荐)方法2&#xff1a; 只拦截 浏览器进程的请求 / 取消 HTTPS 拦截&#xff08;如果没有拦截HTTPS的必要 / 只针对浏览器请求&#xff0c;可以使用此方法&#xff09; 当前使用mac 编辑&#xf…

淘宝扭蛋机小程序:扭出惊喜,乐享购物新体验

在快节奏的现代生活中&#xff0c;人们总是在寻找新鲜、有趣的娱乐方式。淘宝扭蛋机小程序应运而生&#xff0c;为您带来前所未有的购物与娱乐结合新体验。在这里&#xff0c;每一次的扭动都充满惊喜&#xff0c;每一次的点击都带来乐趣&#xff0c;让您在购物的同时&#xff0…

OpenResty,Nginx实现接口验签与黑名单控制

介绍 nginx与openresty是两种优秀知名的7层负载均衡软件&#xff0c;nginx以其出色的性能和稳定性成为首选&#xff0c;而openresty则是在Nginx基础上构建的&#xff0c;支持嵌入Lua语言&#xff0c;大幅提升了开发效率。 安装OpenResty 版本 openresty-1.25.3.1-win64下载地…

D. Solve The Maze Codeforces Round 648 (Div. 2)

题目链接&#xff1a; Problem - 1365D - CodeforcesCodeforces. Programming competitions and contests, programming communityhttps://codeforces.com/problemset/problem/1365/D 题目大意&#xff1a; 有一张地图n行m列&#xff08;地图外面全是墙&#xff09;&#xff0c…

阿里云服务器配置选择详细指导

云服务器配置如何选择&#xff1f;云服务器配置包括CPU内存、公网带宽和系统盘&#xff0c;阿里云服务器还要注意云服务器规格及轻量应用服务器的选择&#xff0c;云服务器吧以阿里云服务器为例来详细说下小白用户选择云服务器配置攻略&#xff1a; 一、准备工作 如果你不注册…

文献速递:深度学习肝脏肿瘤诊断---基于多相增强 CT 和临床数据的恶性肝肿瘤鉴别诊断深度学习

Title 题目 Deep learning for diferential diagnosisof malignant hepatic tumors based on multi-phase contrast-enhanced CT and clinical data 基于多相增强 CT 和临床数据的恶性肝肿瘤鉴别诊断深度学习 Abstract 摘要 Liver cancer remains the leading cause of can…

2024 年 AI代码助手AI Coding Assistant智能工具

AI代码助手&#xff08;AI Coding Assistant&#xff09;是一种利用人工智能帮助开发人员更快、更准确地编写代码的软件工具。 它可以通过根据提示生成代码或在你实时编写代码时建议自动完成代码来实现此目的。 以下是AI代码助手可以做的一些事情&#xff1a; 与你使用的流行代…

指令集体系简读

这一部分&#xff0c;采用问答的方式来进行梳理&#xff1b; 什么是指令集体系&#xff1f; 指令集体系(Instruction Set Architecture,ISA)是规定处理器的外在行为的一系列内容的统称&#xff0c;它包括&#xff1a; 基本数据类型(data types)、指令(instructions)、寄存器…

Socks5代理IP如何使用?详细教程解析

当我们在互联网上浏览网页、下载文件或者进行在线活动时&#xff0c;隐私和安全问题常常被提及。在这样的环境下&#xff0c;一个有效的解决方案是使用Sock5IP。本教程将向您介绍Sock5IP的使用方法&#xff0c;帮助您保护个人隐私并提升网络安全。 一、什么是Sock5IP&#xff1…

使用了代理IP怎么还会被封?代理IP到底有没有效果?

代理IP作为一种网络工具&#xff0c;被广泛应用于各种场景&#xff0c;例如网络爬虫、海外购物、规避地区限制等。然而&#xff0c;很多用户在使用代理IP的过程中却发现自己的账号被封禁&#xff0c;这让他们不禁产生疑问&#xff1a;使用了代理IP怎么还会被封&#xff1f;代理…

MXNet安装:专业指南与深度解析

一、引言 MXNet是一个高效且灵活的深度学习框架&#xff0c;它支持多种编程语言和平台&#xff0c;并提供了丰富的深度学习算法和工具。随着深度学习技术的广泛应用&#xff0c;MXNet因其出色的性能和易用性受到了越来越多开发者和研究人员的青睐。本文将详细介绍MXNet的安装过…

YOLOV5 分类:利用yolov5进行图像分类

1、前言 之前介绍了yolov5的目标检测示例,这次将介绍yolov5的分类展示 目标检测:YOLOv5 项目:训练代码和参数详细介绍(train)_yolov5训练代码的详解-CSDN博客 yolov5和其他网络的性能对比 yolov5分类的代码部分在这 2、数据集准备 yolov5分类的数据集就是常规的摆放方式…

SpringCloudAlibabaSeate处理分布式事务

SpringCloudAlibabaSeate处理分布式事务 1、部分面试题 微服务boot/cloud做的项目&#xff0c;你不可能只有一个数据库吧&#xff1f;那么多个数据库之间如何处理分布式事务的&#xff1f; 一个场景&#xff1a;在订单支付成功后&#xff0c;交易中心会调用订单中心的服务把订…

如何在公网环境远程管理内网Windows系统部署的MongoDB数据库

文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 前言 MongoDB是一个基于分布式文件存储的数…

通讯录项目(用c语言实现)

一.什么是通讯录 通讯录是一种用于存储联系人信息的工具或应用程序。它是一种电子化的地址簿&#xff0c;用于记录和管理个人、机构或组织的联系方式&#xff0c;如姓名、电话号码、电子邮件地址和邮寄地址等。通讯录的目的是方便用户在需要时查找和联系他人。 通讯录通常以列…

DC-DC 5V2A异步升压5V2A输出电源升压芯片2.6-5.5V供电

一、芯片概述&#xff1a; FP6298是一个电流模式升压DC-DC转换器。它是内置PWM电路0.08Ω功率MOSFET&#xff0c;使该调节器高效。内部补偿网络还可以最小化多达6个外部组件计数。误差放大器的非反相输入连接到一个0.6V的精度参考电压&#xff0c;内部的软启动功能可以降低涌入…

【2024最新博客美化教程重置版】在网页中使用L2Dwidget二次元可动人物前端插件,让动漫美女伴随你左右!

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;程序猿、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 L2Dwidget 二次…

Java 中文官方教程 2022 版(三十四)

原文&#xff1a;docs.oracle.com/javase/tutorial/reallybigindex.html 长期持久性 原文&#xff1a;docs.oracle.com/javase/tutorial/javabeans/advanced/longpersistence.html 长期持久性是一种模型&#xff0c;可以将 bean 保存为 XML 格式。 有关 XML 格式和如何为非 be…

SQL执行流程图文分析:从连接到执行的全貌

SQL执行总流程 下面就是 MySQL 执行一条 SQL 查询语句的流程&#xff0c;也从图中可以看到 MySQL 内部架构里的各个功能模块。 MySQL 的架构共分为两层&#xff1a;Server 层和存储引擎层&#xff0c; Server 层负责建立连接、分析和执行 SQL。MySQL 大多数的核心功能模块都在…

员工管理系统!(免费获取源码)

​今天给大家分享一套基于SpringbootVue的员工管理系统源码&#xff0c;在实际项目中可以直接复用。(免费提供&#xff0c;文末自取) 一、系统运行图 1、登陆页面 2、后台管理页面 3、职工管理 4、请假审批管理 二、系统搭建视频教程 源码免费领取方式 后台私信回复员工即可…