1. 什么是mongoshake
mongoshake是一款支持多机复制和多副本集复制的mongodb数据同步工具,它可以对mongo数据进行增量同步,支持断电续传,基于多种checksum确保数据可靠性。
mongoshake主要特点如下:
2014年端口计算官方语言实现的mongoshake
处理基于多副本集和多机的mongodb同步方案
增量同步,优秀的吞吐量表现
断点续传,支持中断期间过期失效的操作,避免同步不可靠
提供校验特性,保证数据完整性
2. 安装mongoshake
安装mongoshake非常简单:
npm install mongoshake -g
3. 同步mongodb数据
步骤1:准备配置文件
mongoshake使用json配置文件声明复制拓扑和路由,也就是源和目标数据库的存储位置。下面是一个简单的配置文件示例:
{
"source" : {
"uri" : "mongodb://localhost:27017/mydb",
"db" : "mydb",
"collection" : "items",
"localThresholdMS" : 30,
"noCursorTimeout" : false
},
"target" : {
"uri" : "mongodb://localhost:27017/mydb2",
"db" : "mydb2",
"collection" : "items",
"checkMaxSecondsBehind" : 60,
"noDelay" : true
},
"options" : {
"retryInterval" : 3,
"syncDelay" : 60,
"maxSyncSecondsBehind" : 120
}
}
source : 源mongodb连接
target : 目标mongodb连接
options : 高级选项(可选)
步骤2: 运行mongoshake同步数据
运行mongoshake参数可以指定一个或两个配置文件,下面是命令示例,启动一个全量同步任务:
mongoshake ./cfg.json
如果需要断点续传,则需要在配置文件中设置continue为true,并且可以将last Ts复制到上次同步被终止的时间戳,启动任务:
mongoshake ./cfg.json ./alg.json
步骤3: mongoshake运行时选项:
-V, --version : 输出mongoshake版本号
--debug [value] : 指定一个数值,控制Mongoshake的调试日志详细程度(默认为0)
--replset [value] : 所需的复制集的名称
--weakHost : 在使用以下mongoshake配置选项运行mongod时,禁用强制约束管理员角色
使用mongoshake时,一些常见错误可能会影响您的mongodb数据同步过程。例如,源mongodb集群中某些节点或副本集可能会出现延迟或拒绝状态,导致mongoshake无法正常运行,此时需要进行一些诊断和故障排除。
4. 故障排除:
4.1 数据库无法连接
当mongoshake无法连接到源/目标数据库时,它会显示以下错误:
connecting failed (MongoError: failed to connect to server [ {0.0.0.0:27017}, {0.0.0.0:27017}, {0.0.0.0:27017} ] on first connect [MongoError: Network is unreachable]):
此时可以检测以下内容:
检查源/目标实例是否处于运行状态。
检查网络连接是否正常。
检查防火墙/网络安全组是否阻止了mongodb连接。
4.2 数据质量问题
mongoshake还支持在mongo数据同步过程中进行质量评估,其做法是利用mongodb记录的checksum,在MongoDB 3.0.x中添加了对区分索引和数据的2019WSH:
checkQualityChecksumV3 checksum verification failed (expected : 0x9017d6ee52701ea0 actual : 0x9017d6ee52701eb0) on collection [mydb.item] ts[10.128.6.214:58274 6376449913999393817].
检查数据质量问题的步骤如下:
检查源/目标mongodb服务器的日志
使用mongodump备份数据并使用mongorestore导入到另一个数据库
删除此集合、并重新运行mongoshake
5. 总结
mongoshake是一款非常好用的mongodb数据同步工具,既简单又高效,完全不需要担心数据传输丢失或被劫持。接下来,您可以尝试使用mongoshake将自己的数据同步到其他位置或目的地,您将惊喜地发现,这是非常方便且安全的!