如何将阿里云WiredTiger引擎的MongoDB物理备份文件恢复至自建数据库

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
简介: 数据库操作一直是一个比较敏感的话题,动不动“删库跑路”,可见数据库操作对于一个项目而言是非常重要的,我们有时候会因为一个游戏的严重bug或者运营故障要回档数据库,而你们刚好使用的是阿里云的Mongodb,那么这篇文章将给你提供一个思路(或许你按照阿里云官网的文档一顿操作下来,并不是那么顺利,有一些报错,无法登录...)


       数据库操作一直是一个比较敏感的话题,动不动“删库跑路”,可见数据库操作对于一个项目而言是非常重要的,我们有时候会因为一个游戏的严重bug或者运营故障要回档数据库,而你们刚好使用的是阿里云的Mongodb,那么这篇文章将给你提供一个思路(或许你按照阿里云官网的文档一顿操作下来,并不是那么顺利,有一些报错,无法登录...)

        在恢复数据之前,你要先知道你产线环境使用mongodb服务器的版本是多少,然后本地部署安装对应版本的数据库,以避免版本兼容问题引发的一些异常:

1.数据库版本要求

云数据库MongoDB版实例的版本必须对应自建MongoDB数据库的版本。二者之间的对应关系如下:

MongoDB实例 自建MongoDB数据库
3.2版本 3.2或3.4版本
3.4版本 3.4版本
4.0版本 4.0版本
4.2版本 4.2版本

注意,我建议你使用linux系统来部署对应的mongo版本,这里我以v4.2.23为例

[root@localhost data]# mongod --version
db version v4.2.23
git version: f4e6602d3a4c5b22e9d8bcf0722d0afd0ec01ea2
OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
allocator: tcmalloc
modules: none
build environment:
    distmod: rhel70
    distarch: x86_64
    target_arch: x86_64

image.gif

2.下载解压物理备份并赋权限  

你的备份文件可以通过阿里云后台来直接下载:

image.gif编辑

点击下载可下载到本地,或者你通过wget+下载链接下载到本地。

然后创建一个mongodb恢复的目录,mkdir /data/mongo

image.gif编辑

将下载的系统备份文件压缩包放到/data/mongo目录下

比如我的压缩包名是hins25976838_data_20230811084111.tar

tar xzvf hins25976838_data_20230811084111.tar

image.gif

image.gif编辑

注意,一般mongo服务器是需要mongod的用户组和用户权限的,所以,如果你是这种情况,建议你使用

chown mongod /data/mongo -R  && chgrp mongod /data/mongo -R && chmod 755 /data/mongo

image.gif

3.以单节点模式恢复MongoDB物理备份的数据

    1. 备份下原来的mongod.conf,重新修改配置文件mongod.conf。
    cp /etc/mongod.conf /etc/mongod.conf.bak
    1. image.gif
    2. vim /etc/mongod.conf打开mongod.conf文件。 根据云数据库MongoDB版的存储引擎选择启动的配置模板,您可以将其复制到mongod.conf文件中。
      说明 配置文件设置了启动模式为单节点模式并开启认证功能
    systemLog:
      destination: file
      logAppend: true
      path: /var/log/mongodb/mongod.log
    # Where and how to store data.
    storage:
      dbPath: /data/mongo
      directoryPerDB: true
    #  engine:
    #  wiredTiger:
    # how the process runs
    processManagement:
      fork: true  # fork and run in background
      pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile
      timeZoneInfo: /usr/share/zoneinfo
    # network interfaces
    net:
      port: 27017
      #bindIp: 0.0.0.0 #127.0.0.1  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
      unixDomainSocket:
            enabled: false
    security:
        authorization: disabled
    1. image.gif说明 云数据库MongoDB默认使用的是WiredTiger存储引擎,并且开启了directoryPerDB选项,因此配置中指定了这个选项,

    security:
               authorization: disabled
    1. image.gif为了方便起见,我这里不需要加入用户名和密码验证,可直接登录。

    4.单节点模式启动并登录

      1. 指定新建的配置文件mongod.conf来启动MongoDB。
      mongod -f /etc/mongod.conf
      1. image.gif
      2. 你启动过程中可能会遇到如下报错信息:image.gif编辑这种应该是之前没有正常关闭mongodb引起的,比如直接 kill -9 <pid>导致, 解决方法:

      找到mongod.lock文件,并删除mongod.lock。

      如果启动仍然报错,建议再使用修复方式来启动


      mongod -f /etc/mongod.conf --repair
      image.gif

      千万不能使用kill -9 <pid>,因为MongoDB使用mmap方式进行数据文件管理,也就是说写操作基本是在内存中进行,写操作会被每隔60秒(syncdelay设定)的flush到磁盘里。如果在这60秒内flush处于停止事情我们进行kill -9那么从上次flush之后的写入数据将会全部丢失。 如果在flush操作进行时执行kill -9则会造成文件混乱,可能导致数据全丢了,启动时加了repair也无法恢复。

      1. 等待启动完成后,执行如下命令登录MongoDB数据库,进入Mongo Shell。
      mongo --host 127.0.0.1:27017
      1. image.gif在Mongo Shell中,执行show dbs查询当前本地MongoDB中所有的数据库,以验证是否恢复成功,可以看到我想要恢复的数据库merge,然后这样,我就可以恢复某一个玩家的数据。 image.gif编辑
      2. 至此恢复工作已成功完成,您可以在Mongo Shell中执行exit命令退出Mongo Shell。
      相关实践学习
      MongoDB数据库入门
      MongoDB数据库入门实验。
      快速掌握 MongoDB 数据库
      本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
      相关文章
      |
      2月前
      |
      NoSQL MongoDB 数据库
      MongoDB备份与恢复总结
      MongoDB备份与恢复总结
      58 0
      |
      2月前
      |
      人工智能 监控 NoSQL
      超过1000万企业选择的凭安征信,为什么选择阿里云MongoDB
      凭安征信选择使用阿里云的MongoDB服务,既是出于对MongoDB和阿里云5年深度合作经验的信任,也出于对降本增效的进一步诉求。
      3861 3
      |
      3月前
      |
      SQL NoSQL 数据管理
      数据管理DMS使用问题之如何批量导入MongoDB的数据文件
      阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
      |
      5月前
      |
      存储 NoSQL MongoDB
      MongoDB数据库转换为表格文件的Python实现
      MongoDB数据库转换为表格文件的Python实现
      196 0
      |
      2月前
      |
      NoSQL 网络安全 MongoDB
      MongoDB 备份与恢复
      MongoDB 中的数据备份和恢复主要依赖于 `mongodump` 和 `mongorestore` 两个命令。`mongodump` 用于备份数据,它可以将数据导出为 BSON 格式的文件,支持多种部署类型,包括独立运行部署、副本集、分片集群等。通过指定不同的参数,如 `--uri`、`--host`、`--port` 等,可以连接到不同的 MongoDB 实例。备份时还可以指定要备份的数据库、集合等。
      27 1
      |
      2月前
      |
      NoSQL MongoDB
      阿里云 MongoDB 创建库添加用户并授权
      阿里云 MongoDB 创建库添加用户并授权
      31 0
      |
      5月前
      |
      NoSQL MongoDB 数据库
      国内唯一 阿里云荣膺MongoDB“2024年度DBaaS认证合作伙伴奖”
      阿里云连续第五年斩获MongoDB合作伙伴奖项,也是唯一获此殊荣的中国云厂商。一起学习MongoDB副本集的选举机制以及可能会出现的特殊情况。
      国内唯一 阿里云荣膺MongoDB“2024年度DBaaS认证合作伙伴奖”
      |
      5月前
      |
      存储 NoSQL 安全
      【MongoDB 专栏】MongoDB 的备份与恢复策略
      【5月更文挑战第11天】MongoDB的备份与恢复至关重要,确保数据安全、完整和可用。数据库提供文件级和逻辑备份,前者简单直接但可能需短暂停机,后者灵活可选特定数据。备份策略要考虑频率和存储位置,恢复时要验证数据完整性,选择合适恢复点。增量和差异备份可提升效率,监控管理备份是必要环节。案例显示,有效策略能降低意外损失。随着技术发展,应持续优化策略,强化人员培训,以责任和使命对待备份恢复,保障企业数据环境的安全稳定。
      88 1
      【MongoDB 专栏】MongoDB 的备份与恢复策略
      |
      5月前
      |
      存储 NoSQL MongoDB
      【MongoDB 专栏】MongoDB 的 GridFS:存储与检索大文件
      【5月更文挑战第10天】MongoDB&#39;s GridFS 是用于大规模数据和大文件存储的解决方案,它将文件分割成小块存储在不同文档中,以提升管理效率和避免性能问题。文件上传时记录元数据,通过唯一标识符实现快速检索。GridFS 提供高效存储、便捷检索和扩展性,适用于大文件管理。然而,应注意文件大小限制、数据一致性和性能优化。通过案例分析,展示了 GridFS 在实际应用中的优势和适用场景,为构建强大应用提供支持。
      290 1
      【MongoDB 专栏】MongoDB 的 GridFS:存储与检索大文件
      |
      5月前
      |
      人工智能 NoSQL 安全
      国内唯一!阿里云连续第五年斩获MongoDB合作伙伴奖
      国内唯一!阿里云连续第五年斩获MongoDB合作伙伴奖
      136 1

      相关产品

    1. 云数据库 MongoDB 版
    2. 下一篇
      无影云桌面