故障案例--mongodb副本集write concern为majority的一个坑

故障现象:一个副本集下四个节点,一个primary,两个Secondary,一个arbiter,其中将一个Secondary关闭后,修改primary节点的密码,这时修改命令会卡住直到超时失败。udb-aqmp5a:PRIMARY> db.changeUserPassword("root","123123")2016-08-23T17:05:30.879+0800 E QUERY
摘要由CSDN通过智能技术生成

故障现象:

一个副本集下四个节点,一个primary,两个Secondary,一个arbiter,其中将一个Secondary关闭后,修改primary节点的密码,这时修改命令会卡住直到超时失败。

udb-aqmp5a:PRIMARY> db.changeUserPassword("root","123123")
2016-08-23T17:05:30.879+0800 E QUERY    Error: Updating user failed: timeout
    at Error (<anonymous>)
    at DB.updateUser (src/mongo/shell/db.js:1152:11)
    at DB.changeUserPassword (src/mongo/shell/db.js:1156:10)
    at (shell):1:4 at src/mongo/shell/db.js:1152

故障原因:

查看mongodb的错误日志

2016-08-19T12:37:08.897+0800 W NETWORK  [ReplExecNetThread-12] Failed to connect to 10.19.66.62:27017, reason: errno:115 Operation now in progress
2016-08-19T12:37:08.897+0800 I REPL     [ReplicationExecutor] Error in heartbeat request to 10.19.66.62:27017; Location18915 Failed attempt to connect to 10.19.66.62:27017; couldn't connect to server 10.19.66.62:27017 (10.19.66.62), connection attempt failed
2016-08-19T12:37:15.524+0800 I COMMAND  [conn601] command admin.$cmd command: getLastError { getLastError: 1, w: "majority", wtimeout: 30000.0 } ntoreturn:1 keyUpdates:0 writeConflicts:0 numYields:0 reslen:270 locks:{ Global: { acquireCount: { r: 3, w: 3 } }, Database: { acquireCount: { w: 1, W: 2 } }, Collection: { acquireCount: { w: 2 } }, oplog: { acquireCount: { w: 1 } } } 30001ms

可以看到writeconcern为write majority,这种情况下修改密码不符合“大多数”原则。可能是majority在计算时需要符合"大多数数据节点"的需求,包括了仲裁节点,但是如果有仲裁节点存在,因为它无法实际写入数据,所以它却永远站在对立面。


故障复现:

准备条件:一个primary,两个Secondary,一个arbiter,并关闭其中一台Secondary

方法1  采用普通写入,比如往一个db写入一条数据,

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值