前言說明
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
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上傳安裝包的截圖
解壓好安裝包之後, cd 進入mongodb 再 ll 檢視,看到 bin資料夾和其他幾個檔案說明解壓成功。如下圖。
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 儲存退出。
退出後,執行以下命令讓環境變數生效
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()
看到這些資訊就說明配置好了
補充:如果想要檢視當前MongoDB是否正常在後臺跑,可以輸入 ps aux |grep mongodb 查詢是否對應程式。
如果需要關掉某個程式重啟,可以 kill 程式ID (透過ps aux |grep mongodb 可以找到)
再啟動,還是在mongodb bin路徑下 執行 mongod -f /具體存放路徑/mongodb.conf -f 表示fork程式 後臺執行
步驟五:連線測試
可以用mongo compass / studio 3t 或者直接在虛擬機器上面操作連線。
分別連線主節點和2個子節點。
這個時候你去主節點插入資料,然後到子節點就可以看到一樣的。
然後子節點裡面是寫入不了的,會提示只能在主節點寫入。
注意:要確保伺服器的埠開放,不然連不上去。
至此,副本集的基本搭建已完成。
希望這篇文章能幫到你~