内容简介:今天在MongoDB 4.0.4版本下,在还原恢复数据库时报错。主要错误为:Failed: restore error: error applying oplog: applyOps: not authorized on admin to execute command { applyOps: [ { ts: Timestamp(1548004840, 1), h: 1234878425364100170, v: 2, op: "u", ns: "config.system.sessions", o: {
一. 背景
今天在 MongoDB 4.0.4版本下,在还原恢复数据库时报错。
主要错误为:
Failed: restore error: error applying oplog: applyOps: not authorized on admin to execute command { applyOps: [ { ts: Timestamp(1548004840, 1), h: 1234878425364100170, v: 2, op: "u", ns: "config.system.sessions", o: { $v: 1, $set: { lastUse: new Date(1548004840930) } }, o2: { _id: { id: UUID("375d7607-1a37-46ff-969d-76cba89ecd1d"), uid: BinData(0, A6653754954E376BB727538E13AB142D86A1278B7DD827C77241907FB377D777) } } } ], $db: "admin" }
具体的错误截图如下:
从这个图中可以看出,正常的完整备份已恢复OK,只是在恢复备份过程中产生的oplog的备份时报错,replaying oplog产生Error。
MongoDB oplog的相关知识可参照 博客 https://www.cnblogs.com/xuliuzai/p/9832333.html 和 https://www.cnblogs.com/xuliuzai/p/9917137.html 上相关介绍。
二 . 错误分析
从报错信息 :not authorized on admin to execute command ,可以初步判断是账号权限的问题。
回头看下,检查下我们的新MongoDB实例的设置,已在还原实例上设置了 root 权限的账号,并且 登入验证,账号是没有问题的。
执行的还原命令 也是用的root权限的账号,也是没有问题的啊。
这就很奇怪!印象中,在之前的版本中没有遇到过类似的错误。
这时想到去查看mongodb的运行log,说不定有相关的错误信息。
在log中,发现紧挨着 这个报错信息的地方还有一个错误 信息
2019-01-21T14:45:03.076+0800 W ACCESS [conn7] Could not insert user testroot@admin in _mergeAuthzCollections command: DuplicateKey: User "testroot@admin" already exists。
而log错误信息中的testroot正是我们 在 还原实例 和代还原实例上都拥有root角色权限的账号。
所以,问题基本可以定位到了:就是还原实例上已经有了testroot账号,所以在还原admin 数据库时,还原库上的testroot账号insert不进来,而还原oplog备份需要原来的账号信息。
怎么验证这个推断是否正确呢?最直接的办法就是 将还原数据库所在的实例设置为免密登入,再进行验证即可:
step 1 ,将新实例(还原的实例)服务关闭;
step 2,将mongodb 下的数据文件删除 ,logs文件保留。
step 3,将conf 配置文件中auth=true 注释掉
step 4,重启mongodb服务。
在此执行还原,执行OK,不再报错。
2019-01-21T16:15:00.234+0800 replaying oplog
......
2019-01-21T16:15:00.364+0800 done
注意:在完整还原的基础上,再逐一还原oplog时也会报类似错误( 即增量备份还原也有类似错误 ),所以建议数据库完全还原完后再设置登入验证。
三 .解决方案
方案1. 如上文的测试一样,将新的MongoDB实例设置为免密登入,恢复后马上设置验证登入,即配置文件中添加auth=true,然后,重启服务( 推荐,但还原后一定要设置密码方式登入 。)。
方案2. 待还原的实例和新的实例,两者的root权限的账户不要命名一样,这样也可以避免 DuplicateKey,影响admin数据库的账号还原。
本文版权归作者所有,未经作者同意不得转载 , 谢谢配合!!!
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 深度备份还原工具 V1.0 正式发布 — 备份还原,安全可靠
- 使用 nltk 词形还原
- Antsword流量分析与还原
- Redis安全以及备份还原
- Oracle RMAN备份与还原
- 学习bootstrap和jquery框架还原网页
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Head First HTML5 Programming(中文版)
埃里克•弗里曼 (Eric Freeman)、伊丽莎白•罗布森 (Elisabeth Robson) / 中国电力出版社 / 2012-9 / 78.00元
《Head First HTML5 Programming(中文版)》内容简介:你可能想创建具有动态性、交互性、包含丰富数据而且互连的Web页面。先等一下,Web页面?为什么不用HTML5创建成熟的Web应用呢?另外,为什么不使用现代技术,像在移动设备上一样轻松地应用到桌面浏览器呢?当然,你肯定希望使用最新的HTML5技术来完成,比如地理定位、视频、2D绘制、Web存储、Web工作线程等,是不是?......一起来看看 《Head First HTML5 Programming(中文版)》 这本书的介绍吧!
JS 压缩/解压工具
在线压缩/解压 JS 代码
HEX HSV 转换工具
HEX HSV 互换工具