MongoDB 使用副本集备份添加新的辅助副本成员

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:

问题描述:

 

在生产环境中,当辅助副本成员的读压力很大时,可通过添加新的辅助副本成员来缓解压力。

为了能实现主副本成员不停机,并减轻主副本成员的压力,可在辅助副本成员上mongodump备份数据;

为了实现新的辅助副本成员的快速恢复,可直接通过以NFS方式挂载辅助副本成员到做备份操作的辅助副本成员上;

为了保证数据的一致性,在mongodump数据的时候使用—oplog参数,mongorestore时使用—oplogReplay参数;

为了满足后期空间的扩容,通过—directoryperdb参数将数据库分目录存储。

 

解决方法:

 

步骤一:将新机器挂为NFS磁盘

 

参见:CentOS Linux上配置NFS网络文件系统以及客户端使用

 

步骤二:备份辅助副本成员

 

local数据库不会被备份,包括admin在内的其他库会被备份。

1
mongodump --host=192.168.11.1:27017 --oplog -o  /mnt/mongo/mongodata  -u xucy  –p Passw0rd --authenticationDatabase admin > mongodump.log 2>&1 &

 

可通过实时查看日志数据,观察备份进度。

 

1
tail  –f mongodump.log

 

步骤三:在新实例上恢复数据库

 

mongorestore要在mongod未启动的情况下运行,它直接写入文件。

1
mongorestore --host=192.168.11.2:27017 --oplogReplay --dbpath  /data/var/lib/mongodb  --directoryperdb  /nfspool/mongodata  > mongorestore.log 2>&1 &

 

可通过实时查看日志数据,观察恢复进度。

 

1
tail  –f mongorestore.log

 

步骤四:在新实例上重建oplog

 

1.查看主副本的维护窗口和oplog大小:

rs_main:PRIMARY> db.printReplicationInfo()    
configured oplog size:   23862.404296875MB    
log length start to end: 39405secs (10.95hrs)    
oplog first event time:  Sun Feb 08 2015 10:34:07 GMT-0600 (CST)    
oplog last event time:   Sun Feb 08 2015 21:30:52 GMT-0600 (CST)    
now:                     Sun Feb 08 2015 21:30:53 GMT-0600 (CST)

 

2.在新机器上重建oplog:

 

以standalone方式启动,执行如下删除和创建脚本:

1
2
3
4
5
> use  local    
> db.oplog.rs. drop ()    
> db.createCollection( "oplog.rs" , { "capped"  true "size"  : 23 * 1024 * 1024 * 1024})    
或    
> db.runCommand( {  create "oplog.rs" , capped:  true size : (23 * 1024 * 1024 * 1024) } )


步骤五:在新实例上恢复oplog

 

此oplog是mongodump时导出的oplog.bson。

1
mongorestore -d  local  -c oplog.rs  /nfspool/mongodata/oplog .bson

 

步骤六:新实例以副本集启动

 

新实例配置和源副本集添加相同的--replSet和--keyFile参数,以副本集启动

 

步骤七:将该节点添加到复制集集群中

 

1
2
>rs. add (“192.168.11.2:27017”)
{“ok”:1}














































本文转自UltraSQL51CTO博客,原文链接: http://blog.51cto.com/ultrasql/1614361,如需转载请自行联系原作者



相关文章
|
NoSQL MongoDB 数据库
MongoDB备份与恢复总结
MongoDB备份与恢复总结
676 0
|
11月前
|
存储 NoSQL MongoDB
MongoDB 复制(副本集)
10月更文挑战第17天
160 2
MongoDB 复制(副本集)
|
10月前
|
NoSQL 容灾 MongoDB
MongoDB主备副本集方案:两台服务器使用非对称部署的方式实现高可用与容灾备份
在资源受限的情况下,为了实现MongoDB的高可用性,本文探讨了两种在两台服务器上部署MongoDB的方案。方案一是通过主备身份轮换,即一台服务器作为主节点,另一台同时部署备节点和仲裁节点;方案二是利用`priority`设置实现自动主备切换。两者相比,方案二自动化程度更高,适合追求快速故障恢复的场景,而方案一则提供了更多的手动控制选项。文章最后对比了这两种方案与标准三节点副本集的优缺点,指出三节点方案在高可用性和数据一致性方面表现更佳。
770 5
|
11月前
|
NoSQL MongoDB 数据库
|
10月前
|
存储 NoSQL MongoDB
【赵渝强老师】MongoDB复制集中的成员
MongoDB复制集通常由一个主库和两个从库组成,可选添加仲裁者。主库负责所有写操作并记录Oplog日志,从库异步同步主库的Oplog日志并应用操作。仲裁者不存储数据,主要用于保证复制集中成员数量为奇数,参与选举投票。视频讲解详见B站链接。
104 0
|
12月前
|
存储 NoSQL Shell
MongoDB复制(副本集)总结
这篇文章是关于MongoDB副本集的总结,包括复制原理、设置副本集、案例分析等内容。
235 1
|
存储 NoSQL 算法
MongoDB保姆级指南(中):从副本集群、分片集群起航,探索分布式存储的趋势!
本文一起来聊聊MongoDB集群,顺带以MongoDB集群为起点,共同探讨一下分布式存储的发展趋势~
2462 15
|
NoSQL 网络安全 MongoDB
MongoDB 备份与恢复
MongoDB 中的数据备份和恢复主要依赖于 `mongodump` 和 `mongorestore` 两个命令。`mongodump` 用于备份数据,它可以将数据导出为 BSON 格式的文件,支持多种部署类型,包括独立运行部署、副本集、分片集群等。通过指定不同的参数,如 `--uri`、`--host`、`--port` 等,可以连接到不同的 MongoDB 实例。备份时还可以指定要备份的数据库、集合等。
283 1
|
监控 NoSQL MongoDB
【MongoDB 专栏】MongoDB 的副本集故障转移与恢复
【5月更文挑战第11天】MongoDB的副本集是高可用性关键,提供数据冗余和自动故障转移。由主节点和从节点组成,主节点处理写操作,从节点同步数据。当主节点故障,副本集通过选举产生新主节点,确保服务不间断。故障转移涉及节点优先级和数据同步状态的考量。恢复阶段解决数据不一致,重点包括节点部署监控、数据同步策略、选举机制和备份恢复计划。网络延迟和大规模数据可能带来挑战,需优化网络、性能调优和定期演练。随着技术进步,副本集的故障转移与恢复将更高效、智能,保障数据安全,支撑业务系统的稳定运行。
584 3
【MongoDB 专栏】MongoDB 的副本集故障转移与恢复
|
存储 NoSQL 安全
【MongoDB 专栏】MongoDB 的备份与恢复策略
【5月更文挑战第11天】MongoDB的备份与恢复至关重要,确保数据安全、完整和可用。数据库提供文件级和逻辑备份,前者简单直接但可能需短暂停机,后者灵活可选特定数据。备份策略要考虑频率和存储位置,恢复时要验证数据完整性,选择合适恢复点。增量和差异备份可提升效率,监控管理备份是必要环节。案例显示,有效策略能降低意外损失。随着技术发展,应持续优化策略,强化人员培训,以责任和使命对待备份恢复,保障企业数据环境的安全稳定。
221 1
【MongoDB 专栏】MongoDB 的备份与恢复策略