陈天

陈天--只求真实的记录

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

MongoDB高可用性方案

Replica set(复制集)是MongoDB推荐的高可用性解决方案。它使用n个(一般为奇数)mongod节点,构建具有数据备份,故障转移以及自动恢复的高可用性方案。

 

Replica set部署(step by step)

本文介绍的是已存在的单点MongoDB扩展为一个高可用性的Replica set部署。假设已存在mongod实例节点通过单独文件配置启动,配置项如下

  • port=18888
  • dbpath=E:\mongodb\data
  • logpath=E:\mongodb\log\mongo.log
  • logappend=true
  • directoryperdb=true
  • journal=true
  • serviceName=MongoDB_Test
  • serviceDisplayName=MongoDB for test

1.停止MongoDB_Test服务

2.增加配置项replSet=rs0(复制集名称),重新启动MongoDB_Test服务,使得MongoDB_Test mongod实例成为rs0的一个成员

3. mongo命令登录到MongoDB_Test mongod实例

4.rs.initiate()初始化复制集

5.rs.status()查看复制集合状态

6.分别在两台服务器上新建mongod实例并启动,作为Replica set的另外两个成员。如何安装MongoDB

7.rs.add("<hostname><:port>")新增mongod实例作为Replica set的成员,rs.addArb("<hostname><:port>")新增mongod实例作为Replica set的仲裁节点,它不存储数据。在域环境下,hostname可以为域名或IP;对于没有入域的各个mongod实例节点,hostname为机器名,并且需要在各个节点服务器host文件中配置与服务器IP映射

 成功加入到Replica set后,会自动同步数据到其他的Repilica set成员(时间视数据大小而定)

至此,成功扩展单点MongoDB成为Replica set部署。可通过mongo命令连接任一mongod实例查看Replica set状态

8.模拟插入,修改,删除数据,发现Replica set各成员数据同步

9.停止Replica set任一成员,不影响数据服务,重启后自动从其他成员同步变化的数据,如果是primary成员,则Replica set会选举出另一成员充当primary角色

 

应用程序配置连接

示例

mongodb://ip1:port1,ip2:port2,ip3:port3/?safe=true;maxpoolsize=100

其他配置选项根据实际情况选择

 

注意

  • 数据库写入操作只能由primary角色的mongod实例完成
  • 默认情况下,读取数据也是由primary角色的mongod实例完成
  • 可配置实现由secondary完成数据读取,在并发压力大的情况下实现读写分离

 

相关文章

 

posted on 2013-10-30 17:22  陈天  阅读(1040)  评论(0编辑  收藏  举报