正确关闭mongodb 防止数据丢失
· 阅读需 2 分钟
mongodb不正确关闭会导致非常严重的问题,
比如 使用 kill -9 pid 方式来关闭,如果没有开启日志的情况下,可能造成数据丢失,数据库瘫痪.
运行错误:Error: error doing query: failed
登录Mongodb数据库后关闭服务.
>use admin;
switched to db admin
>db.shutdownServer();
Tue Nov 18 11:03:24.164 DBClientCursor::init call() failed
server should be down...
Tue Nov 18 11:03:24.169 trying reconnect to 127.0.0.1:27017
Tue Nov 18 11:03:24.171 reconnect 127.0.0.1:27017 failed couldn't connect to server 127.0.0.1:27017
> exit
bye
另外一种安全关闭方法:
kill -15,killall mongod
ok,mongodb 服务成功关闭.
为什么不能随手 kill -9
因为 kill -9 属于强制终止,进程没有机会执行自己的收尾逻辑。对数据库这种需要把内存状态、日志和磁盘文件保持一致的服务来说,这种粗暴终止方式非常危险。看起来只是“快一点关掉”,实际上可能把恢复成本推到后面。
更值得养成的习惯
数据库服务类程序,优先考虑它自己提供的正常关闭方式;实在不行,再退到较温和的信号。真正成熟的运维习惯,不是图省事把进程直接打掉,而是尽量让服务按它设计的方式完整退出。
