MongoDB進(jìn)程 kill -9之后導(dǎo)致服務(wù)起不來了
[root@yaong etc]# systemctl status mongod.service
● mongod.service - MongoDB Database Server
......
Process: 9526 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=14)
......
Aug 19 10:26:12 yaong systemd[1]: mongod.service: control process exited, code=exited status=14
......
從網(wǎng)上找了找相關(guān)資料,大致說法是:mongo內(nèi)存管理很特殊,kill -9 很可能影響存庫操作
如果不是在寫磁盤的時候宕掉,可以通過repair命令進(jìn)行修復(fù),會丟失最后一次寫磁盤的時刻到宕掉時刻期間的數(shù)據(jù)
如果趕上寫磁盤的時候進(jìn)程宕掉,repair也不能恢復(fù)數(shù)據(jù),很可能會丟失掉全部數(shù)據(jù)
嘗試進(jìn)行修復(fù)
[root@yaong etc]# /usr/bin/mongod -f /etc/mongod.conf --repair
about to fork child process, waiting until server is ready for connections.
forked process: 9575
child process started successfully, parent exiting
再次查看服務(wù)狀態(tài)
[root@yaong etc]# systemctl status mongod.service
● mongod.service - MongoDB Database Server
Active: failed (Result: exit-code) since Thu 2021-08-19 10:27:05 CST; 6s ago
Process: 9618 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=1/FAILURE)
......
Aug 19 10:27:05 yaong systemd[1]: mongod.service: control process exited, code=exited status=1
......
燃鵝還是存在其他問題,鑒于庫里沒有存啥數(shù)據(jù),統(tǒng)統(tǒng)干掉,重頭再來
rm -rf /var/lib/mongo/*
rm -rf /var/log/mongodb/*
cat /var/run/mongodb/mongod.pid
rm -rf /data/db/mongod.lock
rm -rf /var/lib/mongo/mongod.lock
再次啟動服務(wù),服務(wù)就起來了
[root@yaong mongodb]# systemctl restart mongod
[root@yaong mongodb]# systemctl status mongod.service
● mongod.service - MongoDB Database Server
Active: active (running) since Thu 2021-08-19 10:47:14 CST; 3s ago
Docs: https://docs.mongodb.org/manual
Process: 10836 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=0/SUCCESS)
......
Main PID: 10839 (mongod)
CGroup: /system.slice/mongod.service
└─10839 /usr/bin/mongod -f /etc/mongod.conf
[root@yaong etc]# ps -ef | grep mongo
mongod 10839 1 0 10:47 ? 00:00:22 /usr/bin/mongod -f /etc/mongod.conf
root 15949 1627 0 12:25 pts/0 00:00:00 grep --color=auto mongo
至此,提醒大家停止mongo進(jìn)程一定要謹(jǐn)慎,推薦三種較穩(wěn)妥的方式:
交互模式下:
use admin
db.shutdownServer()
mongo命令:
mongod --shutdown
系統(tǒng)命令
kill
除了服務(wù)啟動模式,還可以命令行后臺啟動
mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork
[root@yaong etc]# ps -ef | grep mongo
root 10222 1 5 10:37 ? 00:00:01 mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork
root 10281 1627 0 10:38 pts/0 00:00:00 grep --color=auto mongo
與之對應(yīng)的是停止進(jìn)程的命令
mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --shutdown
produced by yaong !