mongodb复制集windows server部署,以及将线上单节点转化成复制集所踩的坑

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
日志服务 SLS,月写入数据量 50GB 1个月
简介: 安装完成后我们需要启动三个mongod的服务来做为复制集的三个节点,我们可以直接打开cmd,使用mongod来根据不同的配置启动服务。例如:参考如下四张图,由于我安装的磁盘足够存放mongodb的数据,所以我将数据放在data文件中,三个节点的配置文件放在config文件中,三个节点mongod的服务日志放在log中。

部署

mongodb安装就不多介绍了。可以参考:https://blog.csdn.net/Chenftli/article/details/105228130

安装完成后我们需要启动三个mongod的服务来做为复制集的三个节点,我们可以直接打开cmd,使用mongod来根据不同的配置启动服务。例如:参考如下四张图,由于我安装的磁盘足够存放mongodb的数据,所以我将数据放在data文件中,三个节点的配置文件放在config文件中,三个节点mongod的服务日志放在log中。
在这里插入图片描述
分别将三个节点的数据放在data的db1、db2、db3中。
在这里插入图片描述
分别将三个节点的mongod日志放在log的db1、db2、db3中。
在这里插入图片描述

再分别把配置文件放到config中的db1、db2、db3中。
在这里插入图片描述
mongod.cfg文件可以在bin目录下拷贝过来。
在这里插入图片描述
下面为mongod.cfg的配置内容, 三个配置文件的不同在于dbPath、systemLog的path、net的port的分别改成对应的内容,参数的意义在下面注释中。

# mongod.conf

# Where and how to store data.
storage:
  # dbPath为当前节点数据存储的路径
  dbPath: D:\Program Files\MongoDB\Server\4.2\data\db1
  # journal的enabled为是否开启日志
  journal:
    enabled: true
# 这部分的配置很重要,直接影响到内存的占用,cacheSizeGB为当前节点的
# monggo服务需要占用服务器内存的大小,cacheSizeGB大小的配置请查看
# 下面泪的部分
  wiredTiger:
    engineConfig:
      cacheSizeGB: 5

# mongod日志文件的配置,mongodb服务出现问题可以查看此日志
systemLog:
  destination: file
  logAppend: true
  path:  D:\Program Files\MongoDB\Server\4.2\log\db1\mongod.log

# network interfaces,port为此mongo节点的开放的端口,
# bindIp为开放访问的Ip,0.0.0.0意思是任意Ip地址都可访问,
# 这就涉及到权限问题,你也可以只设置需要访问此mongo节点的ip
net:
  port: 27017
  bindIp: 0.0.0.0

# 安全配置的权限认证开启
security:
  authorization: enabled
  # 如果节点在不同的服务器上开启了认证,则需要使用keyfile去认证,并在下面路径的目录中创建rs0.key文件
  keyFile: D:\Program Files\MongoDB\Server\4.2\keyfile\rs0.key

# 复制集配置,replSetName所属
replication:
  replSetName: rs0

更多配置内容请参考官方文档:http://docs.mongodb.org/manual/reference/configuration-options/

使用如下命令来逐个启动mongod服务(注意修改配置文件路径以及服务名,分成三个cmd窗口启动)

mongod --config "D:\Program Files\MongoDB\Server\4.2\config\db1\mongod.cfg" --serviceName "MongoDB1" --serviceDisplayName "MongoDB1" --install

使用下面命令进入一个mongo的服务:

mongo -p 27017

执行下面命令将mongo的三个服务节点挂载到rs0的复制集下

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

此时一个复制集部署完成。

总结:

三个复制集的节点可以部署到不同的服务器上,步骤差不多,可能需要你关注防火墙是否开启,如果开启,要在入站规则配置端口开放。
还有如果开启了认证机制,不同节点需要在配置中的security:中添加下面一行配置:

keyFile: D:\Program Files\MongoDB\Server\4.2\keyfile\rs0.key

泪:

我的坑:线上的服务器是单节点mongo,想要改成复制集,但只有一台服务器,所以我要把三个mongodb服务部署在同一台服务器,由于之前的mongo有50多G的数据,改成复制集后,数据同步时把服务器内存撑爆。

原因:由于没有设置mongo的缓存cacheSizeGB的值,默认会使用服务器内存的60%,原来一个mongo服务, 现在三个mongo服务,三个节点在同步数据是产生大量缓存,内存得不到释放,会将服务器的内存撑满。
根据服务器内存大小,以及mongo服务占用多少内存资源,设置合理的值,
一般会设置cacheSizeGB*0.6 = mongo服务占用多少内存

其他问题:

下面问题是在设置仲裁节点时出现的

"errmsg" : "This node, 127.0.0.1:27017, with id MemberId(0) is not electable under the new configura

此问题的原因是:仲裁不能和初始化在同一台服务器,所以如果要设置仲裁节点则需要将一个Mongo的服务节点放到另外的服务器上,并将此节点在初始化时候的服务器上设置为仲裁节点。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
1月前
|
存储 NoSQL MongoDB
MongoDB入门级别教程全(Windows版,保姆级教程)
一份全面的MongoDB入门级教程,包括在Windows系统上安装MongoDB、使用MongoDB Shell和Compass GUI进行数据库操作,以及MongoDB的基本数据类型和查询技巧。
66 2
MongoDB入门级别教程全(Windows版,保姆级教程)
|
12天前
|
存储 NoSQL MongoDB
【赵渝强老师】部署MongoDB复制集
本文介绍了如何在单个节点上搭建MongoDB复制集环境,通过监听不同端口实现多节点配置。详细步骤包括创建数据目录、编辑配置文件、启动节点、初始化复制集、查看状态以及测试主从库的读写操作。文中还提供了视频讲解和代码示例,帮助读者更好地理解和操作。
|
12天前
|
存储 NoSQL MongoDB
【赵渝强老师】MongoDB复制集的体系架构
MongoDB的复制集是一种集群技术,由一个Primary节点和多个Secondary节点组成,实现数据的高可用性。Primary节点处理写入请求,Secondary节点同步数据。当Primary节点故障时,Secondary节点可通过选举成为新的Primary节点。视频讲解和示意图详见正文。
|
1月前
|
NoSQL Shell MongoDB
Windows 平台安装 MongoDB
10月更文挑战第10天
44 0
Windows 平台安装 MongoDB
|
2月前
|
Windows
Windows操作系统部署安装Kerberos客户端
详细介绍了在Windows操作系统上部署安装Kerberos客户端的完整过程,包括下载安装包、安装步骤、自定义安装路径、修改环境变量、配置hosts文件和Kerberos配置文件,以及安装后的验证步骤。
381 3
Windows操作系统部署安装Kerberos客户端
|
3月前
|
C# UED 开发者
WPF与性能优化:掌握这些核心技巧,让你的应用从卡顿到丝滑,彻底告别延迟,实现响应速度质的飞跃——从布局到动画全面剖析与实例演示
【8月更文挑战第31天】本文通过对比优化前后的方法,详细探讨了提升WPF应用响应速度的策略。文章首先分析了常见的性能瓶颈,如复杂的XAML布局、耗时的事件处理、不当的数据绑定及繁重的动画效果。接着,通过具体示例展示了如何简化XAML结构、使用后台线程处理事件、调整数据绑定设置以及利用DirectX优化动画,从而有效提升应用性能。通过这些优化措施,WPF应用将更加流畅,用户体验也将得到显著改善。
238 1
|
3月前
|
C# 开发者 Windows
全面指南:WPF无障碍设计从入门到精通——让每一个用户都能无障碍地享受你的应用,从自动化属性到焦点导航的最佳实践
【8月更文挑战第31天】为了确保Windows Presentation Foundation (WPF) 应用程序对所有用户都具备无障碍性,开发者需关注无障碍设计原则。这不仅是法律要求,更是社会责任,旨在让技术更人性化,惠及包括视障、听障及行动受限等用户群体。
81 0
|
3月前
|
开发框架 JavaScript .NET
【Azure 应用服务】Azure Mobile App (NodeJS) 的服务端部署在App Service for Windows中出现404 Not Found
【Azure 应用服务】Azure Mobile App (NodeJS) 的服务端部署在App Service for Windows中出现404 Not Found
|
3月前
|
存储 安全 网络安全
【Azure 环境】使用Azure中的App Service部署Web应用,以Windows为主机系统是否可以启动防病毒,防恶意软件服务呢(Microsoft Antimalware)?
【Azure 环境】使用Azure中的App Service部署Web应用,以Windows为主机系统是否可以启动防病毒,防恶意软件服务呢(Microsoft Antimalware)?
|
3月前
|
Python Windows
【Azure 应用服务】App Service For Windows 环境中部署Python站点后,如何继续访问静态资源文件呢(Serving Static Files)?
【Azure 应用服务】App Service For Windows 环境中部署Python站点后,如何继续访问静态资源文件呢(Serving Static Files)?
下一篇
无影云桌面