场景描述

MongoDB副本集中有一台Secondary节点出现RECOVERING的状态

状态如下:



    arps:RECOVERING> rs.status()
{
"set" : "arps",
"date" : ISODate("2017-12-22T02:31:58.803Z"),
"myState" : 3,
"members" : [
{
"_id" : 0,
"name" : "172.17.4.37:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 7579839,
"optime" : Timestamp(1513909913, 3),
"optimeDate" : ISODate("2017-12-22T02:31:53Z"),
"lastHeartbeat" : ISODate("2017-12-22T02:31:58.019Z"),
"lastHeartbeatRecv" : ISODate("2017-12-22T02:31:57.750Z"),
"pingMs" : 0,
"syncingTo" : "172.17.4.38:27017",
"configVersion" : 1
},
{
"_id" : 1,
"name" : "172.17.4.38:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 7579913,
"optime" : Timestamp(1513909913, 3),
"optimeDate" : ISODate("2017-12-22T02:31:53Z"),
"lastHeartbeat" : ISODate("2017-12-22T02:31:58.051Z"),
"lastHeartbeatRecv" : ISODate("2017-12-22T02:31:58.018Z"),
"pingMs" : 0,
"electionTime" : Timestamp(1506330005, 1),
"electionDate" : ISODate("2017-09-25T09:00:05Z"),
"configVersion" : 1
},
{
"_id" : 2,
"name" : "172.17.4.39:27017",
"health" : 1,
"state" : 3,
"stateStr" : "RECOVERING",//RECOVERING状态,第三个结点出现问题。
"uptime" : 7580364,
"optime" : Timestamp(1473614444, 2),
"optimeDate" : ISODate("2016-09-11T17:20:44Z"),
"configVersion" : 1,
"self" : true
}
],
"ok" : 1
}

恢复思路:

1.关闭MongoDB故障节点的数据库服务,移除数据目录,启动MongoDB服务,开启自动同步机制,恢复secondary节点。

2.找到另外一个secondary数据节点的快照,关闭写操作。在数据不变化的情况下,获得一致性的备份快照,拷贝至故障节点中,启动MongoDB服务,应用oplog日志。恢复secondary节点。

由于环境数据量小,使用第一种方案。

1.mongodb数据库服务关闭

arps:RECOVERING> use admin
switched to db admin
arps:RECOVERING> db.shutdownServer()

2.删除或者移走数据目录

[root@mongodb data]# mv /opt/data/mongodb /opt/data/mongodb20171222
[root@mongodb data]# mkdir /opt/data/mongodb
[root@mongodb data]# mkdir /opt/data/mongodb/log

3.启动数据库服务且查看状态

[root@mongodb data]#/opt/software/mongodb-linux-x86_64-3.0.1/bin/mongod -f /opt/software/mongodb-linux-x86_64-3.0.1/bin/mongodb.conf

 arps:STARTUP2> rs.status()
{
"set" : "arps",
"date" : ISODate("2017-12-22T02:46:52.288Z"),
"myState" : 5,
"syncingTo" : "172.17.4.38:27017",
"members" : [
{
"_id" : 0,
"name" : "172.17.4.37:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 25,
"optime" : Timestamp(1513910813, 3),
"optimeDate" : ISODate("2017-12-22T02:46:53Z"),
"lastHeartbeat" : ISODate("2017-12-22T02:46:51.122Z"),
"lastHeartbeatRecv" : ISODate("2017-12-22T02:46:51.114Z"),
"pingMs" : 0,
"syncingTo" : "172.17.4.38:27017",
"configVersion" : 1
},
{
"_id" : 1,
"name" : "172.17.4.38:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 25,
"optime" : Timestamp(1513910813, 3),
"optimeDate" : ISODate("2017-12-22T02:46:53Z"),
"lastHeartbeat" : ISODate("2017-12-22T02:46:51.127Z"),
"lastHeartbeatRecv" : ISODate("2017-12-22T02:46:51.303Z"),
"pingMs" : 0,
"electionTime" : Timestamp(1506330005, 1),
"electionDate" : ISODate("2017-09-25T09:00:05Z"),
"configVersion" : 1
},
{
"_id" : 2,
"name" : "172.17.4.39:27017",
"health" : 1,
"state" : 5,
"stateStr" : "STARTUP2",//STARTUP2的状态为:新加入的节点做数据初始化
"uptime" : 27,
"optime" : Timestamp(0, 0),
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
"syncingTo" : "172.17.4.38:27017",
"configVersion" : 1,
"self" : true
}
],
"ok" : 1
}

关于副本集的状态,文献参考如下:https://docs.mongodb.com/v3.0/reference/replica-states/index.html

过了半个小时之后,数据恢复完成,状态日志如下:



    .....................
2017-12-22T11:27:02.474+0800 I INDEX [rsSync] building index using bulk method
2017-12-22T11:27:02.475+0800 I INDEX [rsSync] build index done. scanned 75 total records. 0 secs
2017-12-22T11:27:02.477+0800 I REPL [rsSync] initial sync data copy, starting syncup
2017-12-22T11:27:02.798+0800 I REPL [rsSync] oplog sync 1 of 3
2017-12-22T11:27:03.145+0800 I REPL [ReplicationExecutor] syncing from: 172.17.4.38:27017
2017-12-22T11:27:03.288+0800 I REPL [rsSync] oplog sync 2 of 3
2017-12-22T11:27:03.289+0800 I REPL [rsSync] initial sync building indexes
2017-12-22T11:27:03.289+0800 I REPL [rsSync] initial sync cloning indexes for : demo
2017-12-22T11:27:03.300+0800 I REPL [SyncSourceFeedback] replset setting syncSourceFeedback to 172.17.4.38:27017
2017-12-22T11:27:03.390+0800 I STORAGE [rsSync] copying indexes for: { name: "ACT_AUTH_LOG", options: {} }
2017-12-22T11:27:03.391+0800 I STORAGE [rsSync] copying indexes for: { name: "SYSTEM_DATA_LOG", options: {} }
2017-12-22T11:27:03.392+0800 I STORAGE [rsSync] copying indexes for: { name: "SYSTEM_ERROR_LOG", options: {} }
2017-12-22T11:27:03.392+0800 I STORAGE [rsSync] copying indexes for: { name: "SYSTEM_EXTERNAL_PACKET", options: {} }
2017-12-22T11:27:03.393+0800 I STORAGE [rsSync] copying indexes for: { name: "SYSTEM_EXTERNAL_PACKET_LOG", options: {} }
2017-12-22T11:27:03.393+0800 I STORAGE [rsSync] copying indexes for: { name: "SYSTEM_JPUSH_LOG", options: {} }
2017-12-22T11:27:03.394+0800 I STORAGE [rsSync] copying indexes for: { name: "SYSTEM_MESSAGE_LOG", options: {} }
2017-12-22T11:27:03.395+0800 I STORAGE [rsSync] copying indexes for: { name: "SYSTEM_REQUEST_LOG", options: {} }
2017-12-22T11:27:03.395+0800 I STORAGE [rsSync] copying indexes for: { name: "SYSTEM_RETRY_MESSAGE", options: {} }
2017-12-22T11:27:03.395+0800 I STORAGE [rsSync] copying indexes for: { name: "SYSTEM_RUN_LOG", options: { capped: true, size: 536870912 } }
2017-12-22T11:27:03.396+0800 I STORAGE [rsSync] copying indexes for: { name: "SYSTEM_SMSEMAIL_LOG", options: {} }
2017-12-22T11:27:03.396+0800 I STORAGE [rsSync] copying indexes for: { name: "SYSTEM_TIMEOUT_LOG", options: {} }
2017-12-22T11:27:03.397+0800 I REPL [rsSync] oplog sync 3 of 3
2017-12-22T11:27:03.406+0800 I REPL [rsSync] initial sync finishing up
2017-12-22T11:27:03.406+0800 I REPL [rsSync] replSet set minValid=5a3c7b93:3
2017-12-22T11:27:03.429+0800 I REPL [rsSync] initial sync done
2017-12-22T11:27:03.474+0800 I REPL [ReplicationExecutor] transition to RECOVERING
2017-12-22T11:27:03.476+0800 I REPL [ReplicationExecutor] transition to SECONDARY
.................

节点恢复的状态,如下:



    arps:SECONDARY> rs.status()
...............
{
"_id" : 2,
"name" : "172.17.4.39:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",//恢复完成
"uptime" : 2500,
"optime" : Timestamp(1513913295, 3),
"optimeDate" : ISODate("2017-12-22T03:28:15Z"),
"syncingTo" : "172.17.4.38:27017",
"configVersion" : 1,
"self" : true
}
.................

MongoDB副本集--Secondary节点实例恢复的更多相关文章

  1. MongoDB副本集搭建及备份恢复

    一.MongoDB副本集(repl set)介绍 早起版本使用master-slave,一主一从和MySQL类似,但slave在此架构中为只读,当主库宕机后,从库不能自动切换为主: 目前已经淘汰了ma ...

  2. Mongodb 副本集的节点详细操作

    副本集操作 官方文档:https://docs.mongodb.com/v3.2/reference/method/js-replication/ 1 rs.add(){ _id: <int&g ...

  3. mongodb副本集仲裁节点搭建

    服务器准备: 主节点192.168.100.106 从节点192.168.100.107 仲裁节点192.168.100.108 三台服务器: 关闭防火墙 service iptables stop ...

  4. MongoDB副本集学习(三):性能和优化相关

    Read Preferences/读写分离 有时候为了考虑应用程序的性能或响应性,为了提高读取操作的吞吐率,一个常见的措施就是进行读写分离,MongoDB副本集对读写分离的支持是通过Read Pref ...

  5. 创建mongodb副本集操作实例

    一:概念 相关概念及图片引用自这里 mongodb副本集: 副本集是一组服务器,其中一个是主服务器,用于处理客户请求:还有多个备份服务器,用于保存主服务器的数据副本.如果主服务器崩溃了,备份服务器自动 ...

  6. mongodb副本集(选举,节点设置,读写分离设置)

    1.相对于传统主从模式的优势 传统的主从模式,需要手工指定集群中的Master.如果Master发生故障,一般都是人工介入,指定新的Master.这个过程对于应用一般不是透明的,往往伴随着应用重新修改 ...

  7. nodejs+mongoose操作mongodb副本集实例

    继上一篇设置mongodb副本集之后,开始使用nodejs访问mongodb副本集: 1:创建项目     express 项目名称 2:npm install mongoose    安装mongo ...

  8. MongoDB副本集功能及节点属性梳理

    副本集的主要功能 副本集是MongoDB高可用的基础,其主要作用 归纳为以下几点: (1)高可用,防止设备(服务器.网络)故障.提供自动FailOver功能. (2)无需配置高可用性虚拟节点:无论是S ...

  9. MongoDB 副本集的原理、搭建、应用

    概念: 在了解了这篇文章之后,可以进行该篇文章的说明和测试.MongoDB 副本集(Replica Set)是有自动故障恢复功能的主从集群,有一个Primary节点和一个或多个Secondary节点组 ...

随机推荐

  1. wpf file embeded resource is readonly,Copy always will copy the file and its folder to the bin folder

    Wpf file embeded resource will compile the file into the assembly and it will be readonly and can no ...

  2. 科技风商务项目管理PPT模板

    模板来源:http://ppt.dede58.com/peixunyanjiang/26267.html

  3. 易优CMS:【小白学标签】之empty的基础用法

    [基础用法] 名称:empty 功能:判断某个变量是否为空,可以嵌套到任何标签里面使用,比如:channel.type等 语法: {eyou:empty name='$eyou.field.seo_t ...

  4. 环信即时通讯在工程中的安装——Nusen_Liu

    即时通讯-环信 准备 1.下载SDK http://www.easemob.com/download 2.证书下载上传 后期发送消息 需要推送发送的内容 http://docs.easemob.com ...

  5. 剑指offer 17:合并两个有序链表

    题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则.   解题思路 链表基础操作考察,难点在于对于输入数据的把握,一定要考虑输入数据的全面性 1.出现 ...

  6. MySQL基础之表的管理

    添加和删除字段操作 添加字段 alter table tbl_name add 字段名称 字段属性 [完整性约束条件] [first|after 字段名称之后]; 删除字段 alter table t ...

  7. Redis—负载状态

    服务端启动与客户端连接 # 服务端启动# 客户端连接:host:远程redis服务器IP.port:远程redis服务端口.password:远程redis服务密码(无密码就不需要-a参数了) [ro ...

  8. postman---postman文件夹介绍以及批量执行用例

    我们在做测试的过程中,都会多次请求接口,都会把接口保存下来,方便下次直接请求,节省时间不用每次都重新输入,我们一起看下Postman如何保存接口会话 保存请求作用 Postman可以将各个请求组合保存 ...

  9. Kettle 执行SQL脚本

    以下操作都在5.0.1版本下进行开发,其余版本可以进行自动比对 本文将对Kettle5中常用步骤字段选择(又名选择/改名值,英文原名:Select Values)进行详细解释.这个步骤的功能非常强大, ...

  10. itest(爱测试) 3.5.0 发布,开源BUG 跟踪管理& 敏捷测试管理软件

    v3.5.0 下载地址 :itest下载 itest 简介:查看简介 V3.5.0 增加了 9个功能增强,和17个BUG修复 ,详情如下所述. 9个功能增强 : (1)增加xmind(思维导图) 转E ...