【赵渝强老师】管理MongoDB的运行

简介: MongoDB使用`mongod`命令启动服务器。实战中,创建目录`/data/db2`存放数据文件,并通过命令`mongod --dbpath /data/db2/ --port 1234 --fork --logpath /data/db2/db2.log --directoryperdb`启动服务。登录MongoDB后可创建数据库和集合。停止MongoDB服务器有三种方式:1) 使用`db.shutdownServer()`;2) 使用`db.adminCommand({shutdown:1, force:true})`强制关闭;3) 使用操作系统的`kill -2 PID`命令。

副本_副本_副本_副本_副本_副本_副本_副本_副本_副本_副本_副本_Oracle-课程封面__2025-03-08+08_58_45.png

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的启动命令中。视频讲解如下:


下面通过具体的步骤来进行演示。


(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数据库服务器可以通过三种不同的方式来完成。视频讲解如下:


下面通过具体的示例来进行演示。


(方式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的运行。







相关文章
|
5月前
|
存储 NoSQL 前端开发
【赵渝强老师】MongoDB的分布式存储架构
MongoDB分片通过将数据分布到多台服务器,实现海量数据的高效存储与读写。其架构包含路由、配置服务器和分片服务器,支持水平扩展,结合复制集保障高可用性,适用于大规模生产环境。
436 1
|
存储 NoSQL MongoDB
【赵渝强老师】MongoDB写入数据的过程
在MongoDB数据更新时,WiredTiger存储引擎通过预写日志(Journal)机制先将更新写入日志文件,再通过检查点操作将日志中的操作刷新到数据文件,确保数据持久化和一致性。检查点定期创建,缩短恢复时间,并保证异常终止后可从上一个有效检查点恢复数据。视频讲解及图示详细说明了这一过程。
335 23
【赵渝强老师】MongoDB写入数据的过程
|
存储 NoSQL MongoDB
【赵渝强老师】MongoDB的MMAPv1存储引擎
在MongoDB 3.2版本之前,默认使用MMAPv1存储引擎。MMAPv1包括Database、Namespace、数据文件、Extent和Record等组件。每个Database由名称空间文件和数据文件组成,数据文件按编号递增,大小从64MB到2GB。每个数据文件被划分为多个Extent,每个Extent包含多个Record,对应MongoDB中的文档。通过一个示例展示了如何配置和使用MMAPv1存储引擎。
264 0
|
存储 监控 NoSQL
【赵渝强老师】MongoDB文档级别的并发控制
MongoDB使用WiredTiger存储引擎在文档级别进行并发控制,允许多个写操作同时修改不同文档,但对同一文档的修改需序列化执行。引擎采用乐观锁和意向锁机制处理冲突。通过视频讲解、插入大量文档示例及使用`mongotop`和`db.serverStatus()`命令,演示了如何监控MongoDB的锁信息和读写统计,展示了数据库和集合级别的写锁情况。
352 29
|
存储 NoSQL 安全
【赵渝强老师】MongoDB的Journal日志
MongoDB通过Journal日志保证数据安全,记录检查点后的更新,确保数据库从异常中恢复到有效状态。每个Journal文件100M,存于--dbpath指定的journal子目录。默认已启用Journal日志,可通过--journal参数手动启用。WiredTiger存储引擎使用128KB内存缓冲区,异常关机时可能丢失最多128KB的数据。视频讲解和详细步骤参见附录。
403 17
|
存储 NoSQL MongoDB
【赵渝强老师】MongoDB逻辑存储结构
MongoDB的逻辑存储结构由数据库(Database)、集合(Collection)和文档(Document)组成,形成层次化数据模型。用户通过mongoshell或应用程序操作这些结构。视频讲解及结构图详见下文。
386 3
|
存储 NoSQL 关系型数据库
【赵渝强老师】MongoDB的存储结构
MongoDB 是一个可移植的 NoSQL 数据库,支持跨平台运行。其逻辑存储结构包括数据库、集合和文档,而物理存储结构则由命名空间文件、数据文件和日志文件组成。视频讲解和示意图进一步解释了这些概念。
490 5
|
NoSQL MongoDB 数据库
python3操作MongoDB的crud以及聚合案例,代码可直接运行(python经典编程案例)
这篇文章提供了使用Python操作MongoDB数据库进行CRUD(创建、读取、更新、删除)操作的详细代码示例,以及如何执行聚合查询的案例。
388 6
|
存储 缓存 NoSQL
【赵渝强老师】MongoDB的WiredTiger存储引擎
MongoDB WiredTiger存储引擎自3.2版本起成为默认选择,提供文档级别的并发控制、检查点、数据压缩和本地加密等功能。本文详细介绍了WiredTiger的并发控制机制、预写日志与检查点、内存使用、数据压缩及磁盘空间回收等特性。
643 0
|
存储 NoSQL MongoDB
【赵渝强老师】MongoDB的In-Memory存储引擎
MongoDB的In-Memory存储引擎将数据存储在内存中,显著减少查询延迟,提高性能。该引擎不会将数据持久化到硬盘,仅在内存中存储,因此重启后数据会丢失。本文通过创建目录、配置文件、启动服务、插入数据和查询等步骤,详细演示了如何使用In-Memory存储引擎。
278 0

推荐镜像

更多