tencent cloud

文档反馈

恢复至自建数据库

最后更新时间:2024-01-12 09:44:33

    物理备份恢复至自建数据库

    副本集实例只有一份数据,分片集群每个片会有一份数据,请您根据自身业务需要来选择性恢复数据。下文介绍的是单份数据的恢复方法。

    恢复数据至单节点

    1. 将数据拷贝至自建数据库的数据目录(需保证该目录为空),例如目录为 /data/27017/。
    cp -r * /data/27017/
    2. 重启 mongod 并校验数据。命令示例如下:
    ./mongod --dbpath /data/27017 --port 27017 --logpath /var/log/mongodb/27017.log --fork

    恢复数据至副本集

    物理备份默认带有原实例的配置,因此需移除原有配置,否则可能导致数据无法访问。
    1. 将数据恢复至单节点自建数据库,然后以副本集方式重启该节点。重启命令示例如下:
    ./mongod --replSet mymongo --dbpath /data/27017 --port 27017 --logpath /var/log/mongodb/27017.log --fork
    2. 登录该节点清除原实例的副本集配置,命令如下:
    rs.slaveOk()
    use local
    db.system.replset.remove({})
    3. 重启该节点,将新节点加入副本集进行初始化并校验数据,加入副本集的节点需已启动且无数据。命令示例如下:
    rs.initiate({"_id":"mymongo","members":[{"_id":0,"host":"127.0.0.1:27017"},{"_id":1, "host":"127.0.0.1:27018"},{"_id":2, "host":"127.0.0.1:27019"}]})
    rs.initiate() 命令介绍请参见 MongoDB 官网文档
    说明:
    不支持恢复数据至分片集群,由于分片集群物理备份的路由缺失,所以即使将每个分片的数据恢复至自建副本集(分片集群的每一个片),mongos 也只能读取到主分片的数据。

    逻辑备份恢复至自建数据库

    为不影响数据恢复到自建数据库之后的验证,需确保自建数据库为空。
    对于3.6版本,需手动删除 config 目录再依次使用 mongorestore 命令恢复每个片的数据。如下图所示:
    
    
    
    对于3.2版本,需手动将单个库表的文件合并后才能恢复数据。合并文件操作示例如下: 数据库ycsb目录下有一个表格为c_10,该表格涉及的数据文件为c_10.bson.gz.chunk-64c_10.bson.gz.chunk-127,则合并命令为cat c_10.bson.gz.chunk-* > ./c_10.bson.gz
    说明:
    3.2版本部分场景下时会出现 chunk 区分。
    使用 mongorestore 命令恢复数据,-h 参数指定自建数据库地址,--dir 参数指定数据文件所在目录,必须指定 --gzip 参数来解压备份文件。命令如下:
    ./mongorestore --gzip --drop -h127.0.0.1:27017 --dir ./1544517027220146694
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持