纸上得来终觉浅,绝知此事要躬行。

 

MongoDB 复制集(Replica Set) 配置(Windows 版)

环境

  • 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.ini
F:\replSet\secondary-1\bin> mongod -f ../secondary-1.ini
F:\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

 

posted on 2015-08-06 17:11  JRoger  阅读(1915)  评论(0编辑  收藏  举报

导航