MySQL集群——主從復制

目錄

一、環境搭建、部署

?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;所以在這里介紹下。創建三個文件…