阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MongoDB集群上副本集(replica set)建立

628次阅读
没有评论

共计 3788 个字符,预计需要花费 10 分钟才能阅读完成。

1 副本集的配置
在单机上成功运行 MongoDB 后,要使用副本集来创建 Mongodb 集群,需要先关闭 mongod 守护进程,然后:

mongod –replSet setname –fork

来使用自己设置的副本集的名字 setname 并启动 mongodb。注意,–fork 可以不用,它的意义是让 mongod 在后台执行,以方便在 shell 中运行别的程序。

如果要在配置文件中使用这些选项,可以在配置文件 mongo.conf 中加入

replSet=setname
fork=true
oplogSize=1024 #日志文件大小,兆 (M) 为单位。mongod 启动时会创建相应大小的文件,如果设定太大会报磁盘空间不足的错误

然后使用 mongod -f mongo.conf 来启动进程

其他选项参见 http://docs.mongodb.org/manual/reference/program/mongod/#cli-mongod-replica-set

2. 启动和增加节点
在各个节点上使用了 1. 中的配置启动后,有两种方法来建立副本集的连接:

1)初始化副本集,增加节点配置
用客户端登陆进入 mongo 使用

rs.initiate()

初始化副本集,等待一段时间(主要是创建日志文件 oplog)后,看到提示符显示 setname:PRIMARY> 也就是成功了,然后:

rs.config()

可以查看副本集的配置状态,比如:

{
        “_id” : “clover”,
        “version” : 5,
        “members” : [
                {
                        “_id” : 0,
                        “host” : “host1:27017”,
                        “arbiterOnly” : false,
                        “buildIndexes” : true,
                        “hidden” : false,
                        “priority” : 1,
                        “tags” : {

                        },
                        “slaveDelay” : 0,
                        “votes” : 1
                }
        ] …

目前只有一个主节点(primary),在确保可以访问另外两个节点的 mongo 服务的情况下,在本机的 mongo shell 中输入:

rs.add(“hostname:port”)

来增加节点,成功后使用:

[html] view plain copy print?rs.status() 

rs.status()来查看副本状态。

2)使用集群配置文档来创建副本集

这个方法我没有验证,如果要利用配置文档,在进入 mongod shell 之后,先要创建一个文档:

config = {
 “_id”  : “setname”,
 “members” : [
  {“_id” : 0, “host” : “host1:port”},
  {“_id” : 1, “host” : “host2:port”},
  {“_id” : 2, “host” : “host3:port”},
  …
 ]
}

然后使用这个文档来启动副本集:

rs.initiate(config)

使用这种方法必须要用 mongo shell 来先创建配置文档,而不能使用配置文件。

3. 测试副本集
首先,使用

rs.isMaster()

得到:

{
        “setName” : “clover”,
        “setVersion” : 7,
        “ismaster” : true,
        “secondary” : false,
        “hosts” : [
                “host1:27017”,
                “host2:27017”,
                “host3:27017”
        ],
        “primary” : “host1:27017”,
        “me” : “host1:27017”,
        “electionId” : ObjectId(“5535c57b872d670c6331e5bf”),
        “maxBsonObjectSize” : 16777216,
        “maxMessageSizeBytes” : 48000000,
        “maxWriteBatchSize” : 1000,
        “localTime” : ISODate(“2015-04-21T05:01:31.370Z”),
        “maxWireVersion” : 3,
        “minWireVersion” : 0,
        “ok” : 1
}

这样来查看主节点和副本集的状态,值得一提的是,备份节点(secondary)如果设置属性 hidden 为 0,则 rs.isMaster()将不能观察到此节点,例如下面的代码:

[html] view plain copy print?cfg=rs.config() #获取当前的配置 
cfg.members[2].priority=0 #让_id 为 2 的节点优先级降为 0 
cfg.members[2].hidden=1 #设置此节点隐藏,仅当其优先级为 0 时有效 
rs.reconfig(cfg) #应用配置 

cfg=rs.config() #获取当前的配置
cfg.members[2].priority=0 #让_id 为 2 的节点优先级降为 0
cfg.members[2].hidden=1 #设置此节点隐藏,仅当其优先级为 0 时有效
rs.reconfig(cfg) #应用配置将_id 为 2 的节点设为隐藏,使得其状态不被 rs.isMaster 看到,但它可以被 rs.status() 看到。

接着,在 mongo shell 插入一个文档:

for(i=0;i<1000;i++){test.coll.insert({count:i})}

db.coll.count() #测试插入文档是否成功

1000

然后检查备份节点上的情况:

new Mongo(“host2:27017”)
db.coll.count()
1000

说明在 host2 上的数据库也更新了。

然后,尝试将 host1 上的 mongod 进程宕掉,这种情况在实际生产中可能出现,查看 host2 和 host3 的情况:

在 host1 的 bash 上:

sudo bin/mongod –shutdown
killing process with pid: 15910

然后登陆 host2 上的 mongo shell,发现提示符已经变为:setname>primary 表示 host2 已经变为主节点,在 host2 上 db.coll.count()得到 1000,表示备份的数据还在。

重新使用之前的集群配置文件来启动 mongod -f mongo.conf,发现提示符为 setname:SECONDARY> 表示其变为备份节点,在 host2 上用 rs.isMaster()测试显示:

  “setName” : “clover”,
        “setVersion” : 9,
        “ismaster” : true,
        “secondary” : false,
        “hosts” : [
                “host1:27017”,
                “host2:27017”
        ],
        “passives” : [
                “host3:27017”
        ],
        “primary” : “host2:27017”,
        “me” : “zookeeper2:27017”,<

副本集重新变为 3 台主机。host2 仍为主节点,host3 因为设置优先级为 0 变为消极(passives)状态,它不会被选为主节点。

更多 MongoDB 相关教程见以下内容

CentOS 编译安装 MongoDB 与 mongoDB 的 php 扩展 http://www.linuxidc.com/Linux/2012-02/53833.htm

CentOS 6 使用 yum 安装 MongoDB 及服务器端配置 http://www.linuxidc.com/Linux/2012-08/68196.htm

Ubuntu 13.04 下安装 MongoDB2.4.3 http://www.linuxidc.com/Linux/2013-05/84227.htm

MongoDB 入门必读(概念与实战并重) http://www.linuxidc.com/Linux/2013-07/87105.htm

Ubunu 14.04 下 MongoDB 的安装指南 http://www.linuxidc.com/Linux/2014-08/105364.htm

《MongoDB 权威指南》(MongoDB: The Definitive Guide)英文文字版[PDF] http://www.linuxidc.com/Linux/2012-07/66735.htm

Nagios 监控 MongoDB 分片集群服务实战 http://www.linuxidc.com/Linux/2014-10/107826.htm

基于 CentOS 6.5 操作系统搭建 MongoDB 服务 http://www.linuxidc.com/Linux/2014-11/108900.htm

MongoDB 的详细介绍:请点这里
MongoDB 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-04/130013.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计3788字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7994630
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛 NAS-2:飞牛配置 RAID 磁盘阵列 前言 大家好,我是星哥之前星哥写了《星哥带你玩飞牛 ...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...