部署MongoDB複製集(副本集)

来源:https://www.cnblogs.com/kennysay/archive/2018/11/02/9896576.html
-Advertisement-
Play Games

環境 操作系統:Ubuntu 18.04 MongoDB: 4.0.3 伺服器 首先部署3台伺服器,1台主節點 + 2台從節點 3台伺服器的內容ip分別是: 10.140.0.5 (主節點) 10.140.0.6 (從節點01) 10.140.0.7 (從節點02) 安裝MongoDB 接下來,需要 ...


環境 操作系統:Ubuntu 18.04 MongoDB: 4.0.3
伺服器 首先部署3台伺服器,1台主節點 + 2台從節點 3台伺服器的內容ip分別是: 10.140.0.5 (主節點) 10.140.0.6 (從節點01) 10.140.0.7 (從節點02)
安裝MongoDB 接下來,需要在每一臺伺服器上安裝MongoDB。 完整安裝過程可參考官方文檔 為了方便,本文提供MongoDB的一鍵安裝腳本
切換成root用戶
sudo su -

 

運行安裝腳本
wget https://gitlab.com/caizhifei2003/scripts/raw/master/install/mongodb/ubuntu-1804.sh
chmod u+x ubuntu-1804.sh
./ubuntu-1804.sh

 

此時,可以通過mongo命令進入資料庫

配置複製集   設置複製集名稱   有兩種方式來設置複製集的名稱。一種是通過mongod命令,另一種是通過修改配置文件。 本文使用通過修改配置文件的方式來設置複製集名稱,確保每次節點重新啟動後能夠使用相同的配置啟動資料庫。
打開MongoDB在Ubuntu上的配置文件
vim /etc/mongod.conf

找到replication配置節
replication:
    replSetName: "rs0"

 

綁定MongoDB的IP地址   找到net配置節
net:
    port: 27017
    bindIp: localhost,10.140.0.5
這裡是主節點的地址,相應的從節點要綁定 10.140.0.6 10.140.0.7
保存文件,重新啟動mongod服務
service mongod restart

 

此時,進入到任何一個節點。查看複製集狀態。

初始化複製集 通過mongo shell進入主節點的資料庫 執行複製集初始化命令
rs.initiate( {
   _id : "rs0",
   members: [
      { _id: 0, host: "10.140.0.5:27017" },
      { _id: 1, host: "10.140.0.6:27017" },
      { _id: 2, host: "10.140.0.7:27017" }
   ]
})

 

查看複製集狀態
rs.status()


到此,複製集已經創建成功。
測試數據同步 執行如下命令,在主節點上插入一條數據
use test
db.test.insertOne({"name": "kenny"})

 

進入任何一個從節點,查看數據是否被同步。
use test
rs.slaveOk()
db.test.find()
預設情況下,MongoDB只允許在主節點上寫入和讀取數據。這裡的rs.slaveOk()是為了在從節點上也讀取數據而需要執行的session(如果退出mongo shell,需要重新執行該命令)級別的命令。 顯示的內容如下:

測試重新選舉主節點 在3個節點上分別使用rs.isMaster()命令 10.140.0.5:

10.140.0.6:

10.140.0.7

強制關閉主節點上的MongoDB服務
use admin
db.shutdownServer()

 

在兩個從節點上,通過rs.isMaster()命令查看狀態
10.140.0.6:

10.140.0.7:

從上面的運行結果可以看出,10.140.0.6已經被推選成新的主節點。此時所有服務一切正常。 至此,部署MongoDB複製集的基本操作已經完成。
總結   MongoDB複製集的部署還是比較簡單的,官方文檔也給出了較為詳細的說明。   同任何其它資料庫一樣,MongoDB的副本集也是為了增強數據的安全性,避免因為伺服器出現異常時,而導致數據服務不可用的情況出現。同時,數據被完整的保存在多個節點中,任何一臺伺服器的硬碟出現問題,都不會丟失數據。但是這裡也存在風險,那就是數據同步存在時間差,如果還沒有等到數據被同步到從節點,主節點就當機的話,那麼這部分數據是無法找回的。   官方建議的副本集節點數量是3個,1個主節點+2個從節點。或者是1個主節點+1個從節點+1個仲裁節點。仲裁節點的作用是在主節點不可用時,通過演算法找到最適合的從節點成為新的主節點。不建議將仲裁節點和數據節點放在同一個伺服器上。
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Shadowsocks即有服務端還有專門的客戶端,支持全平臺,神馬Windows、Linux、Mac、Android、iOS、OpenWrt...統統都支持。下麵主要介紹server和client的安裝過程。 ...
  • 關鍵字if+trim trim可以去除多餘的關鍵字,是where和set的組合 trim標記是一個格式化的標記,可以完成set或者是where標記的功能,如下代碼: <trim prefix="" suffix="" suffixOverrides="" prefixOverrides=""></t ...
  • 當使用plsqldev客戶端登錄oracle資料庫時,如果對應的tnsnames.ora中是直接使用IP地址來連接,並且未在系統的hosts文件中綁定主機名時,極易出現ORA-12502及ORA-12545報錯,這兩種錯誤內容分別是: ORA-12502: TNS:listener received ...
  • hive中的轉義符 Hadoop和Hive都是用UTF-8編碼的,所以, 所有中文必須是UTF-8編碼, 才能正常使用 備註:中文數據load到表裡面, 如果字元集不同,很有可能全是亂碼需要做轉碼的, 但是hive本身沒有函數來做這個 一、轉義字元的特殊情況: 自身的轉義,比如java有時候需要兩個 ...
  • 一.概述 在sql server里臨時表存儲在TempDB庫中,TempDB是一個系統資料庫,它只有Simple恢復模式,也是最小日誌記錄操作。主要用於存放局部臨時表,全局臨時表,表變數,都是基於臨時特征,每次伺服器或服務重啟後,都會按照Model庫的配置重新創建TempDB庫。在sql serve ...
  • 一、 關係型資料庫(sql) 1.建表 二、非關係型資料庫(nosql 98提出的概念) 1.不用建庫建表數據直接存入就可 優缺點: 關係型:節約資源(學生姓名和課程名不重覆出現),開發不方便(需先建庫建表,外鍵等) 非關係型:浪費資源(學生姓名和課程名重覆出現),開發方便(不需要建庫建表,數據直接 ...
  • 在安裝和測試HBase之前,我們有必要先瞭解一下HBase是什麼 我們可以通過下麵的資料對其有一定的瞭解: HBase 官方文檔中文版 HBase 深入淺出 我想把我知道的分享給大家,方便大家交流。 ...
  • 作者:天山老妖S 鏈接:http://blog.51cto.com/9291927 一、自定義函數簡介 自定義函數(user-defined function UDF)是一種對MySQL擴展的途徑,其用法和內置函數相同。 自定義函數的兩個必要條件: A、參數 B、返回值(必須有)。函數可以返回任意類 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...