博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB 复制集(Replica Set) 配置(Windows 版)
阅读量:4982 次
发布时间:2019-06-12

本文共 1941 字,大约阅读时间需要 6 分钟。

环境

  • MongoDB 版本:2.6.5
  • 操作系统:Windows 7 SP1 (因为只有一台机器,所以会采用多实例来记录)
  • 在 C:\Windows\System32\drivers\etc\hosts 中添加如下配置:
127.0.0.1      replset
  • 三个节点结构如下图:

   

要求

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

三个节点的配置文件

primary

replSet = rs1# 端口port = 29031# 日志logpath = F:\replSet\master\logFiles\mongodb.log# 数据库dbpath = F:\replSet\master\data

secondary-1

replSet = rs1# 端口port = 29032# 日志logpath = F:\replSet\slaver-1\logFiles\mongodb.log# 数据库dbpath = F:\replSet\slaver-1\data 

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

replSet = rs1# 端口port = 29033# 日志logpath = F:\replSet\slaver-2\logFiles\mongodb.log# 数据库dbpath = F:\replSet\slaver-2\data 

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

启动三个节点

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

F:\replSet\primary\bin> mongod -f ../primary.iniF:\replSet\secondary-1\bin> mongod -f ../secondary-1.iniF:\replSet\secondary-2\bin> mongod -f ../secondary-2.ini

配置 Primary 节点

config_rs1 = {_id : "rs1",members : [ { _id:0, host:"replset:29031", priority:1 },{ _id:1, host:"replset:29032", priority:1 },{ _id:2, host:"replset:29033", priority:1, "arbiterOnly": true } ]}rs.initiate(config_rs1)

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

注意事项

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

其他

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

参考资料

  http://docs.mongodb.org/manual/core/replication/

  http://docs.mongodb.org/manual/tutorial/add-replica-set-arbiter/

  http://docs.mongodb.org/manual/reference/method/db.createUser/

  http://blog.csdn.net/irelandken/article/details/8003315

  http://liyanblog.cn/articles/2013/01/15/1358217684805.html

 

转载于:https://www.cnblogs.com/jRoger/articles/4708490.html

你可能感兴趣的文章
2019年2月15日,复习
查看>>
线性布局Row和Column
查看>>
关键路径(代码讲解)- 数据结构和算法68
查看>>
if语句三种格式
查看>>
CentOS 7 单用户模式修改root密码
查看>>
Linux DHCP原理
查看>>
Thread.currentThread()和this的区别——《Java多线程编程核心技术》
查看>>
mysql 5.1 Data 文件夹路径
查看>>
delegate的参数也可泛型【简单源码示例】
查看>>
Mycat SqlServer 技术栈 实现 主从分离
查看>>
为何要学编程?如何学编程?用什么语言最好?有什么好书?
查看>>
剑指Offer的学习笔记(C#篇)-- 反转链表
查看>>
Android精品资源整理2018年3月21日 星期三
查看>>
查询当前库中包含某个字段并且包含自增的表
查看>>
SSH整合报错:No result defined for action and result input
查看>>
数据结构和算法之栈排序
查看>>
HBASE的预分区设计
查看>>
大道至简第三章读后感
查看>>
java中JDK、JRE、JVM的关系
查看>>
mybatis面试常见题
查看>>