MongoDB 使用教程
创始人
2024-05-31 03:41:15
0

一、配置和维护

1、运行时数据库配置

这命令行和配置 文件接口提供 MongoDB 具有大量选项和设置的管理员 控制数据库系统的操作。本文档 提供了常见配置和示例的概述 常见用例的最佳实践配置。

虽然两个接口都提供对相同选项集合的访问 和设置,本文档主要使用配置文件 接口。

  • 如果你已安装的 MongoDB使用包管理器 例如在 Linux 或 macOS 上,或者使用 Windows上的MSI安装程序,默认yumaptbrew配置文件已作为您的一部分提供 安装:

平台

方法

配置文件

Linux目录

apt, yum, or zypper Package Manager

/etc/mongod.conf

苹果操作系统

brew包管理器

/usr/local/etc/mongod.conf(在英特尔处理器上),或

/opt/homebrew/etc/mongod.conf(在苹果 M1 处理器)

窗户

MSI Installer

\bin\mongod.cfg

  • 如果通过下载的TGZ或ZIP文件安装MongoDB,则需要创建自己的配置文件。这个基本示例配置是一个很好的开始。

对于 Linux 或 macOS 上 MongoDB 的软件包安装,一个 使用此默认配置文件的初始化脚本也是 提供。此初始化脚本可用于启动mongod在这些平台上,以下列方式:

在使用systemd-init系统(systemctl命令)的Linux系统上:

sudo systemctl start mongod

在使用SystemV init init system(服务命令)的Linux系统上:

sudo service mongod start

如果使用TGZ或ZIP文件安装MongoDB,则需要创建自己的配置文件。本文档稍后将提供基本示例配置。一旦创建了配置文件,就可以通过使用mongod的--config或-f选项,使用该配置文件启动MongoDB实例。例如,在Linux上:

mongod --config /etc/mongod.conf
mongod -f /etc/mongod.conf

修改系统上mongod.conf文件中的值,以控制数据库实例的配置。

1.1配置数据库

请考虑以下基本配置:

processManagement:fork: true
net:bindIp: localhostport: 27017
storage:dbPath: /var/lib/mongo
systemLog:destination: filepath: "/var/log/mongodb/mongod.log"logAppend: true
storage:journal:enabled: true

对于大多数独立服务器,这是一个足够的基本配置。它做了几个假设,但考虑以下解释:

  • fork为true,这为mongod启用了守护程序模式,将MongoDB与当前会话分离(即“fork”),并允许您将数据库作为常规服务器运行。

  • bindIp是localhost,这迫使服务器仅侦听本地主机IP上的请求。仅绑定到应用程序级系统可以通过系统网络过滤(即“防火墙”)提供的访问控制访问的安全接口。

  • 端口为27017,这是数据库实例的默认MongoDB端口。MongoDB可以绑定到任何端口。您也可以使用网络过滤工具根据端口过滤访问。

  • 安静是真的。这将禁用输出/日志文件中除最关键项之外的所有项,不建议用于生产系统。如果设置了此选项,则可以在运行时使用setParameter修改此设置。

  • dbPath是/var/lib/mongo,它指定MongoDB存储数据文件的位置。

如果使用包管理器(如yum或apt)在Linux上安装MongoDB,则MongoDB安装附带的/etc/mongod.conf文件将根据Linux发行版设置以下默认dbPath:

Platform

Package Manager

Default dbPath

RHEL / CentOS and Amazon

yum

/var/lib/mongo

SUSE

zypper

/var/lib/mongo

Ubuntu and Debian

apt

/var/lib/mongodb

macOS

brew

/usr/local/var/mongodb

mongod运行时使用的用户帐户需要对该目录进行读写访问。

  • systemLog.path是/var/log/mongodb/mongod.log,mongod将在其中写入输出。如果不设置此值,mongod将所有输出写入标准输出(例如stdout)

  • logAppend为true,这确保mongod不会在服务器启动操作后覆盖现有日志文件。

  • storage.journal.enabled为true,启用日志记录。日志记录可确保单实例写入持久性。默认情况下,mongod的64位版本支持日志记录。因此,此设置可能是冗余的。

给定默认配置,其中一些值可能是多余的。然而,在许多情况下,明确说明配置会增加整个系统的可理解性。

1.2安全注意事项

以下配置选项可用于限制对mongod实例:

net:bindIp: localhost,10.8.0.10,192.168.4.24,/tmp/mongod.sock
security:authorization: enabled

net.bindIp

此示例为bindIp选择:

  • localhost、本地主机接口;

  • 10.8.0.10,通常用于本地的私有 IP 地址 网络和 VPN 接口;

  • 192.168.4.24,通常用于 本地网络;和

  • /tmp/mongod.sock,Unix 域套接字路径。

因为生产 MongoDB 实例需要可从 多个数据库服务器,将MongoDB绑定到很重要 可从应用程序访问的多个接口 服务器。同时,限制这些接口也很重要 到在网络层控制和保护的接口。

security.authorization

将此选项设置为true将启用MongoDB中的授权系统。如果启用,则需要首次通过本地主机接口连接登录以创建用户凭据。

1.3复制和分片配置

复制配置

副本集配置很简单,而且只有 要求replSetName具有一致的值 在集合的所有成员中。请考虑以下事项:

replication:replSetName:set0

对集合使用描述性名称。配置后,使用mongosh将主机添加到副本集。

要启用身份验证,请为副本集用密钥文件,添加以下内容keyFile选项 [1]:

security:keyFile:/srv/mongodb/keyfile

设置keyFile启用身份验证和 指定副本集成员在以下情况下要使用的密钥文件 相互验证。

分片配置

分片需要mongod具有不同mongod的配置配置服务器和碎片.配置服务器存储群集的 元数据,而分片存储数据。

配置配置服务器mongod实例,在 配置文件,为configsvrsharding.clusterRole设置。

在 3.4 版更改: 从 3.4 版开始,MongoDB 删除了对镜像 配置服务器并且配置服务器必须是 部署为副本集。

 sharding:clusterRole: configsvrnet:bindIp: 10.8.0.12port: 27001
replication:replSetName: csRS

若要将配置服务器部署为副本集,配置服务器必须运行 这连线虎存储引擎.Initiate这 副本集和添加成员。

配置分片mongod实例,为shardsvrsharding.clusterRole设置,如果 作为副本集运行,副本集名称:

sharding:clusterRole: shardsvr
replication:replSetName: shardA

如果作为副本集运行,initiate这 分片副本集并添加成员。

对于路由器(即mongos),至少配置一个mongos使用以下过程设置:

sharding:configDB: csRS/10.8.0.12:27001

您可以指定配置服务器副本集的其他成员 以逗号分隔列表的形式指定主机名和端口 在副本集名称之后。

1.4在同一系统上运行多个数据库实例

在许多情况下,运行多个实例mongod安娜 不建议使用单一系统。在某些类型的部署 [2] 和出于测试目的,您可能需要运行超过 一mongod在单个系统上。

在这些情况下,请使用

基本配置

对于每个 实例,但请考虑以下配置值:

storage:dbPath: /var/lib/mongo/db0/
processManagement:pidFilePath: /var/lib/mongo/db0.pid

这dbPath值控制mongod实例的数据目录。确保每个数据库 具有独特且标记良好的数据目录。这pidFilePath控制位置mongod过程 它所在的地方进程标识 (PID)文件。由于这跟踪了特定的mongod文件,文件是唯一且良好的至关重要 标记以方便启动和停止这些进程。

创建其他初始化脚本和/或 调整现有的MongoDB配置和初始化脚本 需要控制这些过程。

[2]单租户系统固态硬盘或其他高 性能磁盘可以提供可接受的性能级别 倍数mongod实例。此外,您可能会发现 具有小型工作集的多个数据库可以接受运行 在单个系统上。

1.5诊断配置

以下配置选项控制各种mongod用于诊断目的的行为:

  • operationProfiling.mode设置数据库探查器水平。默认情况下,探查器不处于活动状态 因为探查器本身可能对性能产生影响。 除非启用此设置,否则不会分析查询。

  • operationProfiling.slowOpThresholdMs配置 阈值,用于确定查询是否“慢” 日志记录系统和分析器.默认值为 100 毫秒。设置 如果日志记录系统和数据库探查器执行 不返回有用的结果或设置为更高的值以仅记录 运行时间最长的查询。

从版本 4.2 开始,辅助 现在副本集的成员记录操作日志条目比慢速操作花费更长的时间 申请门槛。这些缓慢的oplog消息:

  • 为辅助数据库记录在diagnostic log.

  • 记录在REPL带有文本的组件。

applied op:  took ms
  • 不依赖于日志级别(在系统或组件上) 水平)

  • 不要依赖于性能分析级别。

  • 可能受以下因素影响slowOpSampleRate, 根据您的MongoDB版本:

  • 在MongoDB 4.2中,这些缓慢的操作日志条目不是 受slowOpSampleRate. MongoDB记录所有缓慢的oplog条目,无论采样率如何。

  • 在 MongoDB 4.4 及更高版本中,这些缓慢的 oplog 条目受到以下因素的影响 这slowOpSampleRate.

性能分析器不会捕获慢速操作日志条目。

  • systemLog.verbosity控制日志记录输出量mongod写入日志。仅在以下情况下使用此选项 遇到正常日志记录中未反映的问题 水平。

2、管理mongod流程

MongoDB作为标准程序运行。你可以从 通过发出命令行mongod命令和指定 选项。有关选项列表,请参阅mongod参考。MongoDB也可以作为Windows服务运行。

2.1启动进程mongod

默认情况下,MongoDB在端口27017上侦听来自客户端的连接,并将数据存储在/data/db目录中。

在Windows上,此路径位于启动MongoDB的驱动器上。例如,如果未指定--dbpath,则在C:\驱动器上启动MongoDB服务器会将所有数据文件存储在C:\data\db中。

要使用所有默认值启动MongoDB,请在系统shell中发出以下命令:

mongod

指定数据目录

如果需要帮助,mongod将数据文件存储在其他路径 比您可以指定/data/dbdbPath.这dbPath在开始之前必须存在mongod.如果它 不存在,请创建目录和权限,以便mongod可以读取数据并将其写入此路径。欲了解更多信息 有关权限的信息,请参阅安全操作 文档。

要指定dbPath为mongod用作数据 目录,使用--dbpath选择。这 以下调用将启动mongod实例和存储 路径中的数据/srv/mongodb

mongod --dbpath /srv/mongodb/

指定 TCP 端口

只有一个进程可以侦听网络上的连接 一次界面。如果运行多个mongod过程 在单台计算机上,或者具有必须使用此端口的其他进程, 必须为每个端口分配不同的端口来侦听客户端 连接。

要指定mongod的端口,请在命令行上使用--port选项。以下命令在端口12345上启动mongod侦听:

mongod --port 12345

尽可能使用默认端口号,以避免混淆。

开始mongod作为守护程序

要将mongod进程作为守护进程(即fork)运行,并将其输出写入日志文件,请使用--fork和--logpath选项。必须创建日志目录;然而,如果日志文件不存在,mongod将创建日志文件。

以下命令将mongod作为守护程序启动,并将日志输出记录到/var/log/mongodb/mongod.log。

mongod --fork --logpath /var/log/mongodb/mongod.log

2.2停止进程mongod

在干净关机中mongod完成所有挂起 操作,将所有数据刷新到数据文件,并关闭所有数据 文件。其他关闭是不干净的,可能会损害 数据文件。

为确保干净关机,请始终关机mongod使用以下方法之一的实例:

用shutdownServer()

关闭mongod从mongosh用 这db.shutdownServer()方法如下:

use admin
db.shutdownServer()

对于启用了授权的系统,用户只能在未启用身份验证的系统上通过管理员数据库或本地主机接口进行身份验证时发出db.shutdownServer()。

用--shutdown

仅在 Linux 上受支持。在命令行中,关闭mongod使用--shutdown选择:

mongod --shutdown

用CTRL-C

当在交互模式下运行mongod实例时(即没有--fork),发出Control-C以执行干净的关闭。

使用kill

仅在Linux和macOS上受支持。在命令行中,使用以下命令之一关闭特定的mongod实例:

kill 
kill -2 

SIGTERM和副本集

如果主副本集收到 ,则主副本集将尝试 在关闭之前下台。SIGTERM

  • 如果降级成功,则实例不会在随后的 选举新的初选,并继续关闭。

  • 如果降级失败,实例将继续关闭。

2.3 排查进程问题mongod

生成回溯

从运行在Linux上的MongoDB 4.4开始

  • 当mongod和mongos进程收到SIGUSR2信号时,回溯详细信息将添加到每个进程线程的日志中。

  • 回溯详细信息显示了进程的函数调用,可用于诊断,并在需要时提供给MongoDB支持。

回溯功能可用于以下架构:

  • x86_64

  • arm64(从 MongoDB 4.4.15、5.0.10 和 6.0 开始)

向正在运行的人发出信号SIGUSR2mongod进程中,使用以下命令:

kill -SIGUSR2 

生成的回溯数据被写入mongod日志文件,配置为--logpath。

2.4停止副本集

程序

如果mongod是主要在一个副本集,为此关闭过程mongod实例具有 以下步骤:

  • 检查最新情况次级是。

  • 如果主数据库的 10 秒内没有辅助数据库,mongod将返回一条消息,指出它不会关闭。 您可以通过shutdown命令参数以等待辅助节点赶上。timeoutSecs

  • 如果在主数据库的 10 秒内有辅助数据库,则主数据库 将下台,等待次级追上来。

  • 60 秒后或辅助设备赶上后,主数据库 将关闭。

强制副本集关闭

如果没有最新的辅助数据库,并且您希望关闭主数据库 向下,发出shutdown带有参数的命令,如下所示forcemongosh操作:

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

要在指定的秒数内持续检查辅助设备(如果没有立即更新的),请使用timeoutSecs参数发出关机命令。如果没有立即更新的备份,MongoDB将在指定的秒数内继续检查备份。如果任何辅助设备在分配的时间内赶上,主设备将关闭。如果没有辅助设备赶上,它将不会关闭。

以下命令在timeoutSecs设置为5时发出关机:

db.adminCommand({shutdown : 1, timeoutSecs : 5})

或者,您可以将参数与timeoutSecsdb.shutdownServer()方法:

db.shutdownServer({timeoutSecs : 5})

上一篇:05-CSS

下一篇:[Spring Boot] 配置文件

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...