恢复 mongo 实例并同步

安装相同版本 MongoDB

参考:安装 MongoDB

备份数据

本次恢复的实例是阿里云上的实例,所以下载即可:

wget -c '<数据备份文件外网下载地址>' -O hins_data.tar.gz

这里要注意一下原始格式。有些是 .tar.gz 有些是 _qp.xb,二者处理方式不同

恢复数据

解压数据

tar xvf hins_data.tar.gz

查看解压出来的数据所在位置:

[root@baseimage mongodb]# pwd
/home/mongodb

配置文件

在指定位置创建配置文件:

touch /root/mongo/mongod.conf

将如下内容写入配置文件:

systemLog:
    destination: file
    path: /root/mongo/mongod.log
    logAppend: true
security:
    authorization: enabled
storage:
    dbPath: /home/mongodb  # 上文解压出来的文件路径
    directoryPerDB: true
net:
    port: 27017
    unixDomainSocket:
        enabled: false
processManagement:
    fork: true  # 后台启动
    pidFilePath: /root/mongo/mongod.pid

大家可以看到没有指定引擎,是因为相同版本的 Mongo 使用的默认引擎是一致的,如果没有修改,无需额外指定。

我们使用的版本是 4.0,默认引擎是 wiredTiger。 查看方法:

> db.serverStatus().storageEngine
{
	"name" : "wiredTiger",
	"supportsCommittedReads" : true,
	"supportsSnapshotReadConcern" : true,
	"readOnly" : false,
	"persistent" : true
}

启动实例

mongod -f /root/mongo/mongod.conf

检查日志有误错误(日志路径在配置文件中):

tail -f /root/mongo/mongod.log

登录实例

mongo --host 127.0.0.1 -u root -p --authenticationDatabase admin

由于这是恢复出来的实例,所以密码是原实例设置的密码。

开启同步

检查数据

推荐 Hash 校验:

# 对当前库下的每张表做 Hash 校验
db.collection_env.runCommand({dbHash:1})

# 对指定集合做校验
db.runCommand ( { dbHash: 1, collections: [ <collection1>, ... ] } )

如果数据在源源不断写入,那么执行时间不统一是会影响到校验结果的。

在流量不大的情况下,可以使用 command + d ,再 command + shift + i 开启两个同步窗口:Keyboard input will be sent to multiple sessions 然后使用dbHash命令进行校验。

最后更新于

这有帮助吗?