服务器情况:

  现有的单节点 Primary     192.168.126.9:27017

  新增的节点    Secondry  192.168.126.8:27017

   仲裁节点      ARBITER   192.168.126.8:27018

    mongo 版本 3.2.4

1.停止单节点Primary的Mongo服务

 > use admin;
switched to db admin
> db.shutdownServer()

2.重新启动Primary节点,使用--replSet的选项加上新复制集的名字 repl1

 /usr/local/mongodb/bin/mongod -dbpath /sdb1/mongodb/data --fork --port 27017 --logpath /sdb1/mongodb/log/mongo.log --replSet repl1 --logappend 

3.连接Primary数据库

4. 创建复制集配置信息对象

 config = { _id:"repl1", members:[
{_id:0,host:"192.168.126.9:27017"}
]
}

5.初始化复制集并查看复制集的运行状态

 > rs.initiate(config)
{ "ok" : 1 } repl1:SECONDARY> rs.status()
{
"set" : "repl1",
"date" : ISODate("2016-06-23T16:05:10.228Z"),
"myState" : 1,
"term" : NumberLong(1),
"heartbeatIntervalMillis" : NumberLong(2000),
"members" : [
{
"_id" : 0,
"name" : "192.168.126.9:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 3524,
"optime" : {
"ts" : Timestamp(1466697870, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2016-06-23T16:04:30Z"),
"infoMessage" : "could not find member to sync from",
"electionTime" : Timestamp(1466697868, 2),
"electionDate" : ISODate("2016-06-23T16:04:28Z"),
"configVersion" : 1,
"self" : true
}
],
"ok" : 1

6.启动 Secondry Mongo节点服务

root@linux-mongo2:/home/ubuntu# /usr/local/mongodb/bin/mongod -dbpath=/sdb1/mongodb/data --fork --port 27017 --logpath=/sdb1/mongodb/log/mongo.log --logappend --replSet repl1
about to fork child process, waiting until server is ready for connections. forked process: 2848 child process started successfully, parent exiting

7.在Primary节点将 Secondry Mongo节点添加到复制集里

repl1:PRIMARY> rs.add("192.168.126.8:27017")
{ "ok" : 1 }

8.启动 ARBITER Mongo仲裁节点

root@linux-mongo2:/home/ubuntu# mkdir -p /sdb1/mongodb/arb
root@linux-mongo2:/home/ubuntu# /usr/local/mongodb/bin/mongod -dbpath=/sdb1/mongodb/arb --fork --port 27018 --logpath=/sdb1/mongodb/arb/mongo.log --logappend --relpSet replSet repl1
Error parsing command line: unrecognised option '--relpSet'
try '/usr/local/mongodb/bin/mongod --help' for more information
root@linux-mongo2:/home/ubuntu# /usr/local/mongodb/bin/mongod -dbpath=/sdb1/mongodb/arb --fork --port 27018 --logpath=/sdb1/mongodb/arb/mongo.log --logappend -replSet repl1
about to fork child process, waiting until server is ready for connections.
forked process: 3229
child process started successfully, parent exiting

9.在主节点将仲裁节点添加在复制集中,并查看最终的复制集状态

 repl1:PRIMARY> rs.addArb("192.168.126.8:27018")
{ "ok" : 1 } repl1:PRIMARY> rs.status()
{
"set" : "repl1",
"date" : ISODate("2016-06-23T16:27:55.358Z"),
"myState" : 1,
"term" : NumberLong(1),
"heartbeatIntervalMillis" : NumberLong(2000),
"members" : [
{
"_id" : 0,
"name" : "192.168.126.9:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 4889,
"optime" : {
"ts" : Timestamp(1466699268, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2016-06-23T16:27:48Z"),
"electionTime" : Timestamp(1466697868, 2),
"electionDate" : ISODate("2016-06-23T16:04:28Z"),
"configVersion" : 3,
"self" : true
},
{
"_id" : 1,
"name" : "192.168.126.8:27017",
"health" : 1,
"state" : 5,
"stateStr" : "STARTUP2",
"uptime" : 1005,
"optime" : {
"ts" : Timestamp(0, 0),
"t" : NumberLong(-1)
},
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
"lastHeartbeat" : ISODate("2016-06-23T16:27:54.499Z"),
"lastHeartbeatRecv" : ISODate("2016-06-23T16:27:54.561Z"),
"pingMs" : NumberLong(0),
"syncingTo" : "192.168.126.9:27017",
"configVersion" : 3
},
{
"_id" : 2,
"name" : "192.168.126.8:27018",
"health" : 1,
"state" : 7,
"stateStr" : "ARBITER",
"uptime" : 6,
"lastHeartbeat" : ISODate("2016-06-23T16:27:54.499Z"),
"lastHeartbeatRecv" : ISODate("2016-06-23T16:27:53.632Z"),
"pingMs" : NumberLong(1),
"configVersion" : 3
}
],
"ok" : 1
}

注意: 这里副本集 192.168.126.8 的状态是 "STARTUP2" ,是由于Primary库的数据很大,导致一直处于初始化的同步数据阶段。 

详细说明如下

"_id" :  #集群中节点编号
"name" : #成员服务器名称及端口
"health" : #表示成员中的健康状态(0:down;1:up)
"state" : #为1~11,表示成员的当前状态
"stateStr" : #描述该成员是主库(PRIMARY)还是备库(SECONDARY)
"uptime" : #该成员在线时间(秒)
"optime" : #成员最后一次应用日志(oplog)的信息
"optimeDate" : #成员最后一次应用日志(oplog)的时间
"electionTime" : #当前primary从操作日志中选举信息
"electionDate" : #当前primary被选定为primary的日期
"configVersion" : #mongodb版本
"self" : #为true 表示当前节点 其中 state 复制集状态:
复制集状态:
STARTUP:刚加入到复制集中,配置还未加载
STARTUP2:配置已加载完,初始化状态
RECOVERING:正在恢复,不适用读
ARBITER: 仲裁者
DOWN:节点不可到达
UNKNOWN:未获取其他节点状态而不知是什么状态,一般发生在只有两个成员的架构,脑裂
REMOVED:移除复制集
ROLLBACK:数据回滚,在回滚结束时,转移到RECOVERING或SECONDARY状态
FATAL:出错。查看日志grep "replSet FATAL"找出错原因,重新做同步
PRIMARY:主节点
SECONDARY:备份节点

MongoDB复制集之将现有的单节点服务器转换为复制集的更多相关文章

  1. Kafka 单节点多Kafka Broker集群

    Kafka 单节点多Kafka Broker集群 接前一篇文章,今天搭建一下单节点多Kafka Broker集群环境. 配置与启动服务 由于是在一个节点上启动多个 Kafka Broker实例,所以我 ...

  2. windows单节点下安装es集群

    linux下的es的tar包,拖到windows下,配置后,启动bin目录下的bat文件,也是可以正常运行的. 从linux下拷的tar包,需要修改虚拟机的内存elasticsearch.in.bat ...

  3. KingbaseES V8R6集群维护案例之--单实例数据迁移到集群案例

    案例说明: 生产环境是单实例,测试环境是集群,现需要将生产环境的数据迁移到集群中运行,本文档详细介绍了从单实例环境恢复数据到集群环境的操作步骤,可以作为生产环境迁移数据的参考. 适用版本: Kingb ...

  4. redhat6.5 redis单节点多实例3A集群搭建

    在进行搭建redis3M 集群之前,首先要明白如何在单节点上完成redis的搭建. 单节点单实例搭建可以参看这个网:https://www.cnblogs.com/butterflies/p/9628 ...

  5. Hadoop单节点启动分布式伪集群

    emm~ 写这篇博客只是手痒,因为开发环境用单节点就够了,生产环境肯定是真实集群,所以这个伪分布式纯属娱乐而已. 配置HDFS1. 安装好一台hadoop,可以参考这篇博客.2. 在hadoop目录下 ...

  6. 将 master 节点服务器从 k8s 集群中移除并重新加入

    背景 1 台 master 加入集群后发现忘了修改主机名,而在 k8s 集群中修改节点主机名非常麻烦,不如将 master 退出集群改名并重新加入集群(前提是用的是高可用集群). 操作步骤 ssh 登 ...

  7. 利用shell脚本[带注释的]部署单节点多实例es集群(docker版)

    文章目录 目录结构 install_docker_es.sh elasticsearch.yml.template 没事写写shell[我自己都不信,如果不是因为工作需要,我才不要写shell],努力 ...

  8. ORACLE RAC集群硬件资源管理与单节点的区别

    硬件资源是由OS kernel管理的,应用软件是不能直接访问硬件的,必须通过OS kernel提供的API接口间接访问,OS kernel 除了要完成用户的请求,还通过进程调度等机制来控制多进程对资源 ...

  9. Hadoop集群搭建:用三台云服务器搭建HA集群(过程记录和分享)

    该文主要记录了自己用云服务器搭建集群的过程,也分享一些自己遇到的问题和解决方法.里面可能提及一些自己的理解,可能不够准确,希望大家能够指正我,谢谢. 1.什么是HA集群 HA :High Availa ...

随机推荐

  1. Delphi XE7 Update1修正列表

    Delphi XE7 Update1修正列表 官方下载地址:http://altd.embarcadero.com/download/radstudio/xe7/delphicbuilder_xe7_ ...

  2. 关于Spring3报org.aopalliance.intercept.MethodInterceptor错的问题解决方法_JavaLeader_新浪博客

    body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...

  3. CodeForces 622D Optimal Number Permutation

    是一个简单构造题. 请观察公式: 绝对值里面的就是 |di-(n-i)|,即di与(n-i)的差值的绝对值. 事实上,对于任何n,我们都可以构造出来每一个i的di与(n-i)的差值为0. 换句话说,就 ...

  4. Apache的Directory配置指南

    使用<Directory>… </Directory>设置指定目录的访问权限,其中可包含:Options.Allow.Override.Order.Allow.Deny.Req ...

  5. 重启机器解决SSL都要输入密码问题

    在Nginx或Apache设置了SSL加密后,发现每次重启服务器后都要输入证书设置的密码,比较麻烦,不然Nginx或Apache无法使用,这时可以用私钥来做这件事.生成一个解密的key文件,替代原来k ...

  6. INC函数

    1.inc(integer) inc(a)等于a:=a+1; 例: i := 100; inc(i); 结果:i等于101 2.inc(integer,integer) inc(a,b)等于a:=a+ ...

  7. LPC2478的外部中断使用

    LPC2478外部中断 2478的外部中断模型如下 也就是说,port0和2支持外部中断,EINT0-2是三个独立管脚的中断,而EINT3则是port0和2的所有中断共同拥有的向量 对于port0和2 ...

  8. 苹果App Store开发者帐户从申请,验证,到发布应用(3)

    应用上架的流程和操作步骤 下面主要介绍一下,上架应用相关流程和相关的操作步骤:   1.登录itunes,https://itunesconnect.apple.com/WebObjects/iTun ...

  9. ubuntu系统内核替换

    此处将内核由高版本替换成低版本.替换前的系统为ubuntu 12.04 kernel 3.8.0. 替换后的内核版本为2.6.35. 首先下载需要替换的内核文件,下载链接:https://www.ke ...

  10. imageX批量安裝windows7

    以一臺電腦爲sample,安裝完成windows os及其全部update,安裝全部常用軟件,打印機驅動,網絡磁碟機等. 關閉安全控制"UAC"和"維護解決方案" ...