MongoDB备份和还原的操作指南

 更新时间:2024年05月20日 10:01:12   作者:*老工具人了*  
MongoDB备份和还原是指将MongoDB数据库中的数据和集合备份到另一个存储位置,并在需要的时候恢复这些备份的过程,备份和还原MongoDB数据库非常重要,本文给大家介绍了MongoDB备份和还原的操作指南,需要的朋友可以参考下

MongoDB 提供的命令行实用程序mongodumpmongorestore创建备份和恢复数据的过程。

一、数据备份

mongorestoremongodump实用程序可处理BSON数据转储,对于创建小型部署的备份非常有用。要实现弹性且无中断的备份,请将文件系统快照或区块级磁盘快照与 MongoDB Atlas 的云备份结合使用。

性能影响

由于mongodump和mongorestore是通过与正在运行的mongod实例交互来进行操作的,因此它们可能会影响正在运行的数据库的性能。这些工具不仅会为正在运行的数据库实例创建流量,还会强制数据库通过内存读取所有数据。当 MongoDB 读取不常使用的数据时,它可能会逐出更频繁访问的数据,从而导致数据库常规工作负载的性能下降。

排除 local 数据库

mongodump会在其输出中排除local数据库的内容。

local数据库:用于存储诊断信息、复制集配置和操作日志等数据,其中的集合不会被复制

基本 mongodump 操作

mongodump`实用程序通过连接到正在运行的`mongod来备份数据。

该工具可以为整个服务器、数据库或集合创建备份,也可以结合查询来仅备份一个集合的某一部分。

备份命令

export local_tar_dir="/opt/mongodb/upload_backup/"
export dump_name="backup-mongo{{ now_date |replace('-', '')}}"#显示日期
mongodump \
-h {{ ansible_default_ipv4.address }} \
-u{{ mongo_user }} -p{{ mongo_password }} \
--authenticationDatabase admin \
-o {{ local_tar_dir }}/{{ dump_name }} \
--gzip
#-o: 指定输出目录

#打成压缩包后进行上传到对象存储

备份命令其他参数

要限制数据库转储中包含的数据量,可以指定--db--collection作为mongodump的选项。例如:

mongodump --collection=myCollection --db=test

二、集群还原

适用于整个集群不可用或者误删除了部分数据无法找回的情况

下载备份到指定目录

#obs华为云
sudo /usr/local/bin/obsutil ls obs://jws2-live-cn-backup-01/db-db-mongodb/2024-03-28/05/ -s | grep "_master"
sudo /usr/local/bin/obsutil cp {{ first_tarball }} /tmp/

#gcp谷歌云
/bin/gsutil ls gs://{{cloud_backup_bucket}}/db-mongodb/{{now_date}}/{{now_hour}}/
/bin/gsutil  cp  {{ backup_file.stdout }}   /tmp/

基本 mongorestore 操作

mongorestore实用程序可恢复mongodump创建的二进制备份。默认情况下, mongorestore会在dump/目录中查找数据库备份。

mongorestore实用程序通过直接连接到正在运行的mongod来恢复数据。

mongorestore 可以恢复整个数据库备份或部分的备份。

可以考虑使用mongorestore --drop选项从数据库中删除每个集合,然后再从备份恢复。

如果恢复到强制执行访问控制的实例,请同时包括--username和--authenticationDatabase 。

还原前准备

需要保证副本集正常运行,所有游戏服都停止,不会有客户端对mongodb进行写操作。

登录mongodb副本集

#登录mongodb副本集
mongo mongodb://root:mgwh7B8H9w5dc8j0@10.156.0.4:27017,10.156.0.5:27017,10.156.0.6:27017,/admin?replicaSet=jws2-test

查找主节点

rs.status()
#副本集配置成功后,172.16.60.205为主节点PRIMARY,172.16.60.206/207为副本节点SECONDARY。
health:1   1表明状态是正常,0表明异常
state:1     值小的是primary节点、值大的是secondary节点
#"stateStr" : "PRIMARY",        (代表为主节点)

还原命令

副本集还原和单节点命令相同,需要注意一点,要保证-h参数指定的主机为副本集的主节点

以下为对单个库进行还原,可以按照自己的需求进行还原操作。

mongorestore \
-h 172.16.185.222:27011 \
-p mgwh7B8H9w5dc8j0 -u root1 \
--authenticationDatabase=admin  \
--db=SilenceDB  --drop --gzip \
/home/jms_ops_all/backup-mongo20240507/SilenceDB/

三、单节点还原

适用于单机点不可用,但是集群可用的情况。

向副本集添加成员

MongoDB 提供了两个用于恢复副本集从节点成员的选项:

  • 手动将数据库文件复制到每个数据目录。
  • 允许初始同步以自动分发数据。

具体步骤

停止数据异常的成员节点

sudo supervisorctl stop mongodb

清理数据异常的成员节点的数据目录

mv ./mongodata ./mongodata_bak
mkdir ./mongodata

情况一:数据量不大,直接启动即可,初始同步会将数据从主成员复制到新成员。

sudo supervisorctl start mongodb

情况二:数据量大,

将主成员的数据目录复制到新的辅助成员,再启动即可。

以上就是MongoDB备份和还原的操作指南的详细内容,更多关于MongoDB备份还原的资料请关注脚本之家其它相关文章!

相关文章

  • cgroup限制mongodb进程内存大小

    cgroup限制mongodb进程内存大小

    这篇文章主要介绍了cgroup限制mongodb进程内存大小,需要的朋友可以参考下
    2014-07-07
  • 开发分布式医疗挂号系统MongoDB集成实现上传医院接口

    开发分布式医疗挂号系统MongoDB集成实现上传医院接口

    这篇文章主要介绍了开发分布式医疗挂号系统MongoDB集成实现上传医院接口,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • MongoDB添加仲裁节点报错:replica set IDs do not match的解决方法

    MongoDB添加仲裁节点报错:replica set IDs do not match的解决方法

    这篇文章主要给大家介绍了关于MongoDB添加仲裁节点报错:replica set IDs do not match的解决方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-11-11
  • mongo数据集合属性中存在点号(.)的解决方法

    mongo数据集合属性中存在点号(.)的解决方法

    这篇文章主要给大家介绍了关于mongo数据集合属性中存在点号(.)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-10-10
  • MongoDB中文学习入门教程(包括安装配置和增删改查)

    MongoDB中文学习入门教程(包括安装配置和增删改查)

    本文主要介绍了MongoDB的基本知识和操作,MongoDB是一种面向文档的无结构化数据库系统,具有灵活性、可扩展性和高性能等优点,安装和配置MongoDB也非常简单,使用MongoDB的API进行操作也非常方便,在实际使用中,MongoDB可以作为常规数据存储或NoSQL解决方案的替代品
    2024-01-01
  • MongoDB整库备份与还原以及单个collection备份、恢复方法

    MongoDB整库备份与还原以及单个collection备份、恢复方法

    mongodb数据库维护离不开必要的备份、恢复操作,而且一般不会出错,所以我们在使用的时候大部分时候使用备份和恢复操作就可以了
    2013-08-08
  • MongoDB单表数据的导出和恢复实例讲解

    MongoDB单表数据的导出和恢复实例讲解

    MongoDB 是一个跨平台的,面向文档的数据库,提供高性能,高可用性和可扩展性方便。 MongoDB 工作在收集和文件的概念。接下来通过本文给大家介绍MongoDB单表数据的导出和恢复实例讲解,对mongodb导出和恢复数据知识感兴趣的朋友一起学习吧
    2016-03-03
  • 详解MongoDB数据还原及同步解决思路

    详解MongoDB数据还原及同步解决思路

    mongodb数据如何还原,同步到其他系统?其实实现方法很简单,这篇文章主要介绍了MongoDB数据还原及同步解决思路,需要的朋友可以参考下
    2018-08-08
  • mongoDB使用投影剔除‘额外’字段的操作过程

    mongoDB使用投影剔除‘额外’字段的操作过程

    这篇文章主要给大家介绍了关于mongoDB使用投影剔除‘额外’字段的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 数据库MongoDB启动的三种方式

    数据库MongoDB启动的三种方式

    MongoDB是一个流行的分布式文档型数据库,用于存储非结构化数据,本文给大家总结了数据库MongoDB启动的三种方式,讲解的非常详细,具有一定的参考价值,需要的朋友可以参考下
    2024-07-07

最新评论