目录

一、环境搭建、部署

 1. RHEL7.9、9.3的搭建

二、主从复制

 1. 环境说明

 2. 环境准备

  1)克隆RHEL79_mysql_master

  2)改名为 “RHEL79_mysql_slave” 并修改IP

  3)修改主机名

 3. 部署MySQL主从同步

  1)主库(mysql-master)

  2)从库(mysql-slave)

  3)MySQL主从复制的状况检测

  4)生产环境其他常用设置

三、主从复制进阶

 1. 延时同步

 2. GID复制

  1)配置GID复制(主、从)

  2)检测主从是否能够正常通过GTID同步

四、半同步复制

 1. 配置半同步复制

  1)主服务

  2)从服务

 2. 测试


一、环境搭建、部署

 1. RHEL7.9、9.3的搭建

  • 具体步骤请看煮波前两篇发文

二、主从复制

 1. 环境说明

主机名ip地址操作系统mysql版本
mysql_master192.168.248.136rhel7.9源码安装mysql8.0.40
mysql_slave192.168.248.137rhel7.9源码安装mysql8.0.40

 2. 环境准备

  1)克隆RHEL79_mysql_master

  2)改名为 “RHEL79_mysql_slave” 并修改IP

  3)修改主机名

[root@mysql-master ~]# hostnamectl set-hostname mysql-salve
[root@mysql-master ~]# reboot

 3. 部署MySQL主从同步

  1)主库(mysql-master)

  • IP:192.168.248.136

  • port:3306

#1)设置server-id值并开启binlog参数---------------------------------------
[root@mysql-master ~]# cat /etc/my.cnf
修改如下内容:
[mysqld]
datadir=/data/mysql   
socket=/data/mysql/mysql.sock  
server_id=136
log-bin=binlog[root@mysql-master ~]# ll /data/mysql/binlog.*    # 查看日志#重启数据库
[root@mysql-master ~]# /etc/init.d/mysqld restart
Shutting down MySQL. SUCCESS!
Starting MySQL. SUCCESS!#查看数据库的编号
[root@mysql-master ~]# mysql -uroot -p123 -e 'select @@server_id;'
mysql: [Warning] Using a password on the command line interface can be insecure.
+-------------+
| @@server_id |
+-------------+
|         136 |
+-------------+#2)建立同步账号---------------------------------------------------------
[root@mysql-master ~]# mysql -uroot -p123mysql> create user 'rep'@'%' identified  by 'rep123';
mysql> grant  replication slave on *.* to 'rep'@'%';
#查看权限
mysql>  show grants for 'rep'@'%';
+---------------------------------------------+
| Grants for rep@%                            |
+---------------------------------------------+
| GRANT REPLICATION SLAVE ON *.* TO `rep`@`%` |
+---------------------------------------------+#3)锁表设置只读---------------------------------------------------------
#为后面备份准备,注意生产环境要提前申请停机时间;
mysql> flush tables with read lock;#提示:如果超过设置时间不操作会自动解锁。
mysql> show variables like '%timeout%';#测试锁表后是否可以创建数据库:
mysql> create database test;
ERROR 1223 (HY000): Can't execute the query because you have a conflicting read lock#4)查看主库状态--------------------------------------------------------
#查看主库状态,即当前日志文件名和二进制日志偏移量
mysql> show master status;
+------------+--------+------------+----------------+-----------------+
|    File    |Position|Binlog_Do_DB|Binlog_Ignore_DB|Executed_Gtid_Set|
+------------+-----+--------------+------------------+----------------+
|binlog.000005|  688  |            |                |                 |
+-------------+-------+------------+----------------+-----------------+
#注意:如果想要重置主库,可以使用reset master;生产环境慎用#5)备份主数据库中数据----------------------------------------------------
# mysqldump -uroot -p -A -B |gzip > /server/backup/mysql_bak.$(date +%F).sql.gz    # 有额外的表,需要了再弄#6)解锁---------------------------------------------------------------
mysql> unlock tables;#7)主库备份数据上传到从库-------------------------------------------------
# scp  /server/backup/mysql_bak.2025-08-07.sql.gz 192.168.168.129:/server/backup     # 有额外的表,需要了再弄

  2)从库(mysql-slave)

  • IP:192.168.248.137

  • port:3306

[root@mysql-salve ~]# rm -rf /data/mysql/*    # 因为是克隆,所以先删MySQL#1)设置server-id值-----------------------------------------------------
[root@rep1 mysql]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
server_id=137      # 自己的主机号[root@mysql-salve ~]# mysqld --initialize --user=mysql   # 初始化
默认密码:/9r7?1n9kw+J#重启数据库
[root@mysql-salve ~]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/data/mysql/master.err'.SUCCESS! #查看数据库的编号
[root@mysql-salve ~]# mysql -uroot -p123 -e 'select @@server_id;'
mysql: [Warning] Using a password on the command line interface can be insecure.
+-------------+
| @@server_id |
+-------------+
|         137 |
+-------------+[root@mysql-salve ~]# mysqladmin -uroot -p password  '123'
Enter password: /9r7?1n9kw+J[root@mysql-salve ~]# mysql -uroot -p123
mysql> #2)还原从主库备份数据----------------------------------------------------
# cd /server/backup/
# gzip  -d mysql_bak.2025-08-07.sql.gz
# mysql -uroot -p < mysql_bak.2025-08-07.sql.gz
#检查还原:
# mysql -uroot -p -e 'show databases;'#3)设定从库向主库同步----------------------------------------------------
mysql> CHANGE REPLICATION SOURCE TO
SOURCE_HOST='192.168.248.136',     # 主服务器IP
SOURCE_USER='rep',
SOURCE_PASSWORD='rep123',
SOURCE_LOG_FILE='binlog.000005',    # 在主服务器的show master status;中看
SOURCE_LOG_POS=688,
SOURCE_SSL=1; #4)启动从库同步开关------------------------------------------------------
mysql> start replica;#5)检查状态-------------------------------------------------------------
mysql> show replica status\G
Slave_IO_Running: Yes    #IO线程是否打开
Slave_SQL_Running: Yes   #SQL线程是否打开#注意:停止从库可以使用命令:mysql> stop replica;

  3)MySQL主从复制的状况检测

  • 在主库上查看该主库有多少从库

# 在主库上查看该主库有多少从库
mysql> show replicas;
+---------+----+-----+---------+--------------------------------------+
|Server_Id|Host| Port|Source_Id| Replica_UUID                         |
+---------+----+-----+---------+--------------------------------------+
|    137  |    | 3306|    136  | 991a13b4-888f-11f0-9cd0-000c29926dc4 |
+--------+-----+------+------+----------------------------------------+# 主库创建一个数据库
[root@mysql-master ~]# mysql -uroot -p -e 'create database test1;'
Enter password:     # 密码:123
  • 在从库可以看到主库同步过来的数据库

# 在从库可以看到主库同步过来的数据库
[root@mysql-salve ~]# mysql -uroot -p -e 'show databases;'
Enter password:    # 密码:123
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test1              |
+--------------------+

  4)生产环境其他常用设置

1、配置不记录information_schema mysql test等数据库的操作(增、删、改)的二进制日志文件------------------------------------------------------------------
# 在主配置文件中添加配置
binlog_ignore_db="information_schema"
binlog_ignore_db="mysql"
binlog_ignore_db="test"
#重启数据库
[root@mysql-master ~]# /etc/init.d/mysqld  restart
[root@mysql-salve ~]# mysql -uroot -p -e 'show master status\G'
Enter password:    # 密码:123
*************************** 1. row ***************************File: binlog.000002Position: 688Binlog_Do_DB: Binlog_Ignore_DB: 
Executed_Gtid_Set: 2、从库备份开启binlog-----------------------------------------------------
log-slave-updates  #当从库为其它从库的主库时必须要添加该参数
log_bin = mysql-bin  #设置二进制日志文件的文件前缀为mysql-bin
expire_logs_days = 7  #设置二进制日志文件的保留时间
应用场景:级联复制或从库做数据备份。3、从库只读-------------------------------------------------------------
read-only
innodb_read_only = ON或1
注:当用户权限中没有SUPER权限(ALL权限是包括SUPER的)时,从库的read-only生效!

三、主从复制进阶

 1. 延时同步

  • 从库
# 配置从库延时同步,设置sql线程延迟300秒后读取relay log
mysql> stop replica;   # 停止同步mysql> CHANGE REPLICATION SOURCE TO SOURCE_DELAY = 300;  #延迟300s,5分钟mysql>start replica;mysql> show replica status\G
SQL_Delay: 300   
SQL_Remaining_Delay: NULLmysql> stop slave sql_thread;    # 停掉slave的线程
  • 主库
#主库上创建库和表
mysql> create database relay;
mysql> use relaymysql> create table t1(id int);
mysql> insert into t1 values (1);
mysql> drop database relay;
  • 从库
mysql> show relaylog events in 'mysql-salve-relay-bin.000002';mysql> start slave sql_thread;#将relay log进行备份
[root@mysql-salve ~]# mysqlbinlog --start-position=584 --stop-position=1237  /data/mysql/slave1-relay-bin.000002 > /tmp/mysql.backup#恢复误删除的数据库
[root@mysql-salve ~]# mysql -uroot -p -e 'source /tmp/relay.sql'
#查看数据是否恢复
mysql> select * from relay.t1;
+------+
| id   |
+------+
|    1 |
+------+#解除从库身份
mysql> stop replica;
mysql> reset replica all;

 2. GID复制

  1)配置GID复制(主、从)

  • 在主master和从slave上执行
mysql> select @@enforce_gtid_consistency;
+----------------------------+
| @@enforce_gtid_consistency |
+----------------------------+
| OFF                        |
+----------------------------+#确定GTID模式复制的兼容性:查看日志中是否有警告,如果有警告说明应用和GTID复制不兼容
mysql> set global enforce_gtid_consistency=warn;#启用GTID强一致性检查,防止GTID不兼容的语句导致复制失败
mysql> set global enforce_gtid_consistency=on;#将主和从的gtid_mode一步步从OFF <-> OFF_PERMISSIVE <-> ON_PERMISSIVE <-> ON
mysql> select @@gtid_mode;
+-------------+
| @@gtid_mode |
+-------------+
| OFF         |
+-------------+mysql> set global gtid_mode=OFF_PERMISSIVE;
mysql> set global gtid_mode=ON_PERMISSIVE;#在主库和从库上等待所有匿名事务复制完成(该变量为0)
mysql> show status like 'ongoing_anonymous_transaction_count';
+-------------------------------------+-------+
| Variable_name                       | Value |
+-------------------------------------+-------+
| Ongoing_anonymous_transaction_count | 0     |
+-------------------------------------+-------+#启用GTID模式
mysql> set global gtid_mode=ON;#建议将enforce_gtid_consistency=on和gtid_mode=ON写入配置文件,防止配置丢失;
  • 在从slave上重启复制线程
mysql> stop replica;
mysql> change master to master_auto_position=1;
mysql> start replica;
mysql> show replica status \GReplica_IO_Running: YesReplica_SQL_Running: Yes

  2)检测主从是否能够正常通过GTID同步

  • 主服务
# 在主上添加表并插入数据
mysql> create database test2;
mysql> use test2;
mysql> create table t1 (id int);
mysql> insert into t1 values(1);
mysql> show master status \G
*************************** 1. row ***************************File: binlog.000009Position: 811Binlog_Do_DB: Binlog_Ignore_DB: 
Executed_Gtid_Set: a3b49872-87d4-11f0-80e9-000c294b1068:1-3#查看日志信息
mysql> show binlog events in "binlog.000009"\G#查看已经执行过的gtid
mysql> select @@gtid_executed;
+------------------------------------------+
| @@gtid_executed                          |
+------------------------------------------+
| a3b49872-87d4-11f0-80e9-000c294b1068:1-3 |
+------------------------------------------+
  • 从服务
# 在从上进行查看
mysql> show replica status \G
*************************** 1. row ***************************Replica_IO_State: Waiting for source to send eventSource_Host: 192.168.248.136Source_User: repSource_Port: 3306Connect_Retry: 60Source_Log_File: binlog.000009Read_Source_Log_Pos: 811Relay_Log_File: mysql-salve-relay-bin.000002Relay_Log_Pos: 367Relay_Source_Log_File: binlog.000009Replica_IO_Running: YesReplica_SQL_Running: Yes#查看从上的relaylog日志
mysql> show relaylog events in "mysql-salve-relay-bin.000002"\G#在从库上查看数据是否同步
mysql> select * from test2.t1;
+------+
| id   |
+------+
|    1 |
+------+

四、半同步复制

 1. 配置半同步复制

  1)主服务

#主的配置,加载插件
mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';#查看插件是否加载成功
mysql> show plugins;#开启此开关,可写入配置文件
mysql> set global rpl_semi_sync_master_enabled=1;#设置主等待从回复ACK的超时时间为3秒,默认是10秒,可写入配置文件
mysql> set global rpl_semi_sync_master_timeout=3000;mysql> show status like 'rpl_semi%';
+--------------------------------------------+-------+
| Variable_name                              | Value |
+--------------------------------------------+-------+
| Rpl_semi_sync_master_clients               | 1     | 
| Rpl_semi_sync_master_net_avg_wait_time     | 0     |
| Rpl_semi_sync_master_net_wait_time         | 0     |
| Rpl_semi_sync_master_net_waits             | 0     |
| Rpl_semi_sync_master_no_times              | 0     |
| Rpl_semi_sync_master_no_tx                 | 0     |
| Rpl_semi_sync_master_status                | ON    | 
| Rpl_semi_sync_master_timefunc_failures     | 0     |
| Rpl_semi_sync_master_tx_avg_wait_time      | 0     |
| Rpl_semi_sync_master_tx_wait_time          | 0     |
| Rpl_semi_sync_master_tx_waits              | 0     |
| Rpl_semi_sync_master_wait_pos_backtraverse | 0     |
| Rpl_semi_sync_master_wait_sessions         | 0     |
| Rpl_semi_sync_master_yes_tx                | 0     |
+--------------------------------------------+-------+mysql> show variables like 'rpl_semi_sync_master%';
+-------------------------------------------+------------+
| Variable_name                             | Value      |
+-------------------------------------------+------------+
| rpl_semi_sync_master_enabled              | ON         |
| rpl_semi_sync_master_timeout              | 3000       |
| rpl_semi_sync_master_trace_level          | 32         |
| rpl_semi_sync_master_wait_for_slave_count | 1          |
| rpl_semi_sync_master_wait_no_slave        | ON         |
| rpl_semi_sync_master_wait_point           | AFTER_SYNC |
+-------------------------------------------+------------+

  2)从服务

#从的配置
mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
mysql> set global rpl_semi_sync_slave_enabled=1;
mysql> show status like 'rpl_semi_sync_slave_status';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| Rpl_semi_sync_slave_status | ON    |
+----------------------------+-------+#查看插件是否加载成功
mysql> show plugins;
#重启从的IO线程
mysql> STOP REPLICA IO_THREAD;
Query OK, 0 rows affected (0.01 sec)
mysql> START REPLICA IO_THREAD;

 2. 测试

# 主上创建一张表
mysql> use test2
mysql> create table t2(id int);
mysql> show status like 'Rpl_semi_sync_master_yes_tx';
+-----------------------------+-------+
| Variable_name               | Value |
+-----------------------------+-------+
| Rpl_semi_sync_master_yes_tx | 1     |#master成功接收到slave的回复的次数
+-----------------------------+-------+# 模拟从故障
mysql> stop slave io_thread;
mysql> set global rpl_semi_sync_slave_enabled=0;
mysql> show status like 'rpl_semi_sync_slave_status';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| Rpl_semi_sync_slave_status | OFF   |
+----------------------------+-------+# 在主上创建表,可以看到会等待一个超时时间
mysql> insert into t2 values(2);
Query OK, 1 row affected (10.00 sec)# 发现主关闭了半同步复制
mysql> show status like 'Rpl_semi_sync_master_status';
+-----------------------------+-------+
| Variable_name               | Value |
+-----------------------------+-------+
| Rpl_semi_sync_master_status | OFF   |
+-----------------------------+-------+

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《用 asyncio 构建异步任务队列:Python 并发编程的实战与思考》

《用 asyncio 构建异步任务队列:Python 并发编程的实战与思考》 一、引言:并发编程的新时代 在现代软件开发中,性能已不再是锦上添花,而是产品成功的基石。尤其在 I/O 密集型场景中,如网络爬虫、实时数据处理、微服务通信等,传统的同步编程模式往往力不从心。 Python …

【Linux】yum工具篇

目录一、软件包管理器1.1 什么是软件包1.2 Linux软件生态二、yum具体操作2.1 查找软件包2.2 安装软件包2.3 卸载软件配置文件所在路径个人主页<—请点击 Linux专栏<—请点击 一、软件包管理器 1.1 什么是软件包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码…

撬动制造全场景增效,开利空调找到了怎样的“通关密码”?

由深圳软件协会指导、法大大和信息侠联合出品的《制造行业合同数智化升级白皮书》&#xff08;以下简称“白皮书”&#xff09;首次提出了 “电子签法律AI” 双轮驱动模型。在制造行业面临供应链协同、合规风控及全球化出海等多重挑战的当下&#xff0c;法大大依托丰富的制造企…

[Android]RecycleView的item用法

RecyclerView 是 Android 提供的一个强大的列表控件&#xff0c;用来显示大量数据。RecyclerView 的主要特点 1. 高性能的视图复用机制 Recycle就是循环的意思&#xff0c;那么recycleview的特点也很鲜明了&#xff0c;它只会创建出在屏幕内和一定缓存的itemview,当view滑出屏幕…

AI驱动的软件测试:革命性的自动化、缺陷检测与实验优化

引言在当今快节奏的软件开发生命周期&#xff08;SDLC&#xff09;中&#xff0c;传统测试方法已逐渐无法满足对速度、覆盖面和准确性的极高要求。人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;技术的融入&#xff0c;正在从根本上重塑软件测试的格…

继续优化基于树状数组的cuda前缀和

在之前的博客《借助树状数组的思想实现cuda版前缀和》中&#xff0c;我们用三个kernel实现了基于树状数组的cuda版前缀和&#xff0c;但是在数据量较大时速度不如传统的reduce-then-scan方法&#xff0c;主要原因在于跨block的reduce阶段没有充分利用所有的cuda核心。在本博客中…

Qt图片资源导入

右键项目&#xff0c;点击添加新文件 选择Qt -> Qt Resource File 资源文件起名 如&#xff1a;res 生成res.qrc文件 在项目的同级目录下创建文件夹res&#xff0c;并将准备好的资源粘贴进去 右键qrc文件&#xff0c;选中Open in Editor 添加前缀 前缀是各种类型图片的分类&…

嵌入式第四十六天(51单片机(中断,定时器))

一.独立按键设置1.#include "key.h"void init_key(void) {P1 | (0x0F << 4); }int key_pressed(void) {static int ret 0;if((P1 & (1 << 4)) 0){ret 1;}else if((P1 & (1 << 5)) 0){ret 2;}else if((P1 & (1 << 6)) 0){r…

Visual Studio Code2024安装包及安装教程

一、软件下载软件名称&#xff1a;Visual Studio Code 2024安装环境&#xff1a;window10及以上系统下载链接&#xff1a;https://pan.quark.cn/s/d9831b28c69a解压软件Bandizip下载链接&#xff1a;https://pan.quark.cn/s/a54e79b5d553二、软件安装1、下载后&#xff0c;先解…

fps:游戏玩法

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录游戏玩法倒计时僵尸潮游戏成功&失败计时玩法&#xff1a;玩家在计时内存活&#xff0c;成功&#xff1b;反之失败Game界面&#xff1a;由关卡调用计时系统计时完成&#xff1a;调用结果界面结果界面玩家死亡&…

如何建立针对 .NET Core web 程序的线程池的长期监控

如何建立针对 .NET Core web 程序的线程池的长期监控 建立针对 .NET Core Web 应用程序线程池的长期监控是一个系统性的工程&#xff0c;它涉及代码集成、指标收集、存储、可视化和告警。 核心思路 线程池监控不是孤立的&#xff0c;它必须与应用程序的整体性能指标&#xff08…

前端开发学习路径

前端开发学习路径前端开发基础技能HTML、CSS和JavaScript是前端开发的三大核心技术。HTML用于构建网页结构&#xff0c;CSS负责样式设计&#xff0c;JavaScript实现交互功能。掌握这三项技术是学习前端开发的基础。现代前端开发通常需要了解ES6语法&#xff0c;包括箭头函数、解…

一款没有任何限制的免费远程手机控制手机的软件简介

这是一款没有任何限制的免费远程手机控制手机的软件支持安卓和苹果1.安装1.1被控制端安装airdroid1.2控制端air mirror2.登录同一个账号3.控制使用打开控制端软件选择要控制的机器直接点“远程控制“连接上后就可以任意操作被控手机了

在word中使用lateX公式的方法

非常好的问题&#xff01;这是一个许多科研人员和学生都渴望实现的功能。但需要明确的是&#xff1a; **Microsoft Word 本身并不具备“自动”将 LaTeX 代码实时转换为渲染后公式的功能。** 它不像 Overleaf 或 VS Code 的 Markdown 插件那样&#xff0c;输入 $Emc^2$ 就立刻变…

23种设计模式——代理模式(Proxy Pattern)详解

✅作者简介&#xff1a;大家好&#xff0c;我是 Meteors., 向往着更加简洁高效的代码写法与编程方式&#xff0c;持续分享Java技术内容。 &#x1f34e;个人主页&#xff1a;Meteors.的博客 &#x1f49e;当前专栏&#xff1a;设计模式 ✨特色专栏&#xff1a;知识分享 &#x…

webpack scope hositing 和tree shaking

Scope Hoisting&#xff08;作用域提升&#xff09; 和 Tree Shaking&#xff08;摇树优化&#xff09; 是现代前端构建中至关重要的概念。它们是构建工具&#xff08;如 Webpack、Rollup、Vite&#xff09;用来优化最终打包产物的核心技术。 核心概念快速理解 Tree Shaking&am…

手写React状态hook

在日常开发中&#xff0c;我们经常用到 React 的状态管理 Hook&#xff1a;useState 和 useReducer。 但你有没有想过&#xff1a;这些 Hook 内部是怎么实现的&#xff1f;为什么调用 setState 之后组件会重新渲染&#xff1f; 今天我们就来从零手写 useState 和 useReducer&am…

力扣hot100:相交链表与反转链表详细思路讲解(160,206)

问题描述核心思路&#xff1a;双指针交替遍历算法思想&#xff1a; 使用两个指针 pa 和 pb 分别从链表A和链表B的头节点出发&#xff0c;同步向后遍历。当任一指针走到链表末尾时&#xff0c;将其重定位到另一链表的头节点继续遍历。若两链表相交&#xff0c;pa 和 pb 最终会在…

跨平台游戏引擎 Axmol-2.8.1 发布

所有使用 axmol-2.8.0 的开发者都应更新至此版本 Axmol 2.8.1 版本是一个以错误修复和功能改进为主的次要 LTS 长期支持版本&#xff0c;发布时间: 2025 年 9 月 5 日 &#x1f64f;感谢所有对 axmol 项目的贡献者&#xff0c;包括财务赞助者&#xff1a;scorewarrior、peter…

通过PXE的方式实现Ubuntu 24.04 自动安装

PXE自动化安装Ubuntu 24.04的配置文件之前都是通过PXE来自动化安装Redhat系列的&#xff0c;例如&#xff1a;Rocky9、Rocky10、CentOS7、银河麒麟 Kylin-V10、Kylin-V11、OpenEuler 24.03等。现在安装Ubuntu系列的跟红帽的不太一样&#xff0c;所以在这里介绍下。创建三个文件…