博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mongoDB之Replica Set集群安装
阅读量:4112 次
发布时间:2019-05-25

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

Replica Set准确讲不完全是集群,只是一个主从复制的加强版

概念如下:

primary:主节点客户端写操作发生在这里。

secondary:副本,可以负载读操作,通过复制primary的oplog来实现数据同步

arbiter:仲裁节点,作用是当primary宕掉之后从secondarys选择一个变成primary

 

环境准备:

linux系统版本:

 

$ cat /proc/versionLinux version 2.6.32-358.el6.x86_64 (mockbuild@x86-022.build.eng.bos.redhat.com) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC) ) #1 SMP Tue Jan 29 11:47:41 EST 2013

三台服务器,详情如下:

 

 

192.168.38.17   --primary192.168.38.18   --secondary192.168.38.19   --arbiter

mongoDB版本:

 

mongodb-linux-x86_64-2.6.9

安装部署:

1.配置primary.conf,secondary.conf和arbiter.conf

#primary.conf:

 

#primary.confdbpath=/home/admin/data/plogpath=/home/admin/log/primary.logpidfilepath=/home/admin/data/primary.piddirectoryperdb=truelogappend=truereplSet=testrsbind_ip=192.168.38.17port=27017oplogSize=10000fork=truenoprealloc=true

#secondary.conf:

 

 

#secondary.confdbpath=/home/admin/data/slogpath=/home/admin/log/secondary.logpidfilepath=/home/admin/data/secondary.piddirectoryperdb=truelogappend=truereplSet=testrsbind_ip=192.168.38.18port=27017oplogSize=10000fork=truenoprealloc=true

#arbiter.conf:

 

 

dbpath=/home/admin/data/alogpath=/home/admin/log/arbiter.logpidfilepath/home/admin/data/arbiter.piddirectoryperdb=truelogappend=truereplSet=testrsbind_ip=192.168.38.19port=27017oplogSize=10000fork=truenoprealloc=true

上述配置文件最好在每个集群上都放置,这样就能保证配置文件一致

2.启动

 

分别在不同的节点上加载不同的配置

192.168.38.17启动:

 

bin/mongod -f /home/admin/mongodb/primary.conf

192.168.38.18启动:

 

 

bin/mongod -f /home/admin/mongodb/secondary.conf

192.168.38.19启动:

bin/mongod -f /home/admin/mongodb/arbiter.conf

3.登陆系统配置各个节点

bin/mongo 192.168.38.17:27017

执行如下命令:

>use admin>cfg={    "_id": "testrs",    "members": [        {            "_id": 0,            "host": "192.168.38.17:27017",            "priority": 2        },        {            "_id": 1,            "host": "192.168.38.18:27017",            "priority": 1        },        {            "_id": 2,            "host": "192.168.38.19:27017",            "arbiterOnly": true        }    ]}; >rs.initiate(cfg)

此时配置已生效,可以通过命令查看相应的信息

4.查看目前各个节点的状态:

rs.status()

结果如下:

{        "set" : "testrs",        "date" : ISODate("2015-04-03T09:02:29Z"),        "myState" : 1,        "members" : [                {                        "_id" : 0,                        "name" : "192.168.38.17:27017",                        "health" : 1,                        "state" : 1,                        "stateStr" : "PRIMARY",                        "uptime" : 21104,                        "optime" : Timestamp(1428032802, 2),                        "optimeDate" : ISODate("2015-04-03T03:46:42Z"),                        "electionTime" : Timestamp(1428030689, 1),                        "electionDate" : ISODate("2015-04-03T03:11:29Z"),                        "self" : true                },                {                        "_id" : 1,                        "name" : "192.168.38.18:27017",                        "health" : 1,                        "state" : 2,                        "stateStr" : "SECONDARY",                        "uptime" : 21070,                        "optime" : Timestamp(1428032802, 2),                        "optimeDate" : ISODate("2015-04-03T03:46:42Z"),                        "lastHeartbeat" : ISODate("2015-04-03T09:02:27Z"),                        "lastHeartbeatRecv" : ISODate("2015-04-03T09:02:28Z"),                        "pingMs" : 0,                        "syncingTo" : "192.168.38.17:27017"                },                {                        "_id" : 2,                        "name" : "192.168.38.19:27017",                        "health" : 1,                        "state" : 7,                        "stateStr" : "ARBITER",                        "uptime" : 21070,                        "lastHeartbeat" : ISODate("2015-04-03T09:02:29Z"),                        "lastHeartbeatRecv" : ISODate("2015-04-03T09:02:29Z"),                        "pingMs" : 0                }        ],        "ok" : 1}

此时配置已经完成,kill主节点之后查看状态会自动切换

 

PS:默认情况下副本是不会负载读操作的,如果打算让副本负载一部分读操作那么可以参见另外一篇博客

转载地址:http://cmqsi.baihongyu.com/

你可能感兴趣的文章
记CSDN访问量10万+
查看>>
Linux下Oracle数据库账户被锁:the account is locked问题的解决
查看>>
极客算法训练营学习笔记(一)
查看>>
记CSDN访问20万+
查看>>
Windows 环境下Webstorm 2020.3 版本在右下角找不到Git分支切换部件的一种解决方法
查看>>
Electron-Vue项目中遇到fs.rm is not a function问题的解决过程
查看>>
飞机换乘次数最少问题的两种解决方案
查看>>
有向无回路图的理解
查看>>
设计模式中英文汇总分类
查看>>
MFC实现五子棋游戏
查看>>
WPF实现蜘蛛纸牌游戏
查看>>
单例模式
查看>>
工厂方法模式
查看>>
模板方法模式
查看>>
数据结构之队列、栈
查看>>
数据结构之树
查看>>
数据结构之二叉树
查看>>
二叉树非递归遍历算法思悟
查看>>
红黑树算法思悟
查看>>
从山寨Spring中学习Spring IOC原理-自动装配注解
查看>>