• mongodb备份还原指南


    在这里插入图片描述

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

    一、数据备份

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

    性能影响

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

    排除 local 数据库

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

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

    基本 mongodump 操作
    mongodump`实用程序通过连接到正在运行的`mongod来备份数据。
    
    • 1

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

    备份命令
    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: 指定输出目录
    
    #打成压缩包后进行上传到对象存储
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    备份命令其他参数

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

    mongodump --collection=myCollection --db=test
    
    • 1

    二、集群还原

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

    下载备份到指定目录
    #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/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    基本 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
    
    • 1
    • 2

    查找主节点

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

    副本集还原和单节点命令相同,需要注意一点,要保证-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/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    三、单节点还原

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

    向副本集添加成员

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

    具体步骤

    停止数据异常的成员节点

    sudo supervisorctl stop mongodb
    
    • 1

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

    mv ./mongodata ./mongodata_bak
    mkdir ./mongodata
    
    • 1
    • 2

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

    sudo supervisorctl start mongodb
    
    • 1

    情况二:数据量大,

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

    链接

    官网:https://www.mongodb.com/zh-cn/docs/v5.0/tutorial/restore-replica-set-from-backup/

  • 相关阅读:
    中空二氧化硅纳米球 中空SiO2纳米球 Hollow SiO2 nanosphere
    windows故障转移集群磁盘扩容
    主数据管理是数字化转型成功的基石——江淮汽车案例分享
    太硬核!用大数据技术预测足球胜率
    2023贵州财经大学计算机考研信息汇总
    运用工具Postman快速导出python接口测试脚本
    【算法专题--链表】合并两个有序链表--高频面试题(图文详解,小白一看就会!!)
    Linux C/C++后台服务器架构开发成长体系的天花板-学完就好了~
    【快速上手教程6】疯壳·开源编队无人机-遥控器固件烧写
    完美解决docker skywalking报错:no provider found for module storage
  • 原文地址:https://blog.csdn.net/weixin_43539320/article/details/138865306