在使用mongosync迁移数据过程中,目标库log提示如下错误:
发现在bulid index的时候遇到”key too larger to index”错误,并且每次报错后会重新开始创建这个索引,再次报错,再次重建。。。。。。一直retry index bulid,于是数据同步卡在这块了
经过查询发现:
Mongo启动时有noIndexBuildRetry选项,指定此参数则不会去尝试重建索引
再次查看官当,发现:
大概意思是:
在mongoDB2.6 ,当insert或者update一个长度大于Index key length Limit的操作,mongo将会返回一个错误给客户端。而在早期的mongo版本将会操作成功
为了避免这个问题,你可以使用hash index或者索引计算值.如果你有一个现有的数据集合,那你可以禁用此行为,然后逐步解决这些索引问题,使用参数:
failIndexKeyTooLong来禁用此行为
failIndexKeyTooLong 默认为 true. 当设置为false时, 2.6 mongod 实例将提供2.4的行为
运行mongo时,如下关闭:
mongod --setParameter failIndexKeyTooLong=false
解决问题:
停止mongosync 进程
重启目标库的mongo实例 指定--setParameter failIndexKeyTooLong=false —noIndexBuildRetry 选项
开启mongosync进行增量同步(-s 去之前的synclog中找)
再次tail –f mongo.log发现刚才卡着一直retry的地方过去了 但是还是有
错误
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27000195/viewspace-1662275/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/27000195/viewspace-1662275/