You need to enable JavaScript to run this app.
导航

通过物理备份文件恢复至自建数据库

最近更新时间2023.07.10 15:46:59

首次发布时间2023.07.08 12:59:32

文档数据库 MongoDB 版支持备份文件下载功能,您可以将备份文件下载到本地,并通过备份文件将数据恢复到本地自建 MongoDB 数据库中进行离线分析或性能测试等。

前提条件

  • 在本地或 ECS 服务器上安装对应版本的 MongoDB,安装方法请参见 MongoDB Start Guide
    本文操作步骤以安装在 云服务器 ECS 实例的 MongoDB 为例,其中 MongoDB 版本为 4.0。
  • 在安装了 MongoDB 的服务器上,创建物理恢复操作的数据库所在目录。
    本文操作步骤以 /root/mongotest 作为物理恢复操作的数据库所在目录。

注意事项

  • 本地自建 MongoDB 数据库(下文简称“自建 MongoDB”)需与文档数据库 MongoDB 版(下文简称 “MongoDB”) 的数据库版本保持一致。例如 MongoDB 使用的数据库版本为 4.0,自建 MongoDB 也必须使用 4.0 版本。
  • MongoDB 支持副本集和分片集群两种实例架构,其中副本集实例只有一份数据,而分片集群中每个 Shard 分片都会有一份数据,您可以根据业务需要来选择需要恢复的数据。
  • 不建议将数据恢复至自建 MongoDB 分片集群,因为自建 MongoDB 分片集群缺少物理备份路由,所以即使将 MongoDB 每个 Shard 分片的数据恢复至自建 MongoDB 分片集群中的每一个分片,Mongos 也只能读取到主分片的数据。

步骤一:下载及解压物理备份文件

  1. 在安装了 MongoDB 服务的 ECS 中,通过如下命令下载目标 MongoDB 实例的物理备份文件。

    wget -c '<数据备份文件的公网下载地址>' -O <自定义文件名>.zip
    

    说明

    • MongoDB 支持通过物理备份方式生成的数据备份和日志备份,恢复时需要使用的是数据备份。您可以 MongoDB 控制台上手动创建物理备份,具体操作步骤,请参见手动备份
    • 您可以从 MongoDB 控制台上找到物理备份文件的公网下载地址。具体操作步骤,请参见下载备份文件
  2. 执行如下命令解压物理备份文件。

    unzip <自定义文件名>.zip
    

    说明

    解压之后,您会在当前目录中看到一个 metadata 文件和一个 data 文件夹(分片集群的物理备份文件中还会包含一个 mongo 文件夹,里面是每个 Shard 分片的备份数据),之后的步骤中需要使用 /data/physic/ 文件夹下的物理备份数据,备份数据的文件名称为 full-xxx(例如 full-168857646998639****)。

  3. 执行如下命令在 /root/mongotest 中新建一个 data 目录,并将解压后的 MongoDB 物理备份文件移动到 /root/mongotest/data/ 目录中。

    mkdir -p /root/mongotest/data && mv <物理备份文件> /root/mongotest/data
    

    命令示例如下。

    mkdir -p /root/mongotest/data && mv /root/data/physic/full-168857646998639**** /root/mongotest/data
    

步骤二:将物理备份数据恢复至自建 MongoDB

  1. 执行如下命令在 /root/mongotest 文件夹中新建配置文件 mongod.conf

    touch /root/mongotest/mongod.conf
    
  2. 在命令行中输入 vi /root/mongotest/mongod.conf,打开 mongod.conf 文件,键盘输入 i 开启编辑模式。

  3. 将下述配置中的文件目录修改为您自己的真实文件目录后,再复制到 mongod.conf 文件中。

    说明

    本文操作以恢复至单节点模式的自建 MongoDB 数据库为例,因此下述配置文件设置的启动模式为单节点模式,且未开启认证功能。

    systemLog:
      destination: file
      path: <当前节点的 MongoDB 日志文件路径>
      logAppend: true
    storage:
      dbPath: <当前节点的 MongoDB 数据文件路径>
    net:
      bindIp: 127.0.0.1
      port:  27011
    storage:
       journal:
          enabled: true
    processManagement:
      fork: true
      pidFilePath: <当前节点的 MongoDB PID 文件(即记录进程 ID 的文件)路径>
    

    配置文件示例如下。

    systemLog:
      destination: file
      path:  /root/mongotest/mongod.conf
      logAppend: true
    storage:
      dbPath: /root/mongotest/data/  
    net:
      bindIp: 127.0.0.1
      port:  27011
    storage:
       journal:
          enabled: true
    processManagement:
      fork: true
      pidFilePath: /root/mongotest/mongodb.pid
    
  4. 按 Esc 键退出编辑模式,键盘输入 :wq 保存并退出。

  5. 进入 MongoDB 安装包的 bin 目录,然后执行如下命令来指定新建的配置文件 mongod.conf 启动 MongoDB。

    ./mongod --config <mongod.conf 文件所在路径>
    

    命令示例如下。

    ./mongod --config /root/mongotest/mongod.conf
    
  6. 等待 MongoDB 启动完成后,执行如下命令通过 Mongo Shell 工具连接自建 MongoDB 数据库。

    ./mongo --port 27011
    
  7. 连接成功后,您可以在 Mongo Shell 工具中执行 show dbs 命令,来查询当前本地 MongoDB 中所有的数据库,以验证是否恢复成功。

    说明

    验证恢复成功后,您可以在 Mongo Shell 中执行 exit 命令退出 Mongo Shell。