当前位置: 首页 > news >正文

Linux安装mysql数据库并实现主从搭建

一.环境说明

【环境说明】:
192.168.110.161 mysql-master  ##网络配置到位,防火墙关闭,selinux关闭
192.168.110.162 mysql-slave   ##网络配置到位,防火墙关闭,selinux关闭

两台主机,操作系统是centos7,提前网络配置好,关闭防火墙,selinux,修改主机名

二.【YUM配置】

本次建议使用操作系统镜像做yum源,具体方法如下

1.创建操作系统ISO镜像的挂载目录,并挂载

mkdir /mnt/yllyum
mount /dev/cdrom /mnt/zijian-yum

2.进入yum的目前做备份,并创建自建的yum源的文件

cd /etc/yum.repos.d/
mkdir bak
mv * bak 

#自建yum的文件

cat >zijian-yum.repo <<EOF
[base]
name=CentOS-$releasever - Base
baseurl=file:///mnt/zijian-yum
enable=1
gpgcheck=0
gpgkey=file:///mnt/zijian-yum/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
EOF

yum clean all
yum makecache

三.【mysql安装】 

1.清理老的mysql

(1)卸载已有的mysql
      查找以前是否装有mysql命令:rpm -qa|grep -i mysql
      停止mysql服务,卸载之前安装的mysql: rpm -ev 包名
      如果卸载过程中报依赖错误,直接在卸载命名后面加参数 --nodeps
      rpm -ev 包名 --nodeps
(2)查找之前老版本mysql的文件并删除老版本mysql的文件

2.安装前的准备

安装mysql之前需要确保系统中有libaio依赖

yum search libaio
yum install libaio -

 3.下载mysql软件包

mkdir /u01/
cd /u01/
mkdir soft
cd soft

下载并上传文件mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz到soft目录下

5.解压软件包

#解压
tar -xvf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz
#重命名文件夹
mv mysql-8.0.33-linux-glibc2.12-x86_64 ../mysql8 

3)、安装
(1)添加用户和组

#添加用户组
groupadd mysql
#添加用户mysql 到用户组mysql(使用-r参数表示mysql用户是一个系统用户,不能登录) --已有,不操作
useradd -r -g mysql mysql#添加完用下面命令测试,能看到mysql用户的信息
id mysql

(2)手动创建MySQL data目录

cd /u01/mysql8
mkdir data
mkdir log
mkdir run
touch /u01/mysql8/log/mysql8.log

(3)目录权限设置

#将mysql及其下所有的目录所有者和组均设为mysql
chown -R mysql:mysql /u01/mysql8/#查看是否设置成功,执行下面命令,可以看到文件的所有者和组都变成了mysql
cd /u01/mysql8
ll

(4)配置my.cnf文件----此文件非常重要,初始化之前要把此文件放到 /etc 目录下,或者把老文件备份一下(升级失败还能用老MySQL)
##rm -rf /etc/my.cnf编辑新文件
vi /etc/my.cnf
#此文件内容如下(路径根据自己的实际情况):

[client]
port = 13306
socket = /tmp/mysql.sock[mysqld_safe]
log-error=/u01/mysql8/log/mysql8.log
pid-file=/u01/mysql8/run/mysql8.pid[mysqld]
port = 13306
init-connect='SET NAMES utf8mb4'     #连接时执行的SQL
basedir=/u01/mysql8           #根据自己的安装目录填写
datadir=/u01/mysql8/data       #根据自己的mysql数据目录填写
socket=/tmp/mysql.sock                
max_connections=200                   #允许最大连接数
max_connect_errors = 30               #最大连接错误次数
character-set-server=utf8mb4         #服务端使用的字符集默认为8比特编码的latin1字符集
default-storage-engine=INNODB         #创建新表时将使用的默认存储引擎
skip-character-set-client-handshake   #忽略应用程序想要设置的其他字符集
###sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES #sql模式net_read_timeout = 120               #在中止读取之前等待来自连接的更多数据的秒数
net_write_timeout = 900               #在中止写入之前等待块写入连接的秒数
max_allowed_packet = 500M             #在一次传送数据包的过程当中最大允许的数据包大小
wait_timeout=1800                     #请求的最大连接时间
interactive_timeout=1800             #和上一参数同时修改才会生效###记录慢SQL
slow_query_log=1
long_query_time = 10
slow_query_log_file=slow-query.log

(5)初始化mysql数据库

/u01/mysql8/bin/mysqld --initialize-insecure --user=mysql --basedir=/u01/mysql8 --datadir=/u01/mysql8/data#注意:mysqld --initialize-insecure初始化后的mysql是没有密码的

(6)mysqld_safe启动mysql(临时启动)

/u01/mysql8/bin/mysqld_safe --user=mysql &

(7)修改密码,调整用户

#登录数据库,无密码

cd /u01/mysql8/bin/
./mysql -u root -p # 默认没有密码,直接敲回车就可以

[注]:没有可以不管
--报错
[root@ol8_mysql8_master bin]# ./mysql -u root -p
./mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
--解决
ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5

#修改数据库登录密码

#设置外网可以访问
在mysql的bin目录下执行:mysql -uroot -p密码 登陆到数据:
执行:use mysql;
执行:select host,user from user;可以看到user为root,host为localhost的话,说明mysql只允许本机连接,那么外网,本地软件客户端就无法连接了。调整方法:
执行:update user set host='%' where user ='root';
执行刷新:flush privileges;use mysql;
ALTER USER 'root'@'%' IDENTIFIED BY 'Htjs_JS_2023';
flush privileges;exit;

(8)测试登录

cd /u01/mysql8/bin/
./mysql -u root -p输入密码后,应该就连接上了show databases;
exit; #退出

(9)copy启动脚本并将其添加到服务且设置为开机启动,之前已经有的统统备份,统统移走
#mysql启动脚本为:/u01/mysql8/support-files/mysql.server

cp /u01/mysql8/support-files/mysql.server /etc/init.d/mysqld


#添加服务并设置开机启动

#添加系统服务
chkconfig --del mysqld
chkconfig --add mysqld# 显示服务列表
chkconfig --list# 开机启动
chkconfig --level 345 mysqld on

# 测试添加的服务是否能用
因为之前已经通过mysqld_safe启动mysql,因此需要先停掉进程,需要删除守护进程

ps -ef|grep mysqld 
kill -9 进程号

启动数据库服务

 [Linux6]
service mysqld status #查看状态
service mysqld start #启动mysql服务
service mysqld stop #停止mysql服务
[Linux7]
systemctl status mysqld #查看状态
systemctl start mysqld #启动mysql服务
systemctl stop mysqld #停止mysql服务如果还访问不了,那可能是防火墙问题,修改下防火墙就ok。


4、配置mysql客户端命令快捷方式
先删除老的

rm -rf /bin/mysql
rm -rf /bin/mysqldump

--再增加新的快捷方式

cp /u01/mysql8/bin/mysql /bin/mysql
cp /u01/mysql8/bin/mysqldump /bin/mysqldump

测试登录
cd /
mysql -u root -p

输入密码后,应该就连接上了

show databases;
exit; #退出

[可能出现的问题]:libcrypto.so.1.1: cannot open shared object file。
[root@sc_12366_dzswj_l /]# mysql -u root -p
mysql: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory
[解决1]:可以将OpenSSL进行升级,也可以用偷取取巧方法解决,还可以用直接复制所需要的lib文件解决,附上升级OpenSSL的方法
1.zlib 
    tar -zxvf zlib-1.2.13.tar.gz
    cd zlib-1.2.13
    ./configure
    make && make install
2.openssl 
    tar -zxvf openssl-1.1.1q.tar.gz
    cd openssl-1.1.1q
    ./config
    
    若报错Can't locate IPC/Cmd.pm in @IPC/Cmd
        yum install perl-IPC-Cmd
      若报错Operating system: x86_64-whatever-linux2
You need Perl 5.
       yum install perl -y   
    make && make install
        不用专门加参数,默认在/usr/local/ssl
        
    cp libcrypto.so.1.1 /usr/local/lib
    cp libssl.so.1.1 /usr/local/lib
    cd /usr/local/lib
    ln -sf libcrypto.so.1.1 libcrypto.so.0
    ln -sf libcrypto.so.1.1 libcrypto.so
    ln -sf libssl.so.1.1 libssl.so.0
    ln -sf libssl.so.1.1 libssl.so
    ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
    ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
    
    验证
    openssl version
[解决2]:
先删除老的
rm -rf /bin/mysql
rm -rf /bin/mysqldump

--或者投机取巧用软连接
ln -s  /u01/mysql8/bin/mysql /bin/mysql
ln -s  /u01/mysql8/bin/mysqldump /bin/mysqldump

测试登录

[测试登录]
cd /
mysql -u root -p输入密码后,应该就连接上了show databases;
exit; #退出

【主从环境准备】

1、mysql-master端关机,VMware克隆mysql-master端为mysql-slave端,并且启动mysql-slave端
2、mysql-slave端修改IP
3、mysql-slave端修改《auto.cnf》,修改为与主库不一致就行了
    /u01/mysql8/data/auto.cnf
4、启动从节点,启动主节点

【主从搭建】:
1.配置mysql-master端
 1)、追加my.cnf配置

server-id = 11
log-bin = mysql-bin                   #打开二进制功能,MASTER主服务器必须打开此项
expire_logs_days=15                   #日志过期时间
max_binlog_size=1024M                 #binlog单文件最大值
binlog-rows-query-log_events=1        #可以在binlog日志中看到语句的原始sql
?
binlog-format=ROW
###binlog-row-p_w_picpath=minimal     #允许应用程序只能对行的镜像数据进行复制,而不在关心行是否已经进行了DML操作
?
###gtid模式关键参数
gtid-mode=on
enforce-gtid-consistency=true
log-slave-updates=true #从库做为其他从库的主库时用master-info-repository=TABLE
relay-log-info-repository=TABLE

 2)、重启MySQL服务

systemctl restart mysqld

2.配置mysql-slave端
 1)、追加my.cnf配置

server-id = 12
log-bin = mysql-bin                   #打开二进制功能,MASTER主服务器必须打开此项
expire_logs_days=15                   #日志过期时间
max_binlog_size=1024M                 #binlog单文件最大值
binlog-rows-query-log_events=1        #可以在binlog日志中看到语句的原始sql
?
binlog-format=ROW
###binlog-row-p_w_picpath=minimal     #允许应用程序只能对行的镜像数据进行复制,而不在关心行是否已经进行了DML操作
?
###gtid模式关键参数
gtid-mode=on
enforce-gtid-consistency=true
log-slave-updates=true #从库做为其他从库的主库时用master-info-repository=TABLE
relay-log-info-repository=TABLE##从库用,验证 binlog 内容的正确性
binlog-checksum=CRC32 #验证 binlog 内容的正确性
source-verify-checksum=1
replica_sql_verify_checksum=1

 2)、重启MySQL服务

systemctl restart mysqld

3.主从搭建配置
1、master端
1)新建用户,mysql登陆进去

CREATE USER slave@'%' identified by 'Htjs_JS_2023';
GRANT Replication slave ON *.* to slave@'%';
ALTER USER slave@'%' IDENTIFIED WITH mysql_native_password BY 'Htjs_JS_2023';
flush privileges;

2)查看主库状态

MYSQL>show master status\G;

3)查看gtid状态

show  variables like '%gtid%';

 2、slave端
1)从库上执行命令

change master to master_host='192.168.110.161',master_port=13306,master_user='slave',master_password='Htjs_JS_2023',master_auto_position=1 ;

2)开启同步

start slave;

3)查看同步状态

show slave status\G;

4.主从验证
1.主库新建数据库及用户

create database swgxpt CHARACTER SET utf8 ;

2.验证主从,从库执行

show slave status\G;

从库检查是否有无新建数据库、用户、相应的表结构。
    

【主从切换】:

切换步骤:

1 切断应用对主库的流量

2 主库、备库设置只读

set global read_only=ON;set global super_read_only=ON;

3 查看备库复制进程状态

show slave status\G

确认Slave_IO_Running,Slave_SQL_Running状态为YES,Seconds_Behind_Master为0

4 比对主备两边的GTID是否一致

方法一:获取主备两边的executed_gtid集合,进行比对

select @@global.gtid_executed;

5 从库停掉复制进程并清空主从信息

stop slave;reset slave all;

6 从库关闭只读开启读写,转为新主库

set global read_only=off;set global super_read_only=off;

7 主库设置执行新主库的复制链路,转为新备库,完成主从切换

change master to master_host='192.168.110.162',master_port=13306,master_user='slave',master_password='Htjs_JS_2023',master_auto_position=1 ;start slave;show slave status\G

8 应用流量切向新主库

相关文章:

Linux安装mysql数据库并实现主从搭建

一.环境说明 【环境说明】&#xff1a; 192.168.110.161 mysql-master ##网络配置到位&#xff0c;防火墙关闭&#xff0c;selinux关闭 192.168.110.162 mysql-slave ##网络配置到位&#xff0c;防火墙关闭&#xff0c;selinux关闭 两台主机&#xff0c;操作系统是centos7…...

windows使用小技巧之windows照片查看器无法显示此图片

碰到过好几次了&#xff0c;以前没有理会&#xff0c;今天特意去查了一下解决方法&#xff0c;不然确实不太方便。 1、打开“颜色管理”-“高级”&#xff1a; 2、将“设备配置文件”选择为“Agfa&#xff1a;Swop Standard” 3、关闭&#xff0c;重新打开图片&#xff0c;好…...

ez_pz_hackover_2016

ez_pz_hackover_2016 Arch: i386-32-little RELRO: Full RELRO Stack: No canary found NX: NX disabled PIE: No PIE (0x8048000) RWX: Has RWX segments32位&#xff0c;保护全关 int chall() {size_t v0; // eaxint result; // eaxchar s[1024]…...

解决方案| anyRTC远程检修应用场景

背景 在这个科技飞速发展的时代&#xff0c;各行各业都要求高效运转。然而&#xff0c;当出现问题时&#xff0c;我们却常常因为无法及时解决而感到困扰&#xff0c;传统解决问题的方式是邀请技术人员现场解决问题&#xff0c;如果技术人员解决不了&#xff0c;还要邀请专家从…...

IC芯片测试:如何对芯片静态功耗进行测试?

静态功耗也叫静态电流&#xff0c;是指芯片在静止状态下的电流或者是指芯片在不受外界因素影响下自身所消耗的电流。静态功耗对于芯片来说是衡量一款芯片的功耗与效率非常重要的指标。 传统手动测试静态功耗只需在芯片的输入端串上一台万用表&#xff0c;然后对芯片各个端口添加…...

Redis面试二“缓存击穿是什么”

条件 缓存击穿是应为Redis某个缓存数据设置了过期时间&#xff0c;而刚好有大并发数据请求这个数据&#xff0c;导致DB有大量请求&#xff0c;引发DB崩溃。 第一种方法就是设置互称锁 当缓存失效时不立即删除缓存而是用setnx设置一个互斥锁&#xff0c;当操作完成后在load db…...

python使用apscheduler每隔一段时间自动化运行程序

apscheduler使用比较简单&#xff0c;每隔一段时间自动化运行的步骤是&#xff1a; 创建调度器scheduler BlockingScheduler()添加任务scheduler.add_job(函数名, interval, minutes30) # 每隔30分钟运行一次直接执行&#xff1a;scheduler.start()示例代码 from datetime i…...

2023 Sui Builder House全球之旅圆满收官

2023年的最后一场Builder House于上周在新加坡举行&#xff0c;包括主题演讲、小组讨论和研讨会等聚焦Sui的现在和未来的活动。其中&#xff0c;zkLogin是本次活动的最大亮点。作为一种新的Sui原语&#xff0c;zkLogin允许用户使用Web2身份验证创建帐户&#xff0c;有望推动大规…...

OpenCV自学笔记二十三:K近邻算法

K近邻算法&#xff08;K-Nearest Neighbors&#xff0c;简称KNN&#xff09;是一种常用的监督学习算法&#xff0c;可以用于分类和回归问题。在OpenCV中&#xff0c;KNN算法有相应的函数实现&#xff0c;主要包含在ml模块中。 KNN算法的原理很简单&#xff0c;它基于样本之间的…...

ChatGLM-中英对话大模型-6B试用说明

ChatGLM-中英对话大模型-6B试用说明 搭建环境下载模型测试模型结果 搭建环境 pip install modelscope1.4.3 -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html pip install protobuf3.20.0 transformers4.27.1 icetk cpm_kernels下载模型 from modelsco…...

小白入门pytorch(一)

本文为小白入门Pytorch中的学习记录博客 小白入门pytorch 基础知识 导入torch&#xff0c;查看torch版本 import torch print(torch.__version__)输出结果&#xff1a; 1.12.1cu113张量 在pytorch中&#xff0c;张量&#xff08;tensor&#xff09;是最基本的数据结构。 …...

【STM32笔记】HAL库I2C通信配置、读写操作及通用函数定义

【STM32笔记】HAL库I2C通信配置、读写操作及通用函数定义 文章目录 I2C协议I2C配置I2C操作判断I2C是否响应I2C读写 附录&#xff1a;Cortex-M架构的SysTick系统定时器精准延时和MCU位带操作SysTick系统定时器精准延时延时函数阻塞延时非阻塞延时 位带操作位带代码位带宏定义总…...

Direct3D模板缓存

模板缓存是一个用于获得某种特效的离屏缓存&#xff0c;模板缓存的分辨率与后台缓存和深度缓存的分辨率完全相同&#xff0c;所以像素也是一一对应的&#xff0c;模板缓存允许我们动态的&#xff0c;有针对性的决定是否将某个像素写入后台缓存中。 例如实现镜面效果时&#xf…...

在windows上执行ssh-keygen报错Bad permissions

在windows上执行ssh-keygen报错Bad permissions&#xff1a;如下 C:\Users\xiaoming>ssh-keygen -p -m PEM -f C:\mywork\id_rsa Bad permissions. Try removing permissions for user: BUILTIN\\Users (S-1-6-92-143) on file C:/mywork/id_rsa.WARNING: UNPROTECTED PRIV…...

给Proxmox VE 虚拟机分配巨大分区惹麻烦

由于缺乏良好的规划&#xff0c;有开发人员直接在公有云采购一个容量超过100TB的NAS存储&#xff0c;使用过程中&#xff0c;数据的存储也没有规划&#xff0c;业务数据一股脑的写入到同一个目录&#xff0c;下边的子目录没有规律&#xff0c;用用户的图片、视频、访问日志、甚…...

数学建模——统计回归模型

一、基本知识 1、基本统计量 总体&#xff1a;研究对象的某个感兴趣的指标。样本&#xff1a;从总体中随机抽取的独立个体X1,X2,…,Xn&#xff0c;一般称(X1,…,Xn)为一个样本&#xff0c;可以看成一个n维随机向量&#xff0c;它的每一取组值(x1,…,xn)称为样本的观测值。统计…...

C++【个人笔记1】

1.C的初识 1.1 简单入门 #include<iostream> using namespace std; int main() {cout << "hello world" << endl;return 0; } #include<iostream>; 预编译指令&#xff0c;引入头文件iostream.using namespace std; 使用标准命名空间cout …...

博通强迫三星签不平等长约,被韩处罚1亿元 | 百能云芯

近日&#xff0c;博通&#xff08;Broadcom&#xff09;这家国际知名的半导体公司因其市场主导地位的滥用&#xff0c;遭到了韩国公平贸易委员会&#xff08;FTC&#xff09;的严厉制裁&#xff0c;罚款高达191亿韩元&#xff0c;约合人民币1.04亿元。这一惩罚背后的故事揭示了…...

版本控制 Sourcetree

Sourcetree软件做版本控制&#xff0c;小程序的代码和springboot项目的代码放到同一个文件夹下&#xff0c; 无脑安装就行 命名就用项目名bkd表示springboot项目名 项目命名xcx表示小程序 每次上传代码&#xff0c;一定要先拉下代码不然代码冲突处理起来比较麻烦...

题目 1059: 二级C语言-等差数列

题目描述 sum2581114…&#xff0c;输入正整数n&#xff0c;求sum的前n项和。样例输入 2样例输出 7 根据题目我们得知&#xff0c;求一个等差数列的和。 等差数列的下一项前一项d。d是等差。 根据这个直接求每一项&#xff0c;再加进sum的和&#xff0c;最后输出即可。 在本题中…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

NPOI Excel用OLE对象的形式插入文件附件以及插入图片

static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后&#xff0c;迭代器会失效&#xff0c;因为顺序迭代器在内存中是连续存储的&#xff0c;元素删除后&#xff0c;后续元素会前移。 但一些场景中&#xff0c;我们又需要在执行删除操作…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…...

comfyui 工作流中 图生视频 如何增加视频的长度到5秒

comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗&#xff1f; 在ComfyUI中实现图生视频并延长到5秒&#xff0c;需要结合多个扩展和技巧。以下是完整解决方案&#xff1a; 核心工作流配置&#xff08;24fps下5秒120帧&#xff09; #mermaid-svg-yP…...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用

前言&#xff1a;我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM&#xff08;Java Virtual Machine&#xff09;让"一次编写&#xff0c;到处运行"成为可能。这个软件层面的虚拟化让我着迷&#xff0c;但直到后来接触VMware和Doc…...