MongoDB副本集--Secondary节点恢复实例

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: MongoDB副本集中有一台Secondary节点出现RECOVERING的状态 点击(此处)折叠或打开 arps:RECOVERING> rs.
MongoDB副本集中有一台Secondary节点出现RECOVERING的状态

点击(此处)折叠或打开

  1. arps:RECOVERING> rs.status()rs.status()
  2. {
  3.         "set" : "arps",
  4.         "date" : ISODate("2017-12-22T02:31:58.803Z"),
  5.         "myState" : 3,
  6.         "members" : [
  7.                 {
  8.                         "_id" : 0,
  9.                         "name" : "172.17.4.37:27017",
  10.                         "health" : 1,
  11.                         "state" : 2,
  12.                         "stateStr" : "SECONDARY",
  13.                         "uptime" : 7579839,
  14.                         "optime" : Timestamp(1513909913, 3),
  15.                         "optimeDate" : ISODate("2017-12-22T02:31:53Z"),
  16.                         "lastHeartbeat" : ISODate("2017-12-22T02:31:58.019Z"),
  17.                         "lastHeartbeatRecv" : ISODate("2017-12-22T02:31:57.750Z"),
  18.                         "pingMs" : 0,
  19.                         "syncingTo" : "172.17.4.38:27017",
  20.                         "configVersion" : 1
  21.                 },
  22.                 {
  23.                         "_id" : 1,
  24.                         "name" : "172.17.4.38:27017",
  25.                         "health" : 1,
  26.                         "state" : 1,
  27.                         "stateStr" : "PRIMARY",
  28.                         "uptime" : 7579913,
  29.                         "optime" : Timestamp(1513909913, 3),
  30.                         "optimeDate" : ISODate("2017-12-22T02:31:53Z"),
  31.                         "lastHeartbeat" : ISODate("2017-12-22T02:31:58.051Z"),
  32.                         "lastHeartbeatRecv" : ISODate("2017-12-22T02:31:58.018Z"),
  33.                         "pingMs" : 0,
  34.                         "electionTime" : Timestamp(1506330005, 1),
  35.                         "electionDate" : ISODate("2017-09-25T09:00:05Z"),
  36.                         "configVersion" : 1
  37.                 },
  38.                 {
  39.                         "_id" : 2,
  40.                         "name" : "172.17.4.39:27017",
  41.                         "health" : 1,
  42.                         "state" : 3,
  43.                         "stateStr" : "RECOVERING",//RECOVERING状态
  44.                         "uptime" : 7580364,
  45.                         "optime" : Timestamp(1473614444, 2),
  46.                         "optimeDate" : ISODate("2016-09-11T17:20:44Z"),
  47.                         "configVersion" : 1,
  48.                         "self" : true
  49.                 }
  50.         ],
  51.         "ok" : 1
  52. }

恢复思路:
1.关闭MongoDB故障节点的数据库服务,移除数据目录,启动MongoDB服务,开启自动同步机制,恢复secondary节点。
2.找到另外一个secondary数据节点的快照,关闭写操作。在数据不变化的情况下,获得一致性的备份快照,拷贝至故障节点中,启动MongoDB服务,应用oplog日志。恢复secondary节点。

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

1.mongodb数据库服务关闭

点击(此处)折叠或打开

  1. arps:RECOVERING> use admin
  2. switched to db admin
  3. arps:RECOVERING> db.shutdownServer()
2.删除或者移走数据目录

点击(此处)折叠或打开

  1. [root@mongodb data]# mv /opt/data/mongodb /opt/data/mongodb20171222
  2. [root@mongodb data]# mkdir /opt/data/mongodb
  3. [root@mongodb data]# mkdir /opt/data/mongodb/log
3.启动数据库服务且查看状态

点击(此处)折叠或打开

  1. [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
  2. arps:STARTUP2> rs.status()
  3. {
  4.         "set" : "arps",
  5.         "date" : ISODate("2017-12-22T02:46:52.288Z"),
  6.         "myState" : 5,
  7.         "syncingTo" : "172.17.4.38:27017",
  8.         "members" : [
  9.                 {
  10.                         "_id" : 0,
  11.                         "name" : "172.17.4.37:27017",
  12.                         "health" : 1,
  13.                         "state" : 2,
  14.                         "stateStr" : "SECONDARY",
  15.                         "uptime" : 25,
  16.                         "optime" : Timestamp(1513910813, 3),
  17.                         "optimeDate" : ISODate("2017-12-22T02:46:53Z"),
  18.                         "lastHeartbeat" : ISODate("2017-12-22T02:46:51.122Z"),
  19.                         "lastHeartbeatRecv" : ISODate("2017-12-22T02:46:51.114Z"),
  20.                         "pingMs" : 0,
  21.                         "syncingTo" : "172.17.4.38:27017",
  22.                         "configVersion" : 1
  23.                 },
  24.                 {
  25.                         "_id" : 1,
  26.                         "name" : "172.17.4.38:27017",
  27.                         "health" : 1,
  28.                         "state" : 1,
  29.                         "stateStr" : "PRIMARY",
  30.                         "uptime" : 25,
  31.                         "optime" : Timestamp(1513910813, 3),
  32.                         "optimeDate" : ISODate("2017-12-22T02:46:53Z"),
  33.                         "lastHeartbeat" : ISODate("2017-12-22T02:46:51.127Z"),
  34.                         "lastHeartbeatRecv" : ISODate("2017-12-22T02:46:51.303Z"),
  35.                         "pingMs" : 0,
  36.                         "electionTime" : Timestamp(1506330005, 1),
  37.                         "electionDate" : ISODate("2017-09-25T09:00:05Z"),
  38.                         "configVersion" : 1
  39.                 },
  40.                 {
  41.                         "_id" : 2,
  42.                         "name" : "172.17.4.39:27017",
  43.                         "health" : 1,
  44.                         "state" : 5,
  45.                         "stateStr" : "STARTUP2",//STARTUP2的状态为:新加入的节点做数据初始化
  46.                         "uptime" : 27,
  47.                         "optime" : Timestamp(0, 0),
  48.                         "optimeDate" : ISODate("1970-01-01T00:00:00Z"),
  49.                         "syncingTo" : "172.17.4.38:27017",
  50.                         "configVersion" : 1,
  51.                         "self" : true
  52.                 }
  53.         ],
  54.         "ok" : 1
  55. }
关于副本集的状态,文献参考如下:https://docs.mongodb.com/v3.0/reference/replica-states/index.html

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

点击(此处)折叠或打开

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

节点恢复的状态,如下:

点击(此处)折叠或打开

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





相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
3月前
|
运维 监控 NoSQL
【MongoDB 复制集秘籍】Secondary 同步慢怎么办?深度解析与实战指南,让你的数据库飞速同步!
【8月更文挑战第24天】本文通过一个具体案例探讨了MongoDB复制集中Secondary成员同步缓慢的问题。现象表现为数据延迟增加,影响业务运行。经分析,可能的原因包括硬件资源不足、网络状况不佳、复制日志错误等。解决策略涵盖优化硬件(如增加内存、升级CPU)、调整网络配置以减少延迟以及优化MongoDB配置(例如调整`oplogSize`、启用压缩)。通过这些方法可有效提升同步效率,保证系统的稳定性和性能。
91 4
|
27天前
|
存储 NoSQL MongoDB
MongoDB 复制(副本集)
10月更文挑战第17天
34 2
MongoDB 复制(副本集)
|
2月前
|
存储 NoSQL Shell
MongoDB复制(副本集)总结
这篇文章是关于MongoDB副本集的总结,包括复制原理、设置副本集、案例分析等内容。
41 1
|
3月前
|
人工智能 NoSQL Go
Go MongoDB Driver 实例
Go MongoDB Driver 实例
23 1
|
3月前
|
C# 开发者 Windows
全面指南:WPF无障碍设计从入门到精通——让每一个用户都能无障碍地享受你的应用,从自动化属性到焦点导航的最佳实践
【8月更文挑战第31天】为了确保Windows Presentation Foundation (WPF) 应用程序对所有用户都具备无障碍性,开发者需关注无障碍设计原则。这不仅是法律要求,更是社会责任,旨在让技术更人性化,惠及包括视障、听障及行动受限等用户群体。
81 0
|
3月前
|
NoSQL MongoDB Windows
MongoDB 读写分离——Windows MongoDB 副本集配置
MongoDB 读写分离——Windows MongoDB 副本集配置
66 0
|
6月前
|
监控 NoSQL MongoDB
【MongoDB 专栏】MongoDB 的副本集故障转移与恢复
【5月更文挑战第11天】MongoDB的副本集是高可用性关键,提供数据冗余和自动故障转移。由主节点和从节点组成,主节点处理写操作,从节点同步数据。当主节点故障,副本集通过选举产生新主节点,确保服务不间断。故障转移涉及节点优先级和数据同步状态的考量。恢复阶段解决数据不一致,重点包括节点部署监控、数据同步策略、选举机制和备份恢复计划。网络延迟和大规模数据可能带来挑战,需优化网络、性能调优和定期演练。随着技术进步,副本集的故障转移与恢复将更高效、智能,保障数据安全,支撑业务系统的稳定运行。
349 3
【MongoDB 专栏】MongoDB 的副本集故障转移与恢复
|
4月前
|
消息中间件 NoSQL 中间件
MongoDB主从结构、仲裁节点
【7月更文挑战第2天】
62 0
|
6月前
|
存储 NoSQL MongoDB
使用mongodb数据库实例
【5月更文挑战第9天】MongoDB中的集合类似关系数据库的表,但不强制模式,允许嵌入式文档以实现更灵活的数据布局。安装MongoDB在Ubuntu上涉及添加源列表和更新,CentOS则需创建配置文件。MongoDB支持备份和恢复,以及全文搜索。其灵活模式和动态模式减少了开发中的复杂性,但并非无模式,大部分数据仍具结构化特点。
153 2
|
5月前
|
存储 监控 NoSQL
MongoDB 副本集:构建可靠的数据备份与高可用性系统
MongoDB 副本集:构建可靠的数据备份与高可用性系统
104 0