本文已参加「新人创造礼」活动,一起敞开创造之路。

一、部署

mongodb装置就不多介绍了。能够参阅:blog.csdn.net/Chenftli/ar…

装置完结后我们需求发动三个mongod的服务来做为仿制集的三个节点,我们能够直接打开cmd,运用mongod来依据不同的装备发动服务。例如:参阅如下四张图,因为我装置的磁盘足够寄存mongodb的数据,所以我将数据放在data文件中,三个节点的装备文件放在config文件中,三个节点mongod的服务日志放在log中。

mongodb复制集windows server部署
别离将三个节点的数据放在data的db1、db2、db3中。
mongodb复制集windows server部署
别离将三个节点的mongod日志放在log的db1、db2、db3中。
mongodb复制集windows server部署

再别离把装备文件放到config中的db1、db2、db3中。

mongodb复制集windows server部署
mongod.cfg文件能够在bin目录下拷贝过来。
mongodb复制集windows server部署
下面为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

更多装备内容请参阅官方文档:docs.mongodb.org/manual/refe…

运用如下指令来逐个发动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的服务节点放到别的的服务器上,并将此节点在初始化时候的服务器上设置为裁定节点。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。