MySQL的組復制(MGR)高可用集群搭建

一、MySQL 組復制(MGR)核心概念

MySQL Group Replication(簡稱 MGR)是 MySQL 官方推出的 高可用(HA)+ 強一致性 解決方案,基于改進的 Paxos 協議實現,核心能力可概括為 3 點:

  1. 數據強一致:事務需經集群中「多數節點(N/2+1)」確認后才提交,避免數據延遲或混亂;
  2. 自動故障轉移:主節點故障時,剩余節點自動選舉新主,無需人工干預; 靈活架構:支持「單主模式」(1
    個可寫節點,多只讀節點)和「多主模式」(所有節點均可寫),適配不同業務場景(讀多寫少 / 分布式寫)。
  3. MGR 對表有一個硬性要求:所有表必須有主鍵或唯一索引(用于跟蹤數據變化,確保同步不沖突),這也是前期操作中避免報錯的關鍵。

二、搭建前置準備與環境說明

  • MySQL源碼環境:
    https://blog.csdn.net/racwwt/article/details/151259281

1. 環境信息

本次搭建使用 3 臺節點組成集群,具體信息如下:

主機名ip操作系統版本mysql版本
master192.168.2.102/24rhel7.9mysql8.0.40
node1192.168.2.104/24rhel7.9mysql8.0.40
node2192.168.2.105/24rhel7.9mysql8.0.40

https://dev.mysql.com/doc/refman/8.0/en/group-replication-configuring-instances.html

2.前置配置

MGR 集群依賴節點間的通信與身份識別,需先完成以下準備:

配置域名自解析(所有節點執行):
目的是讓節點通過主機名(如 master、node1)相互訪問,避免直接寫 IP 導致配置繁瑣。
編輯 /etc/hosts 文件,添加以下內容

#三個主機均需要配置hosts文件的解析,如果不配置域名解析則需要在/etc/my.cnf中加一條配置skip-name-resolve
[root@node1 ~]# cat /etc/hosts
192.168.2.102 master
192.168.2.104 node1
192.168.2.105 node2

三、MGR 單主模式搭建

單主模式是 MGR 默認架構,僅 master 節點可執行寫操作(如插入 / 更新數據),node1、node2 為只讀節點,適合「讀多寫少」場景(如電商商品詳情頁)。

1. Master 節點配置(修改 my.cnf)

#1)修改配置文件
[root@master ~]# vim  /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
log_timestamps=SYSTEM   #設置日志時間和本地時間保持一致
server_id=102
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"   #組復制,數據必須存儲在 InnoDB 事務存儲引擎中
gtid_mode=ON  #組復制要開啟gtid
enforce_gtid_consistency=ON
log_bin=binlog  #默認開啟
log_slave_updates=ON #默認開啟
binlog_format=ROW  #默認開啟
transaction_write_set_extraction=XXHASH64  #默認開啟,組復制使用此信息在所有組成員上進行沖突檢測
plugin_load_add='group_replication.so'  #將組復制插件添加到服務器啟動時加載的插件列表中
group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"  #告訴插件它正在加入或創建的組名為“aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa”
group_replication_start_on_boot=off  #插件在服務器啟動時不自動啟動操作,使用手動啟動插件
group_replication_local_address= "192.168.2.102:33061"  #與其它主機通信時使用的網絡地址和端口
group_replication_group_seeds= "master:33061,node1:33061,node2:33061"  #設置組成員的主機名和端口
group_replication_bootstrap_group=off  #指示插件是否啟動該組,在首次引導組時在一個服務器上啟用
group_replication_ip_whitelist="192.168.2.0/24,127.0.0.1/8"  #僅允許白名單內的 IP 加入復制組
group_replication_recovery_use_ssl=on #caching_sha2_password插件要求安全傳輸密碼,開啟主從之間的連接使用SSL/TLS 
[root@master ~]# /etc/init.d/mysqld restart

2. Master 節點創建復制賬號與授權

MGR 節點間同步數據需專用賬號,登錄 MySQL 后創建 rp 用戶并授予權限(所有節點后續均需創建相同賬號)
執行以下 SQL 語句(SET SQL_LOG_BIN=0 表示當前操作不記錄 binlog,避免同步給從節點)

#2)在主的數據庫中使用sql語句添加復制賬號并授予權限,從上面也需要設置一樣的賬號
-- 1. 臨時關閉binlog(避免賬號創建操作被同步)
SET SQL_LOG_BIN = 0;-- 2. 創建復制賬號 rp(密碼123,可自定義,所有節點需一致)
CREATE USER rp@'%' IDENTIFIED BY '123';-- 3. 授予MGR所需權限(復制、連接管理、備份、流復制權限)
GRANT REPLICATION SLAVE ON *.* TO rp@'%';
GRANT CONNECTION_ADMIN ON *.* TO rp@'%';
GRANT BACKUP_ADMIN ON *.* TO rp@'%';
GRANT GROUP_REPLICATION_STREAM ON *.* TO rp@'%';-- 4. 刷新權限
FLUSH PRIVILEGES;-- 5. 恢復binlog記錄
SET SQL_LOG_BIN = 1;-- 6. 配置MGR恢復通道(指定用rp賬號同步數據)
CHANGE REPLICATION SOURCE TO
SOURCE_USER = 'rp',
SOURCE_PASSWORD = '123' FOR CHANNEL 'group_replication_recovery';#注意:如果需要重置則使用命令reset master;

3. 驗證 MGR 插件加載

確認 MGR 插件已成功加載(避免后續啟動失敗)

#3)查看是否有group_replication插件
mysql> show plugins;
| group_replication               | ACTIVE   | GROUP REPLICATION  | group_replication.so | GPL     |

4. 啟動 MGR 集群(引導 Master)

首次啟動集群需通過 Master 節點「引導」(開啟 group_replication_bootstrap_group)

#4)啟動MGR集群
#使用當前服務器作為引導服務器啟動一個新的群組復制過程或者恢復一個已經存在的群組
-- 1. 開啟集群引導(僅Master首次啟動時執行)
mysql> SET GLOBAL group_replication_bootstrap_group = ON;-- 2. 啟動MGR(指定用rp賬號通信)
mysql> START GROUP_REPLICATION USER = 'rp', PASSWORD = '123';-- 3. 關閉集群引導(避免重復引導導致沖突)
mysql> SET GLOBAL group_replication_bootstrap_group = OFF;
#在主上查看組信息
mysql> SELECT * FROM performance_schema.replication_group_members;

5. 從節點(node1、node2)配置

#1)在從上寫配置文件
[root@node1 ~]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
log_timestamps=SYSTEM
server_id=104
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
gtid_mode=ON
enforce_gtid_consistency=ON
plugin_load_add='group_replication.so'
group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
group_replication_start_on_boot=off
group_replication_local_address="192.168.2.104:33061"
group_replication_group_seeds="master:33061,node1:33061,node2:33061"
group_replication_ip_whitelist="192.168.2.0/24,127.0.0.1/8"
group_replication_bootstrap_group=off
group_replication_recovery_use_ssl=on 
[root@node1 ~]# /etc/init.d/mysqld restart[root@node2 ~]# vim  /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
log_timestamps=SYSTEM
server_id=105
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
gtid_mode=ON
enforce_gtid_consistency=ON
plugin_load_add='group_replication.so'
group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
group_replication_start_on_boot=off
group_replication_local_address="192.168.2.105:33061"
group_replication_group_seeds="master:33061,node1:33061,node2:33061"
group_replication_ip_whitelist="192.168.2.0/24,127.0.0.1/8"
group_replication_bootstrap_group=off
group_replication_recovery_use_ssl=on 
[root@node2 ~]# /etc/init.d/mysqld restart

6. 從節點創建復制賬號與授權

與 Master 步驟 2 完全一致,在 node1 和 node2 上分別登錄 MySQL,執行相同的賬號創建與授權 SQL

#2)在所有從的數據庫中使用sql語句添加復制賬號并授予權限,從上面也需要設置一樣的賬號
SET SQL_LOG_BIN=0;
CREATE USER rp@'%' IDENTIFIED BY '123';
GRANT REPLICATION SLAVE ON *.* TO rp@'%';
GRANT CONNECTION_ADMIN ON *.* TO rp@'%';
GRANT BACKUP_ADMIN ON *.* TO rp@'%';
GRANT GROUP_REPLICATION_STREAM ON *.* TO rp@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
CHANGE REPLICATION SOURCE TO SOURCE_USER='rp', SOURCE_PASSWORD='123' FOR CHANNEL 'group_replication_recovery';

7. 從節點加入 MGR 集群且驗證整個集群狀態

從節點無需引導集群,直接啟動 MGR 即可自動加入(node1 和 node2 分別執行):

#3)開啟組復制
mysql> START GROUP_REPLICATION USER='rp', PASSWORD='123';
#查看組信息
mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+--------------
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUN
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+--------------
| group_replication_applier | 85aa2339-87e8-11f0-b63e-000c29d446f0 | master      |        3306 | ONLINE       | PRIMARY     | 8.0.40         | XCom         
| group_replication_applier | 85aa2339-87e8-11f0-b63e-000c29d446f1 | node2       |        3306 | ONLINE       | SECONDARY   | 8.0.40         | XCom         
| group_replication_applier | 85aa2339-87e8-11f0-b63e-000c29d446f2 | node1       |        3306 | ONLINE       | SECONDARY   | 8.0.40         | XCom         
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+--------------
3 rows in set (0.00 sec)

8. 單主模式功能驗證

#master執行,從節點不支持寫入操作
mysql> create database test2;
mysql> use test2;
mysql> create table t3(id int primary key);
mysql> insert into t3 values(9527);
#從上查看
mysql> select * from test2.t3;
+------+
| id   |
+------+
| 9527 |
+------+

9. 測試主節點宕機

MGR 核心優勢是「自動故障轉移」,測試 Master 故障后集群是否正常:

#測試主節點宕機
mysql> stop  GROUP_REPLICATION;
#從庫節點查看,發現僅剩2個節點,并且自動選舉出主節點
mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+
| group_replication_applier | 85aa2339-87e8-11f0-b63e-000c29d446f1 | node2       |        3306 | ONLINE       | PRIMARY     | 8.0.40         | XCom                       |
| group_replication_applier | 85aa2339-87e8-11f0-b63e-000c29d446f2 | node1       |        3306 | ONLINE       | SECONDARY   | 8.0.40         | XCom                       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+
2 rows in set (0.00 sec)#重新啟動前面的master主節點,可以看到master已經作為從節點加入到群組中
mysql> START GROUP_REPLICATION;
Query OK, 0 rows affected, 1 warning (10.73 sec)
mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+
| group_replication_applier | 85aa2339-87e8-11f0-b63e-000c29d446f0 | master      |        3306 | ONLINE       | SECONDARY   | 8.0.40         | XCom                       |
| group_replication_applier | 85aa2339-87e8-11f0-b63e-000c29d446f1 | node2       |        3306 | ONLINE       | PRIMARY     | 8.0.40         | XCom                       |
| group_replication_applier | 85aa2339-87e8-11f0-b63e-000c29d446f2 | node1       |        3306 | ONLINE       | SECONDARY   | 8.0.40         | XCom                       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+
3 rows in set (0.00 sec)

四、MGR 多主模式搭建(基于單主改造)

多主模式允許 所有節點均可寫(如 master、node1、node2 都能插入數據),適合「分布式寫」場景(如多區域業務)。搭建需在單主模式基礎上修改配置,關閉單主限制。

1. 所有節點修改 my.cnf 配置

在 master、node1、node2 的 /etc/my.cnf 中添加以下 2 個參數(關閉單主,開啟多主一致性檢查)

#修改所有的my.cnf的配置文件,添加如下內容
#關閉單master模式
loose-group_replication_single_primary_mode=off
#多主一致性檢查
loose-group_replication_enforce_update_everywhere_checks=ON
[root@master mysql]# /etc/init.d/mysqld restart

2. 啟動多主模式集群

#在其中一臺主機里面執行以下mysql命令
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;
#在另外兩臺主機里面執行以下mysql命令,開啟組復制
mysql> START GROUP_REPLICATION;
#所有節點的 MEMBER_ROLE 均為 PRIMARY(表示均可寫)
mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+
| group_replication_applier | 85aa2339-87e8-11f0-b63e-000c29d446f0 | master      |        3306 | ONLINE       | PRIMARY     | 8.0.40         | XCom                       |
| group_replication_applier | 85aa2339-87e8-11f0-b63e-000c29d446f1 | node2       |        3306 | ONLINE       | PRIMARY     | 8.0.40         | XCom                       |
| group_replication_applier | 85aa2339-87e8-11f0-b63e-000c29d446f2 | node1       |        3306 | ONLINE       | PRIMARY     | 8.0.40         | XCom                       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+----------------------------+
3 rows in set (0.01 sec)
#在三個主機上面分別執行以下三條命令測試是否都可以執行寫入操作
mysql> insert into test2.t3 values(612);
mysql> insert into test2.t3 values(613);
mysql> insert into test2.t3 values(614);
mysql> select * from test2.t3;
+------+
| id   |
+------+
|  612 |
|  613 |
|  614 |
| 9527 |
+------+

五、總結

  1. 核心流程:環境準備(hosts/MySQL 基礎)→ 配置文件修改(啟用 MGR 插件、參數)→ 復制賬號創建→ 集群啟動→ 功能驗證;
  2. 單主 vs 多主:單主適合讀多寫少,多主適合分布式寫;兩者切換僅需修改 2 個配置參數,靈活度高;
  3. MGR 優勢:自動故障轉移(無需外部工具如 MHA)、數據強一致(避免腦裂)、動態擴縮容(節點加入 / 退出不中斷服務)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/95953.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/95953.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/95953.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用Shell腳本實現Linux系統資源監控郵件告警

前言 1. 問題背景與需求 2. Bash 腳本監控資源 3. Bash 腳本判斷閾值 4. 配置 msmtp 發送郵件 4.1 安裝 msmtp 4.2 創建配置文件 /etc/msmtprc 5. 發送郵件 5.1 給別人發郵件 6. 完整示例腳本 7. 測試方法 8. 常見問題解答 9. 總結 前言 在運維過程中&#xff0c…

設計整體 的 序分(三“釋”)、正宗分(雙“門”)和流通分(統一的通行表達式) 之3 “自明性”(騰訊元寶 之2)

Q&AQ11、可能還需要補充 魂軸、體軸 和 中心軸 并行 上升 的內容Q11.1、我剛才說“可能還需要補充 魂軸、體軸 和 中心軸 并行 上升 的內容” 是指的 我們今天前面討論 得出的整體設計 的一個概念整體 的一個雙螺旋上升結構中的三個軸。 您剛才是這樣 理解的嗎?…

使用Ansible自動化部署Hadoop集群(含源碼)--環境準備

現在我們有5臺虛擬機,已經配置好了主機名和網絡我們的目標是通過Ansible實現自動化部署hadoop集群。在此之前,我們先編寫一個shell腳本來配置hadoop集群的環境,包括安裝軟件、安裝配置Ansible(一個主節點四個工作節點)…

C#海康車牌識別實戰指南帶源碼

C#海康車牌識別實戰指南帶源碼前言車牌識別技術在智能交通、停車場管理等領域有著廣泛的應用。海康威視作為國內領先的安防廠商,其車牌識別相機提供了豐富的SDK接口供開發者使用。本文將詳細介紹如何使用C#語言結合海康威視SDK實現車牌識別功能,并解析關…

智慧能源新范式:數字孿生平臺如何驅動風電場的精細化管理?

摘要你有沒有想過,一座風力發電場背后,藏著一個“看不見的孿生兄弟”?它能提前預知風機故障,實時模擬極端天氣的影響,甚至能“訓練”運維人員在虛擬場景中演練搶修。這就是數字孿生——一個讓風電場從“靠經驗管理”轉…

STM32-FreeRTOS操作系統-任務管理

引言 隨著嵌入式技術的飛速發展,STM32與FreeRTOS的融合愈發緊密。本文聚焦于STM32平臺下FreeRTOS操作系統的任務管理,旨在為開發者提供清晰的思路與實用的技巧,助力高效開發。 為什么要進行任務管理? 在嵌入式系統中,…

工業領域 ACP 協議全解析:從入門到實戰案例

工業領域 ACP 協議全解析:從入門到實戰案例 文章目錄工業領域 ACP 協議全解析:從入門到實戰案例一、前言二、ACP 協議是什么?1. 基本定義2. 與數據傳輸協議的區別三、ACP 協議的核心功能1. 身份認證(Authentication)2.…

計算機組成原理:計算機硬件的基本組成

📌目錄🖥? 計算機硬件的基本組成:從經典到現代的架構演進🧩 一、計算機硬件的五大部分:功能與協同📥 (一)輸入設備:人機交互的“入口”📤 (二&am…

AI歌手功能終于上線!Suno AI 帶你保存歌曲的靈魂

當我們談論一首歌時,究竟是什么讓它“獨一無二”?是主唱的聲音質感?是旋律里的氛圍?還是那種無法復制的風格氣息? 如今,Suno AI 給出了答案—— AI歌手功能正式上線! 🌟什么是「AI…

Dubbo3.3 Triple協議處理東西向流量

前言 Apache Dubbo 3.3 對 Triple 協議做了升級,現在 Dubbo 不僅可以處理東西向流量,也可以處理南北向流量。 **東西向流量(East-West Traffic) ** 指數據中心或網絡內部同級設備/服務之間的通信。例如,微服務之間的…

操作系統核心特點詳解:從并發到分布式,一文搞懂考研必備知識

操作系統核心特點詳解:從并發到分布式,一文搞懂考研必備知識 大家好,今天咱們來聊聊操作系統(OS)這個計算機世界的“大管家”。想象一下,你的電腦就像一個忙碌的廚房,操作系統就是那個廚師長&am…

2025精選5款AI視頻轉文字工具,高效轉錄秒變文字!

視頻轉文本的需求早已滲透到生活的方方面面:網課學習需要提取課件臺詞、會議記錄想快速整理要點、追劇時急需生肉轉字幕…… 手動記錄不僅費時,還容易遺漏關鍵信息。今天就分享5款實用工具,從免費到專業全覆蓋,幾步操作就能讓視頻…

MyBatis Example模式SQL注入風險

在使用MyBatis逆向工程生成的Example查詢模式時,很多開發者看到XML中存在${}占位符就會擔心SQL注入問題。但實際上,存在${}并不等同于存在SQL注入風險。本文將詳細分析何時會存在真正的注入風險。 存在SQL注入的兩個關鍵前提 前提一:Criteria…

寶塔PostgreSQL安裝pgvecto插件contrib包實現向量存儲

1. 寶塔安裝 首先確保你的寶塔已經安裝了 PostgreSQL。 安裝好后是能看到上面這個界面的。 我安裝的是 16.1 版本,下面的教程講的也是 16.1 版本的。 2.開放防火墻的端口號 5432 3.允許外部訪問所有數據庫 4.設置超級管理員用戶密碼 用戶名默認為:po…

麒麟系統 doc轉pdf

# 安裝LibreOffice(如果尚未安裝) sudo apt update sudo apt install libreoffice# 將DOC轉換為PDF libreoffice --headless --convert-to pdf 你的文檔.doc# 或者指定輸出目錄 libreoffice --headless --convert-to pdf --outdir /輸出目錄 你的文檔.do…

Python實現生成矩形框、三角形框、六邊形框和圓環點云

本節我們分享上節提到的不填充點云。在點云處理、計算機視覺與工業檢測中,幾何輪廓(邊框/環)點云比實心點云更能反映物體的邊緣特征、結構骨架與形貌突變區域。Python 借助 NumPy 即可快速生成矩形邊框、三角形邊框、六邊形邊框與圓環點云&am…

2025年本體論:公理與規則的挑戰與趨勢

摘要本文章旨在深入探討本體論(Ontology)中公理(Axioms)與規則(Rules)的核心概念、技術實現、驗證方法、性能評估及其在2025年的前沿趨勢與挑戰。公理與規則是構建嚴謹、一致知識模型的邏輯基石&#xff0c…

【51單片機】【protues仿真】基于51單片機PM2.5空氣質量檢測系統

目錄 一、主要功能 二、使用步驟 三、硬件資源 四、軟件設計 五、實驗現象 一、主要功能 1、LCD1602液晶顯示 2、按鍵?設置閾值 3、PM2.5大于閾值時啟動聲光警報 二、使用步驟 基于51單片機的PM2.5空氣質量檢測系統通常采用STC89C51/52作為核心控制器,結合…

【目錄-單選】鴻蒙HarmonyOS開發者基礎

用哪一種裝飾器修飾的組件可作為頁面入口組件?Look at the answer下面是ArkTS中類名、枚舉名推薦的代碼風格是 Look at the answer向服務器提交表單數據,以下哪種請求方式比較合適 Look at the answer使用http發起網絡請求,需要以下哪種權限&…

maven【maven】技術詳解

MavenMaven的本質是項目管理工具,將項目開發和管理過程抽象成一個項目對象模型(POM)Project Object Model:項目對象管理模型作用: 項目構建:提供標準的、跨平臺的自動化項目構建方式依賴管理:方…