加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

Windows 版MongoDB 复制集Replica Set 配置

发布时间:2020-12-14 02:35:48 所属栏目:Windows 来源:网络整理
导读:Windows 版MongoDB 复制集Replica Set 配置 环境 MongoDB 版本:4.0 操作系统:Windows 10 (因为只有一台机器,所以会采用多实例来记录) 三个节点结构如下图: 要求 1 个 Primary 节点,2 个 Secondary 节点,其中 1 个 Secondary 节点作为 Arbiter(仲裁

Windows 版MongoDB 复制集Replica Set 配置

环境

  • MongoDB 版本:4.0
  • 操作系统:Windows 10 (因为只有一台机器,所以会采用多实例来记录)
  • 三个节点结构如下图:

   

要求

1 个 Primary 节点,2 个 Secondary 节点,其中 1 个 Secondary 节点作为 Arbiter(仲裁) 节点。

三个节点的配置文件

primary

replSet = rs0

# 端口
port = 27017

# 日志
logpath = D:Program FilesMongoDBServerreplsetPrimarylogmongodb.log

# 数据库
dbpath = D:Program FilesMongoDBServerreplsetPrimarydata

secondary-1

replSet = rs0

# 端口
port = 27018

# 日志
logpath = D:Program FilesMongoDBServerreplsetSecondary1logmongodb.log

# 数据库
dbpath = D:Program FilesMongoDBServerreplsetSecondary1data

secondary-2 —— 作为仲裁(Arbiter)节点

replSet = rs0

# 端口
port = 27019

# 日志
logpath = D:Program FilesMongoDBServerreplsetSecondary2logmongodb.log

# 数据库
dbpath = D:Program FilesMongoDBServerreplsetSecondary2data

其实三个配置文件除了端口号其他都一样。这里我选择了?29031?作为 Primary 节点 。

启动三个节点

分别进入三个?MongoDB?主程序的?bin?目录 然后对应分别执行下面的三句命令:

F:replSetprimarybin> mongod -f ../primary.ini
F:replSetsecondary-1bin> mongod -f ../secondary-1.ini
F:replSetsecondary-2bin> mongod -f ../secondary-2.ini 

配置 Primary 节点

config_rs0 = {_id : "rs0",members : [ { _id:0,host:"localhost:27017",priority:1 },{ _id:1,host:"localhost:27018",{ _id:2,host:"localhost:27019",priority:1,"arbiterOnly": true } ]}
rs.initiate(config_rs1)

进入?primary?节点的?bin?目录打开控制台通过命令:mongo --port 27017 连接到 primary 节点。分别执行以上两行命令。看到如下图信息表示配置成功:

注意事项

默认只可以从 primary 节点读写数据,secondary 节点不支持读写,在 secondary 节点执行 rs.slaveOk() 命令可让 secondary 节点支持读写。?

其他

  • 生产环境中应该还有一个仲裁节点,它不接受复制的数据。当 primary 节点出现问题(如:宕机)之后,它会从新选出一个 secondary 节点作为 primary 节点,以保证生产线不会出问题。原来的 primary 节点修复后将做为 secondary 节点存在。
  • 单机配置复制集时,MongoDB 添加仲裁节点时 host 不能用 localhost 这个主机名 ,否则会提示重复的主机名(Duplicate host names)错误。解决办法就是文章开头说的在 hosts 做个映射。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读