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.mzph.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命令…