
# 恢复副本集备份到本地自建数据库
#### 操作场景
实例的备份文件仅支持在Linux系统下恢复到本地自建数据库，暂不支持Windows系统。
本文以Linux操作系统为例，介绍如何将已下载的副本集备份文件的数据恢复至自建数据库。关于如何下载备份文件，请参见[下载备份文件](https://support.huaweicloud.com/usermanual-dds/dds_03_0136.html)。
#### 使用须知
- 本地自建MongoDB数据库已安装3.4版本客户端工具。

- 目前仅支持3.4和4.0版本，4.2及以上版本暂不支持通过该方式在本地进行恢复。
- 如果需要完成数据库、集合级别的数据迁移，请参见[通过mongodump和mongorestore工具迁移数据](https://support.huaweicloud.com/usermanual-dds/dds_03_0055.html)。
 
#### 操作步骤
1. 登录自建数据库所在服务器。 
   假设路径"/path/to/mongo"为执行恢复操作所在路径，路径"/path/to/mongo/data"为备份文件所在路径。
   
   
2. 恢复前，确保路径"/path/to/mongo/data"为空目录。 
   **cd /path/to/mongo/data/**
   **rm -rf \***
   
   
3. 将已下载的副本集备份文件压缩包复制到"/path/to/mongo/data/"路径下，并解压。 
   **lz4 -d xxx_.tar.gz \|tar -xC /path/to/mongo/data/**
   
   
4. 在"/path/to/mongo"文件夹中新建配置文件"mongod.conf"。 
   **touch mongod.conf**
   
   
5. 通过单节点模式启动数据库。
   
   1. 修改"mongod.conf"配置文件，使其符合备份启动的配置要求。 以下为备份启动的参考配置模板：
      ```
      systemLog:
          destination: file
          path: /path/to/mongo/mongod.log
          logAppend: true
      security:
          authorization: enabled
      storage:
          dbPath: /path/to/mongo/data
          directoryPerDB: true
          engine: wiredTiger
          wiredTiger:
              collectionConfig: {blockCompressor: snappy}
              engineConfig: {directoryForIndexes: true, journalCompressor: snappy}
              indexConfig: {prefixCompression: true}
      net:
          http:
              enabled: false
          port: 27017
          bindIp: xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx
          unixDomainSocket:
              enabled: false
      processManagement:
          fork: true
          pidFilePath: /path/to/mongo/mongod.pid
      ```
      ![](https://support.huaweicloud.com/usermanual-dds/public_sys-resources/note_3.0-zh-cn.png)
      bindIp为数据库绑定的连接IP地址。该字段可选，不包含该字段时，默认绑定本地IP地址。
      
   
   2. 指定新建的配置文件"mongod.conf"启动数据库。 */usr/bin* */* **mongod** **-f /path/to/mongo/mongod.conf**
      ![](https://support.huaweicloud.com/usermanual-dds/public_sys-resources/note_3.0-zh-cn.png)
      /usr/bin/为已安装MongoDB客户端中mongod文件所在路径。
      
   
   3. 等待启动完成后，可通过服务器的mongo shell登录恢复后的数据库。 **mongo --host** \<*DB_HOST* \>**-u** *\<DB_USER\>* **-p** *\<PASSWORD\>* **--authenticationDatabase admin**
      ![](https://support.huaweicloud.com/usermanual-dds/public_sys-resources/note_3.0-zh-cn.png)
      - DB_HOST是数据库绑定的连接IP地址。
      
      - DB_USER是数据库账号名，默认rwuser。
      
      - PASSWORD是实例进行备份时，数据库账号对应的密码。
        
   
   
   
   
 
#### 副本集模式启动数据库
DDS实例的物理备份默认带有原实例的副本集配置。启动时需以单节点模式启动，否则可能无法访问。
如需以副本集模式启动，请先执行[5]，再执行以下步骤：
1. 通过服务器的mongo shell登录恢复后的数据库。
2. 移除原有副本集配置。 
   **use local**
   **db.system.replset.remove({})**
   
   
3. 关闭数据库进程服务。 
   **use admin**
   **db.shutdownServer()**
   
   
4. 修改"/path/to/mongo/"目录下的配置文件"mongod.conf"，添加replication相关配置。详细命令用法请参考MongoDB官方文档[部署副本集](https://docs.mongodb.com/manual/tutorial/deploy-replica-set/index.html?spm=a2c4g.11186623.2.13.28a22124REYsQi)。
5. 指定新建的配置文件"mongod.conf"来启动数据库。 
   */usr/bin/* **mongod -f /path/to/mongo/mongod.conf**
   ![](https://support.huaweicloud.com/usermanual-dds/public_sys-resources/note_3.0-zh-cn.png)
   /usr/bin/为已安装MongoDB客户端中mongod文件所在路径。
   
   
6. 将成员加入副本集并初始化副本集。 
   ![](https://support.huaweicloud.com/usermanual-dds/public_sys-resources/note_3.0-zh-cn.png)
   此步骤使用 rs.initiate()命令进行操作，详细命令用法请参考MongoDB官方文档[rs.initiate()命令介绍](https://docs.mongodb.com/manual/reference/method/rs.initiate/?spm=a2c4g.11186623.2.14.28a22124eUgigt)。
   
   
 
