mongodb數據庫的啓動和停止

        數據庫的啓動和停止是數據庫最基本的操作,也是數據庫能夠提供服務和被連接管理的前提條件。不同的數據庫啓動和停止的方式有一些差異,但也有相同之處,啓動和關閉也必定會和數據庫的進程有關。


        在oracle數據庫中,數據庫的啓動和停止都是分三個過程的,正常的啓動方法都是在sqlplus中執行startup命令啓動,或者shutdown immediate命令關閉數據庫;

在一些特殊的情況下,會通過shutdown abort或者kill後臺進程的方式強制關閉數據庫;


        在MySQL數據庫中,數據庫的啓動也是通過mysqld或者mysqld_safe命令加配置文件的方式進行啓動,關閉時使用mysqladmin工具加shutdown選項的命令進行mysql數據庫的正常關閉;

        通過確認kill進程的方式與shutdown命令的方式停止過程相同,也可以通過kill進程的方式實現mysql的關閉; 



        對於MongoDB數據庫的啓動和停止,可以通過下面的方法進行研究:


啓動MongoDB

        進入MongoDB安裝目錄

# cd mongodb-linux-x86_64-2.*.*

        執行下面的命令啓動MongoDB

# ./bin/mongod --port 33334 --fork --logpath data/log/mongodb.log --dbpath data/db

        啓動相關參數說明如下:

--port 啓動端口號

--fork 以守護進行方式啓動

--logpath mongodb 日誌輸出路徑

--dbpath mongodb 數據文件路徑

        其他選項可以執行命令查看:   ./bin/mongod --help


操作演示:

        編寫MongoDB啓動文件:

        vim start.sh   腳本內容如下:

cd mongodb-linux-x86_64-2.*.*

./bin/mongod --port 33334 --fork --logpath data/log/mongodb.log --dbpath data/db

        停止腳本啓動:

chmod +x start.sh

./start.sh

        執行結果出現  start sucessful ,說明mongod啓動完成,可以通過下面兩種方式確認MongoDB啓動過程:

        確認進程:

$ ps -axu | grep mongo

        確認日誌:

cd /data/log

tail -f mongodb.log



安全停止MongoDB進程

        向MongoDB進程發送信號用於停止MongoDB,如果要安全停止可以有兩種信號:sigint 信號,或者 sigterm信號

        如何停止:

$ kill -2 8888

其中 8888 爲mongod進程號 ,該進程號可以通過 ps -axu |grep mongo 獲取;

-2 表示向mongod進程發送sigint信號

$ kill -4 8888

其中 8888 爲mongod進程號 ,該進程號可以通過 ps -axu |grep mongo 獲取;

-4 表示向mongod進程發送sigterm信號



        上面2種方式如何做到停止安全

        mongod進程收到sigint信號或者sigterm信號,會做一些處理:

關閉所有打開的連接;

將內存數據強制刷新到磁盤;

當前的操作執行完畢;

。。。。

安全停止


        除了上面兩種直接針對進程的停止方式,還有使用mongod命令shutdown的安全停止方式:

> use admin;                     --使用管理員數據庫

> db.shutdownServer();


不安全的停止方式有

$ kill -9 8888

其中 8888 爲mongod進程號 ,該進程號可以通過 ps -axu |grep mongo 獲取;

-9 表示向mongod進程發送sigkill信號,MongoDB直接停止,不會做一些相關處理;

數據庫直接關閉;

數據丟失;

數據文件損壞;

修復數據庫(成本高,有風險)


        通過上面的分析可以看出,MongoDB的啓動過程和其他數據庫類似,主要是校驗數據庫文件的一致性,一般不會有太多風險,只要數據庫能夠正常啓動即可;

        對於MongoDB的停止,可以通過mongo工具中的shutdown命令安全停止,也可以在查詢到MongoDB進程號後,使用kill -2,kill -4 兩種方式實現相同的安全停止方式;

        如果對MongoDB使用kill -9的方式,則是不安全的停止方式,有可能造成各種問題;

        而安全停止和不安全停止的區別在於:安全停止在發出停止命令後,數據庫在後臺會進行一系列的操作來保證數據庫最終是一致性關閉;

        但如果是不安全停止,則數據庫進程直接沒有,數據庫不會再後臺做一系列的操作保證一致性關閉,下次啓動時,就有可能發生各種問題。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章