主頁 > 資料庫 > 單機Linux下搭建MongoDB副本集-三節點

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

2023-03-14 07:56:15 資料庫

前言說明

 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個子節點,

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

然后子節點里面是寫入不了的,會提示只能在主節點寫入, 

 

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

 

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

希望這篇文章能幫到你~ 

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/546763.html

標籤:其他

上一篇:對比分析數倉中行列存的特性

下一篇:MySQL為什么RR隔離級別添加了間隙鎖還是無法解決幻讀問題?

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more