mongodb在window10中創建副本集的方法

創建Mongodb的副本集最好是新建一個文件夾,如D:/data,不要在mongodb安裝文件夾里面創建副本集,雖然這樣也可以,但是容易造成誤操作或路徑混亂;在新建文件夾里與現有 MongoDB 數據隔離,避免誤操作影響原有數據,后續要清理和遷移都要方便得多。

1、在cmd命令符中創建三個數據文件夾

mkdir D:\data\db1  # 主節點(Primary)
mkdir D:\data\db2  # 從節點1(Secondary)
mkdir D:\data\db3  # 從節點2(Secondary)

2、啟動 3 個 mongod 實例(模擬 3 節點副本集)
打開 3 個獨立的 CMD 窗口,分別運行:

窗口 1(主節點,端口 27017)

mongod --replSet rs0 --dbpath D:\data\db1 --port 27017 --logpath D:\data\db1\log.log --bind_ip 0.0.0.0

窗口 2(從節點1,端口 27018)

mongod --replSet rs0 --dbpath D:\data\db2 --port 27018 --logpath D:\data\db2\log.log --bind_ip 0.0.0.0

窗口 3(從節點2,端口 27019)

mongod --replSet rs0 --dbpath D:\data\db3 --port 27019 --logpath D:\data\db3\log.log --bind_ip 0.0.0.0

注意:這三個cmd窗口都不能關閉,如果關閉則副本集也會關閉,他們會沒啥反應,只能在mongosh中才能查看到狀態

3、 初始化副本集
連接主節點(27017)并執行初始化:
再打開一個cmd命令,首先你要安裝好mongodb shell,下面的mongosh命令才能用

這里先登陸主節點

mongosh --port 27017

然后初始化副本集,注意在cmd命令中不能換行書寫的,你最好寫成一行,要么用mongosh加載js文件

rs.initiate({_id: "rs0",members: [{ _id: 0, host: "localhost:27017" },{ _id: 1, host: "localhost:27018" },{ _id: 2, host: "localhost:27019" }]
})

用mongosh加載js文件初始化,把上面的寫在init_replica.js文件后用mongosh加載

mongosh --port 27017 --file init_replica.js

初始化成功后,驗證各節點狀態,進入主節點
mongosh --port 27017

rs.status()  // 檢查各節點狀態
rs.isMaster() // 查看主節點信息

現在你就可以測試了,比如在主節點中插入數據,然后在從節點中查詢

db.user.insertOne({"name":"Bob",age:22});

登陸從節點27018
mongosh --port 27018

db.user.find({});//這時會顯示主節點插入的數據

這里的副本集和你單機的mongodb數據庫是一模一樣的,在主節點上也有admin,local,test等集合,一樣可以設置用戶名和密碼及ssl證書

4、創建管理員賬戶和從節點管理

在初始化后我們就可以進行創建用戶名和密碼,上面都是直接登陸,這樣顯然是不安全的,進入我們的主節點

use admin
db.createUser({user: "admin",pwd: "yourSecurePassword",  // 替換為強密碼roles: [{ role: "root", db: "admin" },          // 超級管理員{ role: "clusterAdmin", db: "admin" }   // 副本集管理權限]
});

說明:用戶權限在副本集中的同步機制,主節點創建的用戶會自動同步到所有從節點
MongoDB 的 用戶數據存儲在 admin 數據庫 中,而 admin 數據庫的內容(包括用戶賬號)會通過副本集的 Oplog 自動同步到所有成 員。
因此:
只需在主節點創建用戶(如 admin),從節點會自動同步該用戶信息。
從節點不需要單獨創建用戶,但必須用相同的用戶名/密碼登錄。

編輯 MongoDB 配置文件(通常位于 /etc/mongod.conf 或 C:\Program Files\MongoDB\Server<version>\bin\mongod.cfg):

security:authorization: enabled  # 啟用認證keyFile: /path/to/keyfile  # 副本集內部認證文件(下一步生成)
  1. 生成 KeyFile(副本集內部認證)
openssl rand -base64 756 > /path/to/mongo-keyfile
chmod 400 /path/to/mongo-keyfile  # 限制權限

KeyFile 的使用規則
所有副本集成員必須使用完全相同的 KeyFile 文件
KeyFile 是副本集成員之間互相認證的共享密鑰,內容必須一致。
生成后需嚴格限制權限(Linux: chmod 400,Windows: 僅管理員可讀)

將 keyfile 復制到所有節點的相同路徑。

  1. 重啟所有節點
mongod --replSet rs0 --dbpath /data/db1 --port 27017 --bind_ip 0.0.0.0 --auth --keyFile /path/to/mongo-keyfile

(其他節點同理)

  1. 驗證認證
mongosh --port 27017 -u admin -p yourSecurePassword --authenticationDatabase adminrs.status()  // 確認副本集狀態正常

配置項作用
authorization: enabled 強制所有連接必須提供用戶名/密碼
keyFile 副本集成員間通信的共享密鑰,防止未授權節點加入
clusterAdmin 角色 允許用戶管理副本集(如 rs.status(), rs.reconfig())
root 角色 超級管理員權限(謹慎分配)

生產環境最佳實踐

避免使用默認端口:修改 27017 為非常用端口。

網絡隔離:將副本集部署在內網,僅暴露主節點給應用服務器。

定期輪換 KeyFile:每 3 個月更新一次 keyfile。

審計日志:啟用 auditLog 記錄所有敏感操作。

強制關閉節點

db.shutdownServer()  // 主節點才能執行
// 或強制關閉(從節點適用)
db.adminCommand({ shutdown: 1, force: true })

如果要重新初始化
停止 MongoDB:

net stop MongoDB
(或 taskkill /F /IM mongod.exe)

刪除數據目錄:

rmdir /s /q D:\data\db1
rmdir /s /q D:\data\db2
rmdir /s /q D:\data\db3

重新創建目錄:

mkdir D:\data\db1
mkdir D:\data\db2
mkdir D:\data\db3

再進行最上面的步驟

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

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

相關文章

使用Python進行AI圖像生成:從GAN到風格遷移的完整指南

AI圖像生成是一個非常有趣且前沿的領域&#xff0c;結合了深度學習和計算機視覺技術。以下是一些使用Python和相關庫進行AI圖像生成的創意和實現思路&#xff1a; 1. 使用GAN&#xff08;生成對抗網絡&#xff09; 基本概念&#xff1a;GAN由兩個神經網絡組成&#xff1a;生成…

P10413 [藍橋杯 2023 國 A] 圓上的連線

題意&#xff1a; 給定一個圓&#xff0c;圓上有 n2023 個點從 1 到 n 依次編號。 問有多少種不同的連線方式&#xff0c;使得完全沒有連線相交。當兩個方案連線的數量不同或任何一個點連接的點在另一個方案中編號不同時&#xff0c;兩個方案視為不同。 答案可能很大&#x…

鴻蒙5.0 非桌面頁面,設備來電后掛斷,自動返回桌面

1.背景 其實在Android上面打開一個應用,然后設備來電后掛斷應該是返回到前面打開的這個應用的,但是在鴻蒙里面現象是直接返回桌面,設計如此 2.分析 這個分析需要前置知識,鴻蒙的任務棧頁面棧,具體參考如下鏈接: zh-cn/application-dev/application-models/page-missio…

智能Todo協作系統開發日志(二):架構優化與安全增強

&#x1f4c5; 2025年4月14日 | 作者&#xff1a;Aphelios380 &#x1f31f; 今日優化目標 在原Todo單機版基礎上進行三大核心升級&#xff1a; 組件化架構改造 - 提升代碼可維護性 本地數據加密存儲 - 增強隱私安全性 無障礙訪問支持 - 踐行W3C標準 一、組件化架構改造 …

linux電源管理(二),內核的CPUFreq(DVFS)和ARM的SCPI

更多linux系統電源管理相關的內容請看&#xff1a;https://blog.csdn.net/u010936265/article/details/146436725?spm1011.2415.3001.5331 1 簡介 CPUFreq子系統位于drivers/cpufreq目錄下&#xff0c;負責進行運行過程中CPU頻率和電壓的動態調整&#xff0c;即DVFS (Dynami…

mysql 數據庫localhost密碼忘記

使用此查詢語句&#xff1a; SELECT user, authentication_string FROM mysql.user WHERE user root; 復制對應的密碼&#xff1a; 密碼是通過md5加密后的 md5在線解密破解,md5解密加密 將密碼輸入進來 就可以直接破解了

05、Docker run命令實戰:數據卷與掛載的完整指南(下)

5.1、深度剖析 docker run 命令:原理闡釋與數據持久化實踐探究 1、更換國內yum源2、更換國內docker源3、卸載舊版docker4、docker安裝5、鏡像加速器6、鏡像下載7、docker run命令交互式啟動-it非交互式后臺運行其他參數mysql綜合案例8、持久化存儲目錄掛載數據卷掛載數據同步1…

macOS 上使用 Homebrew 安裝和配置 frp 客戶端

macOS 上使用 Homebrew 安裝和配置 frp 客戶端 (frpc) 指南 frp (Fast Reverse Proxy) 是一款高性能的反向代理應用&#xff0c;常用于內網穿透。本文將介紹在 macOS 上使用 Homebrew 安裝 frpc&#xff0c;并進行配置和管理。 一、安裝 frpc 使用 Homebrew 安裝&#xff08;…

泊松分布詳解:從理論基礎到實際應用的全面剖析

泊松分布詳解&#xff1a;從理論基礎到實際應用的全面剖析 目錄 引言&#xff1a;事件的罕見性與隨機計數泊松分布的歷史源流泊松分布的數學定義與性質 概率質量函數 (PMF)累積分布函數 (CDF)期望、方差與其他矩矩生成函數 (MGF) 與特征函數 (CF) 泊松分布的嚴格推導 極限推導…

紅寶書第三十六講:持續集成(CI)配置入門指南

紅寶書第三十六講&#xff1a;持續集成&#xff08;CI&#xff09;配置入門指南 資料取自《JavaScript高級程序設計&#xff08;第5版&#xff09;》。 查看總目錄&#xff1a;紅寶書學習大綱 一、什么是持續集成&#xff1f; 持續集成&#xff08;CI&#xff09;就像咖啡廳的…

python 辦公自動化------ excel文件的操作,讀取、寫入

一、excel文件的讀取 需要安裝的包&#xff1a;xlrd&#xff1a;讀取&#xff1b;xlwt&#xff1a;寫入&#xff1b;xlutils&#xff1a;分割、復制、篩選 sudo&#xff1a;表示以管理員身份運行命令&#xff08;mac系統中使用&#xff09; >sudo pip install xlrd xlwt x…

JAVA Web_定義Servlet2_學生登錄驗證Servlet

題目 頁面StudentLogin.html中有一HTML的表單代碼如下&#xff1a; <form action"studentLogin" method"post">學生姓名&#xff1a;<input type"text" name"stuName" value""><br>登錄密碼&#xff1a;…

爬蟲: 一文掌握 pycurl 的詳細使用(更接近底層,性能更高)

更多內容請見: 爬蟲和逆向教程-專欄介紹和目錄 文章目錄 一、PycURL概述1.1 PycURL介紹1.2 基本安裝1.3 安裝依賴(Linux/macOS)1.4 常用選項參考二、基本使用2.1 簡單 GET 請求2.2 獲取響應信息2.3 設置請求頭2.4 超時設置2.5 跟隨重定向三、高級功能3.1 POST 請求3.2 文件上…

利用 限制torch線程數與異步方法提升聲紋識別效率

引言 聲紋識別作為生物識別技術的重要分支,在安防、金融、智能助手等領域應用廣泛。隨著數據量的增長和應用場景的復雜化,提高聲紋識別效率成為關鍵問題。本文將詳細介紹如何通過 torch.set_num_threads 以及異步方法來優化聲紋識別的性能。 聲紋識別效率瓶頸分析 在聲紋…

軟考高級系統架構設計師-第12章 系統質量屬性與架構評估

【本章學習建議】 根據考試大綱&#xff0c;本章不僅考查系統架構設計師單選題&#xff0c;預計考11分左右&#xff0c;而且案例分析和論文寫作也是必考&#xff0c;對應第二版教材第8章&#xff0c;屬于重點學習的章節。 12.1 軟件系統質量屬性 12.1.1 質量屬性概念 軟件系…

SecProxy - 自動化安全協同平臺

本人為甲方安全人員&#xff0c;從事甲方工作近6年&#xff1b;針對在甲方平時安全工作的一些重復、復雜、難點的工作&#xff0c;思考如何通過AI、腳本、或者工具實現智能且自動化&#xff0c;于是花平時空閑時間準備將這些能力全部集中到一個平臺&#xff0c;于是有了這個東西…

CSI-external-provisioner

main() 這段Go代碼是一個CSI&#xff08;容器存儲接口&#xff09;Provisioner&#xff08;供應器&#xff09;的實現&#xff0c;用于在Kubernetes集群中動態提供持久卷。代碼涉及多個組件和步驟&#xff0c;下面是對關鍵部分的解釋&#xff1a; 初始化和配置 命令行標志和…

react中通過 EventEmitter 在組件間傳遞狀態

要在 Reply 組件中通過 statusChangeEvent 發送狀態值&#xff0c;并在 Select 組件中接收這個狀態值 status&#xff0c;你可以按照以下步驟實現&#xff1a; //Event.jsimport EventEmitter from events;export const statusChangeEvent new EventEmitter();// 工單狀態切換…

1534. 統計好三元組

1534. 統計好三元組 - 力扣&#xff08;LeetCode&#xff09; 給你一個整數數組 arr &#xff0c;以及 a、b 、c 三個整數。請你統計其中好三元組的數量。 如果三元組 (arr[i], arr[j], arr[k]) 滿足下列全部條件&#xff0c;則認為它是一個 好三元組 。 0 < i < j &l…

如何配置AWS EKS自動擴展組:實現高效彈性伸縮

本文詳細講解如何在AWS EKS中配置節點組&#xff08;Node Group&#xff09;和Pod的自動擴展&#xff0c;優化資源利用率并保障應用高可用。 一、準備工作 工具安裝 安裝并配置AWS CLI 安裝eksctl&#xff08;EKS管理工具&#xff09; 安裝kubectl&#xff08;Kubernetes命令…