Stories

Detail Return Return

【趙渝強老師】管理MongoDB的運行 - Stories Detail

MongoDB提供了mongod命令用於啓動MongoDB服務器端;而停止MongoDB服務器卻可以通過幾種不同的方式完成。下面分別進行介紹。

一、【實戰】啓動MongoDB服務器

通過執行下面的語句可以查看啓動MongoDB服務器的幫助信息:

mongod --help

# 輸出的信息如下:
......
Storage options:
  --storageEngine arg    What storage engine to use - defaults 
                        to wiredTiger if no data files present
  --dbpath arg            Directory for datafiles - defaults to 
                        /data/db
  --directoryperdb      Each database will be stored in a 
                        separate directory
......

MongoDB除了可以將啓動的配置參數寫入配置文件以外,還可以直接寫到mongod的啓動命令中。視頻講解如下:
https://www.bilibili.com/video/BV1LhmMYrEMA/?aid=113317377023...

下面通過具體的步驟來進行演示。
(1)創建一個新的目錄/data/db2用於存放MongoDB數據文件。

mkdir -p /data/db2

(2)使用mongod命令啓動MongoDB服務器。

mongod --dbpath /data/db2/ --port 1234 --fork \
--logpath /data/db2/db2.log --directoryperdb

# 其中:
# --port:指定MongoDB監聽的端口。
# --fork:指定MongoDB服務器將運行在後台。
# --logpath:指定MongoDB輸出的日誌文件。
# --directoryperdb:指定將不同的數據庫存放在單獨的目錄下以方便管理。

# 輸出的信息如下:
about to fork child process, waiting until server is ready for connections.
forked process: 28215
child process started successfully, parent exiting

(3)使用mongoshell登錄MongoDB,並創建一個新的數據庫和集合。

mongo --port 1234
> use demo
> db.test1.insert({_id:'user001',name:'Tom'})

(4)查看目錄/data/db2下的目錄和文件。

tree /data/db2

# 輸出的信息如下:
/data/db2
├── admin
│   ├── collection-0--1928158110699126729.wt
│   └── index-1--1928158110699126729.wt
├── config
│   ├── collection-4--1928158110699126729.wt
│   ├── index-5--1928158110699126729.wt
│   └── index-6--1928158110699126729.wt
├── db2.log
├── demo
│   ├── collection-7--1928158110699126729.wt
│   └── index-8--1928158110699126729.wt
├── diagnostic.data
│   ├── metrics.2022-04-05T07-48-58Z-00000
│   └── metrics.interim
├── journal
│   ├── WiredTigerLog.0000000001
│   ├── WiredTigerPreplog.0000000001
│   └── WiredTigerPreplog.0000000002
├── local
│   ├── collection-2--1928158110699126729.wt
│   └── index-3--1928158110699126729.wt
├── _mdb_catalog.wt
......

# 提示:由於在啓動MongoDB服務器時使用了--directoryperdb參數,
# 因此在第(3)步中創建的demo數據庫將單獨存放一個目錄。

二、【實戰】停止MongoDB服務器

停止MongoDB數據庫服務器可以通過三種不同的方式來完成。視頻講解如下:
https://www.bilibili.com/video/BV1zHmMYmEdg/?aid=113317410643...

下面通過具體的示例來進行演示。

(方式1)在MongoDB服務器上執行shutdownServer命令時。

> use admin
> db.shutdownServer()

# 提示:使用shutdownServer關閉數據庫服務器,MongoDB會在關閉前先等待
# MongoDB集羣中的從節點與主節點保持同步,這會將數據回滾的可能性降到最低。

(方式2)使用命令db.adminCommand強制關閉主節點。

> db.adminCommand({"shutdown":1,"force":true})

# 這時會打印下面的錯誤信息,該信息表示數據庫已經停止。
uncaught exception: Error: error doing query: failed: 
network error while attempting to run command 'shutdown' on host '127.0.0.1:1234'  :
DB.prototype.runCommand@src/mongo/shell/db.js:188:19
DB.prototype.adminCommand@src/mongo/shell/db.js:200:12
@(shell):1:1

(方式3)使用操作系統的kill命令關閉MongoDB服務器。

kill -2 PID
# 其中:PID是MongoDB的服務器進程號。

以上三種方式都能夠安全地停止MongoDB的運行。

user avatar www-htz-pw Avatar shuyixiaobututou Avatar actionopensource Avatar yishenjiroudekaixinguo Avatar tdengine Avatar
Favorites 5 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.