單機Linux下搭建MongoDB副本集-三節點

harlan_op發表於2023-03-13

前言說明

 Linux下安裝MongoDB副本集我基本上是一次搭建,幾百年不再碰,也記不住具體的命令,偶爾需要搭建都是直接網上找的教程。

有些教程很精簡,有些又版本不一樣,所以索性我整合下別人的教程,把linux下搭建副本集的步驟記錄下並分享出來,希望能夠幫到你們。 

 參考以下文章:https://developer.aliyun.com/article/983777

https://developer.aliyun.com/article/485807  -- 這個還有分片相關的東西,

 

安裝環境

  • 單臺CENT OS 7.6(騰訊雲伺服器的)
  • MongoDB 5.0.15
  • MobaXterm 終端工具

預期實現效果

在單臺伺服器上,透過配置3個不同埠,啟動3個MongoDB服務來實現副本集配置。

 

具體實現步驟

步驟一: 下載、安裝MongoDB、配置環境變數

1.1 下載

到官網下載(下圖示註1)或複製下載地址(下圖示註2), https://www.mongodb.com/try/download/community

單機Linux下搭建MongoDB副本集-三節點

1,2標註說明:
1 是直接下載tgz包,這是用於直接檔案傳輸到linux上,因為透過wget去下載有時候網速會很慢,所以這裡下文會提到download的下載方式。

2 是複製下載連結,這是用於wget方式下載,如下文執行命令。

 

 1.2 解壓安裝

 透過MobaXterm連線到的你Linux主機,當然你用其他的終端工具都可以。然後進入到指定目錄下,進行安裝。

整體命令如下(是逐行執行,不是整體執行)# 進入指定位置下載安裝包 你也可以選擇其他指定路徑,確保自己清楚即可。 

# 進入指定位置下載安裝包  你也可以選擇其他指定路徑,確保自己清楚即可。 還有,下面的執行命令是一行行執行,而不是一起執行。 
cd /usr/local

# 下載安裝包  注意:這裡可能遇到下載速度很慢的情況,如果遇到了,直接ctrl+c取消,再按照步驟1.1的截圖的1標註,直接下載安裝包到本地,再透過mobaXterm檔案傳輸工具傳進去(下面有截圖參考)。 因為wget執行了,/usr/local路徑下有個mongodb安裝包檔案,先刪了再傳。 
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-5.0.2.tgz


# 注意,執行下面命令前確保安裝包是下載好了的到你指定路徑。 
# 解壓安裝包 
tar -zxvf mongodb-linux-x86_64-rhel70-5.0.2.tgz 

# 改名字 
mv mongodb-linux-x86_64-rhel70-5.0.2 mongodb 

# 此時可以刪除安裝包 -- 建議先留著,等最後再刪 可以不執行它 
rm -rf mongodb-linux-x86_64-rhel70-5.0.2.tgz 

MobaXterm上傳安裝包的截圖

單機Linux下搭建MongoDB副本集-三節點

解壓好安裝包之後, cd 進入mongodb 再 ll 檢視,看到 bin資料夾和其他幾個檔案說明解壓成功。如下圖。

單機Linux下搭建MongoDB副本集-三節點

 1.3 配置環境變數

# 配置環境變數
vim /etc/profile

// 進入到profile之後, 新增的內容如下  注意/usr/local/mongodb是剛才安裝mongodb它所在的路徑,如果你不是安裝在這個路徑下,這裡就要換成你的安裝路徑。 具體這兩個配置的插入位置見下圖
export MONGO_HOME=/usr/local/mongodb
export PATH=$PATH:$MONGO_HOME/bin

補充:vim /etc/profile 之後, 按 i 會出來 ------insert----- 此時進入編輯模式,才可以去修改。
修改好了,按住 esc鍵,然後 輸入 :wq 儲存退出。

單機Linux下搭建MongoDB副本集-三節點

退出後,執行以下命令讓環境變數生效

source /etc/profile

 

步驟二:建立每個(共3個例項)MongoDB的資料、日誌儲存資料夾

2.1 建立資料、日誌、配置儲存資料夾

分別給每臺伺服器建立data 、 logs 、 conf資料夾,也就是一共9個,放在統一路徑,方便查詢管理。

# 這裡直接放在根目錄的data資料夾下了,你也可以選擇儲存到usr/local/mongodb裡面。 {1,2,3}表示分別建立 mongo1 mongo2 mongo3 
mkdir -p  /data/mongo{1,2,3}/data
mkdir -p  /data/mongo{1,2,3}/logs
mkdir -p  /data/mongo{1,2,3}/conf

執行完畢之後,可以進入到路徑中看看,分別有mongo1/2/3,每一個資料夾下都有conf / data / logs 資料夾,分別用來存放配置、資料、日誌。

 

步驟三:配置MongoDB配置檔案

對每個MongoDB服務,配置伺服器配置,包括IP埠、開放IP,後臺執行以及主要的副本集配置。

分別執行如下命令,建立三個配置檔案,把下邊的配置內容貼上進去,再儲存退出

# 每一個conf 對應一個伺服器, 裡面配置的內容主要是埠不一樣
vim /data/mongo1/conf/mongodb.conf
# 第二個伺服器配置
vim /data/mongo2/conf/mongodb.conf
# 第三個伺服器配置
vim /data/mongo3/conf/mongodb.conf

配置內容

port=27017 #埠 注意,三臺伺服器埠不一樣,分別設定為27017,27018,27019  同時確保Linux埠放開
bind_ip=0.0.0.0 # 預設是127.0.0.1,要想外網接入,這裡就要設定為0.0.0.0 
# 三臺伺服器的資料、日誌存放地址不一樣,要注意。
dbpath=/data/mongo1/data #資料庫存放 
logpath=/data/mongo1/logs/mongodb.log #日誌檔案
fork=true #設定後臺執行
#auth=true #開啟認證
## 下面的就是副本集相關的配置,三個伺服器要使用一樣的副本集名稱
replSet = myrs # 定義副本集名稱
oplogSize = 1024 # 定義opLog大小,單位是MB,也可以設定大一些比如2048,我這裡演示用,設定小點。

分別改下port  dbpath/logpath的路徑,其他保持一致。 一共操作三次vim。 儲存配置的時候,先檢查下有沒有漏字母,尤其是 port。

 

步驟四:分別啟動三個服務

先進入到mongodb bin 路徑下

# 如果你的安裝路徑是其他的,那就以你的為準,反正就是進入到bin路徑下去執行啟動伺服器命令
cd /usr/local/mongodb/bin

然後依次執行啟動命令

# 啟動第一臺
./mongod --config /data/mongo1/conf/mongodb.conf
#啟動第二臺
./mongod --config /data/mongo2/conf/mongodb.conf
#啟動第三臺
./mongod --config /data/mongo3/conf/mongodb.conf

每執行完一次,成功的話,提示如下

 

這時候三臺伺服器都啟動好了,連入等下要設定為主節點的伺服器,配置副本集並讓其生效。這裡我用27017埠的那臺作為主節點。

# 進入到mongodb bin目錄下,執行以下命令接入mongo
mongo --port 27017  

說明,埠是你準備要設定為主節點的那臺伺服器的埠,如果你用的其他IP,比如外網的MONGO,那麼要加上 --host xxx.xxx.xx.xx  具體IP 

當你看到下面的內容,說明連線上了,距離你完成副本集搭建只有一步之遙了。

 

// 在mongo 上切換到admin資料庫,執行
use admin
// 然後會提示你  switched to db admin
// 這個時候輸入以下配置

> config={_id:"myrs",members:[{_id:0,host:"localhost:27017"},{_id:1,host:"localhost:27018"},{_id:2,host:"localhost:27019"}]}  

補充說明,第一個_id的值是你在前面配置的副本集名稱,要保持一致。 如果你的三臺伺服器都是本地的,可以用localhost,當然也可以用你伺服器的IP地址。  

執行完畢後,頁面會出來如下圖內容,我執行的時候忘了截圖儲存,所以拿別人的來替代下。 

然後最後執行初始化生效

# 注意,這裡的config 就是上一步命令,你定義的時候,用的變數名,要一致。  
rs.initiate(config)

執行初始化成功後,頁面會提示ok.

 

Ok,至此你已經完成副本集配置,可以做測試驗證看看了。 

可以執行查詢看看副本集狀態

rs.status()

看到這些資訊就說明配置好了

單機Linux下搭建MongoDB副本集-三節點

補充:如果想要檢視當前MongoDB是否正常在後臺跑,可以輸入 ps aux |grep mongodb  查詢是否對應程式。

如果需要關掉某個程式重啟,可以 kill  程式ID  (透過ps aux |grep mongodb 可以找到)

再啟動,還是在mongodb bin路徑下 執行 mongod -f /具體存放路徑/mongodb.conf  -f 表示fork程式 後臺執行

 

步驟五:連線測試

可以用mongo compass / studio 3t 或者直接在虛擬機器上面操作連線。 

分別連線主節點和2個子節點。

這個時候你去主節點插入資料,然後到子節點就可以看到一樣的。

然後子節點裡面是寫入不了的,會提示只能在主節點寫入。 

 

注意:要確保伺服器的埠開放,不然連不上去。  

 

至此,副本集的基本搭建已完成。

希望這篇文章能幫到你~ 

相關文章