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完成数据读取,在并发压力大的情况下实现读写分离
相关文章