参考 > 参考 > MongoDB软件包组件 > mongos
对于分片群集,mongos
实例提供客户端应用程序和分片群集之间的接口。该mongos实例路线查询和写入操作的碎片。从应用程序的角度来看,一个mongos实例的行为与任何其他MongoDB实例相同。
也可以看看
mongos¶从4.2版开始
--tlsClusterCAFile/ net.tls.clusterCAFile。(也适用于3.4.18 +,3.6.9 +,4.0.3 +)--help, -h¶返回有关mongos选项和用法的信息。
--version¶返回mongos版本号。
--config <filename>, -f <filename>¶指定运行时配置选项的配置文件。配置文件是mongos运行时配置的首选方法 。这些选项等效于命令行配置选项。有关更多信息,请参见配置文件选项。
确保配置文件使用ASCII编码。该mongos 实例不支持非ASCII编码,包括UTF-8的配置文件。
--configExpand <none|rest|exec>¶默认值:无
4.2版中的新功能。
在配置文件中启用扩展指令。扩展指令使您可以为配置文件选项设置外部来源的值。
--configExpand 支持以下扩展指令:
| 值 | 描述 |
|---|---|
none |
默认。mongos不会扩展扩展指令。 如果任何配置文件设置使用扩展指令,mongos将无法启动。 |
rest |
__rest解析配置文件时,mongos会扩展扩展指令。 |
exec |
__exec解析配置文件时,mongos会扩展扩展指令。 |
您可以将多个扩展指令指定为以逗号分隔的列表,例如。如果配置文件包含未指定的扩展指令,则mongos
将返回错误并终止。rest, exec--configExpand
有关扩展指令的更多信息,请参阅外部来源的配置文件值以获取配置文件。
--verbose, -v¶增加标准输出或日志文件中返回的内部报告的数量。-v通过多次包含选项来增加详细程度(例如)-vvvvv。
--bind_ip <hostnames|ipaddresses|Unix domain socket paths>¶默认值:本地主机
注意
从MongoDB 3.6开始,默认情况下mongos绑定到localhost。请参阅默认绑定到本地主机。
mongos应在其上侦听客户端连接的主机名和/或IP地址和/或完整的Unix域套接字路径。您可以将mongos附加到任何接口。要绑定到多个地址,请输入一个用逗号分隔的值的列表。
例
localhost,/tmp/mongod.sock
您可以指定IPv4和IPv6地址,也可以指定解析为IPv4或IPv6地址的主机名。
例
localhost, 2001:0DB8:e132:ba26:0d5c:2774:e7f9:d513
如果指定了
本地链接的IPv6地址
(fe80::/10),则必须将区域索引附加
到该地址(即fe80::<address>%<adapter-name>)。
例
localhost,fe80::a00:27ff:fee0:1fcf%enp0s3
小费
如果可能,请使用逻辑DNS主机名而不是IP地址,尤其是在配置副本集成员或分片群集成员时。逻辑DNS主机名的使用避免了由于IP地址更改而导致的配置更改。
有关IP绑定的更多信息,请参阅 IP绑定文档。
要绑定到所有IPv4地址,请输入0.0.0.0。
要绑定到所有IPv4和IPv6地址,请::,0.0.0.0在MongoDB 4.2中输入星号或以星号开头"*"(将星号括在引号中,以避免文件名模式扩展)。或者,使用
net.bindIpAll设置。
注意
--bind_ip并且--bind_ip_all是互斥的。同时指定这两个选项会导致mongos引发错误并终止。--bind覆盖配置文件设置net.bindIp。--bind_ip_all¶3.6版的新功能。
如果指定,mongos实例将绑定到所有IPv4地址(即0.0.0.0)。如果mongos以开头
--ipv6,则--bind_ip_all还将绑定到所有IPv6地址(即::)。
mongos如果以开头,则仅支持IPv6 --ipv6。--bind_ip_all单独指定
不会启用IPv6支持。
有关IP绑定的更多信息,请参阅 IP绑定文档。
或者,您可以将--bind_ip选项设置为::,0.0.0.0
或从MongoDB 4.2开始,设置为星号"*"(将星号括在引号中,以避免文件名模式扩展)。
注意
--bind_ip并且--bind_ip_all是互斥的。也就是说,您可以指定一个,但不能两个都指定。
--maxConns <number>¶mongos将接受的最大同时连接数。如果此设置高于操作系统的配置的最大连接跟踪阈值,则此设置无效。
请勿为此选项分配太低的值,否则在正常的应用程序操作过程中会遇到错误。
mongos如果您拥有一个创建多个连接并允许它们超时而不是关闭它们的客户端,这对于特别有用。
在这种情况下,请将其设置maxIncomingConnections为略高于客户端创建的最大连接数或连接池的最大大小的值。
--syslog¶将所有日志记录输出发送到主机的syslog系统,而不是标准输出或日志文件(--logpath)。
--syslogWindows不支持该选项。
警告
在syslog当它将消息记录,还不时的MongoDB发出消息后台生成时间戳。这会导致误导日志条目的时间戳,尤其是在系统负载沉重的情况下。我们建议--logpath对生产系统使用该选件,以确保准确的时间戳。
从4.2版开始,MongoDB 在其到的日志消息中包括该组件syslog。
--syslogFacility <string>¶默认值:用户
指定将消息记录到syslog时使用的工具级别。操作系统的syslog实现必须支持您指定的值。要使用此选项,必须启用该--syslog选项。
--logpath <path>¶将所有诊断日志记录信息发送到日志文件,而不是标准输出或主机的syslog系统。MongoDB在您指定的路径上创建日志文件。
默认情况下,MongoDB将移动任何现有的日志文件,而不是覆盖它。要附加到日志文件,请设置--logappend选项。
--redactClientLogData¶3.4版的新功能:仅在MongoDB Enterprise中可用。
一个mongos与运行--redactClientLogData重新编辑任何消息记录之前伴随一个给定的日志事件。这可以防止mongos将存储在数据库中的潜在敏感数据写入诊断日志。错误或操作代码,行号和源文件名等元数据仍在日志中可见。
使用--redactClientLogData会同
在静态加密和
TLS / SSL(传输加密),以协助符合监管要求。
例如,MongoDB部署可能在一个或多个集合中存储个人身份信息(PII)。所述mongos日志中的事件,如那些涉及CRUD操作,分片的元数据等,这是可能的是,mongos可以暴露PII因为这些测井操作的一部分。运行的mongos--redactClientLogData在输出到日志之前会删除所有伴随这些事件的消息,从而有效地删除PII。
由于缺少与日志事件相关的数据,因此在与之一起运行的mongos上进行诊断--redactClientLogData可能会更加困难。有关对日志输出的影响的示例,请参见
过程日志记录手册页--redactClientLogData。
在运行的mongos上,setParameter与
redactClientLogData参数一起使用以配置此设置。
--timeStampFormat <string>¶缺省值:iso8601-local
日志消息中时间戳的时间格式。指定以下值之一:
| 值 | 描述 |
|---|---|
ctime |
将时间戳显示为。Wed Dec 31
18:17:54.811 |
iso8601-utc |
以国际标准时间(UTC)以ISO-8601格式显示时间戳。例如,对于时代开始时的纽约:1970-01-01T00:00:00.000Z |
iso8601-local |
以ISO-8601格式显示本地时间的时间戳。例如,对于时代开始时的纽约:
1969-12-31T19:00:00.000-0500 |
--pidfilepath <path>¶指定用于存储mongos
进程的进程ID(PID)的文件位置。运行the mongod或mongos
process 的用户必须能够写入此路径。如果--pidfilepath未指定该选项,则该过程不会创建PID文件。该选项通常仅与该--fork选项结合使用。
在Linux上,PID文件管理通常由发行版的init系统负责:通常是/etc/init.d
目录中的服务文件,或已在中注册的systemd单位文件systemctl。仅--pidfilepath当您不使用这些初始化系统之一时才使用该选项。有关更多信息,请参见适用于您的操作系统的相应
安装指南。
macOs
在macOS上,PID文件管理通常由处理brew。仅--pidfilepath当您不在brewmacOS系统上使用时,才使用该选项。有关更多信息,请参见适用于您的操作系统的相应
安装指南。
--keyFile <file>¶指定密钥文件的路径,该密钥存储共享的机密,MongoDB实例使用这些共享的机密在分片群集或副本集中进行相互验证
。--keyFile暗示
。有关更多信息,请参见内部/成员身份验证。client authorization
从MongoDB 4.2开始,用于内部成员身份验证的密钥文件使用YAML格式,以允许密钥文件中包含多个密钥。YAML格式接受以下内容:
YAML格式与使用文本文件格式的现有单键密钥文件兼容。
--setParameter <options>¶指定MongoDB服务器参数中描述的
MongoDB参数之一。您可以指定多个setParameter
字段。
--nounixsocket¶禁用在UNIX域套接字上的侦听。--nounixsocket仅适用于基于Unix的系统。
该mongos过程总是Unix套接字上监听,除非以下情况之一是真实的:
--nounixsocket 被设置net.bindIp 没有设置net.bindIp没有指定localhost或其关联的IP地址--unixSocketPrefix <path>¶默认值:/ tmp
UNIX套接字的路径。--unixSocketPrefix仅适用于基于Unix的系统。
如果此选项没有值,则
mongos进程将创建一个带有/tmp前缀的套接字。除非满足以下条件之一,否则MongoDB会在UNIX套接字上创建并侦听:
net.unixDomainSocket.enabled 是 false--nounixsocket 被设置net.bindIp 没有设置net.bindIp没有指定localhost或其关联的IP地址--filePermissions <path>¶默认值:0700
设置UNIX域套接字文件的权限。
--filePermissions 仅适用于基于Unix的系统。
--fork¶启用在后台运行mongos进程的守护程序模式。默认情况下,mongos不会作为守护程序运行:通常,您将通过使用mongos--fork或使用处理守护程序的控制进程(例如upstart和systemd)来将mongos作为守护程序
运行。
--forkWindows不支持该选项。
--transitionToAuth¶在新版本3.4:允许mongos接受并创建认证和非认证连接,并从其它mongod
和mongos实例的部署。用于执行副本集或分片群集从无身份验证配置到内部身份验证的滚动过渡。需要指定内部验证机制,例如
--keyFile。
例如,如果使用密钥文件进行
内部身份验证,则mongos会
使用匹配的密钥文件与部署中的任何部署mongod或mongos部署中创建经过身份验证的连接。如果安全机制不匹配,则mongos将使用未经身份验证的连接。
运行的mongos--transitionToAuth不会强制执行用户访问控制。用户可以在不进行任何访问控制检查的情况下连接到您的部署,并执行读取,写入和管理操作。
注意
使用内部身份验证运行且无需客户端使用用户访问控制进行连接的mongos。更新客户端连接到mongos使用适当的用户
之前重新启动mongos没有。 --transitionToAuth--transitionToAuth
--networkMessageCompressors <string>¶默认值:snappy,zstd,zlib
3.4版的新功能。
指定用于此mongos实例与以下对象之间的通信的默认压缩器:
mongo壳OP_COMPRESSED消息格式的驱动程序。MongoDB支持以下压缩器:
在版本3.6和4.0,mongod并
mongos默认启用网络压缩与
snappy作为压缩机。
开始于4.2版本,mongod和
mongos实例默认为两个snappy,zstd,zlib
压缩机,在这个顺序。
要禁用网络压缩,请将值设置为disabled。
重要
当双方都启用网络压缩时,消息将被压缩。否则,双方之间的消息将不被压缩。
如果指定多个压缩器,则列出压缩器的顺序以及通信启动器都很重要。例如,如果一个mongo壳指定以下网络压缩机zlib,snappy和mongod指定
snappy,zlib,之间的消息mongo壳和
mongod用途zlib。
如果各方不共享至少一个公共压缩器,则各方之间的消息将不被压缩。例如,如果
mongo外壳程序指定了网络压缩程序
zlib并mongod指定snappy,则mongo外壳程序和之间的消息mongod不会被压缩。
--serviceExecutor <string>¶默认值:同步
3.6版的新功能。
确定mongos用于执行客户端请求的线程和执行模型。该--serviceExecutor选项接受以下值之一:
| 值 | 描述 |
|---|---|
synchronous |
该mongos使用同步网络和管理上的每个连接其网络的线程池。MongoDB的早期版本以这种方式管理线程。 |
adaptive |
该mongos使用新的实验性异步组网方式与管理关于每个请求基础的线程的自适应线程池。当非活动连接数多于数据库请求数时,此模式应具有更一致的性能,并使用更少的资源。 |
--timeZoneInfo <path>¶加载时区数据库的完整路径。如果未提供此选项,则MongoDB将使用其内置时区数据库。
Linux和macOS软件包随附的配置文件/usr/share/zoneinfo默认将时区数据库路径设置为。
内置时区数据库是Olson / IANA时区数据库的副本。它随MongoDB版本一起更新,但时区数据库的发布周期与MongoDB的发布周期不同。可以从https://downloads.mongodb.org/olson_tz_db/timezonedb-latest.zip下载时区数据库的最新版本的副本 。
--outputConfig¶4.2版中的新功能。
输出mongos实例的配置选项,在YAML格式,以stdout和退出mongos实例。对于使用外部源配置文件值的配置选项,
--outputConfig返回这些选项的解析值。
警告
这可能包括先前通过外部源混淆的任何已配置的密码或机密。
有关使用示例,请参见:
--configdb <replicasetName>/<config1>,<config2>...¶在版本3.2中更改。
从MongoDB 3.2开始,可将分片群集的配置服务器部署为副本集。副本集配置服务器必须运行WiredTiger存储引擎。MongoDB 3.2不赞成将三个镜像
mongod实例用于配置服务器。
指定配置服务器副本集名称以及配置服务器副本集的至少一个成员的主机名和端口。
分片mongos群集的实例必须指定相同的配置服务器副本集名称,但可以指定副本集不同成员的主机名和端口。
--localThreshold¶默认值:15
指定ping时间(以毫秒为单位),mongos用于确定哪些辅助副本集成员传递来自客户端的读取操作。默认值15对应于所有客户端驱动程序中的默认值。
当mongos收到允许读取次要成员的请求时,
mongos将:
查找时间最短的集合中的成员。
构造一个副本集成员列表,该列表在该集合中最合适的成员的ping时间(15毫秒)内。
如果您为该--localThreshold选项指定一个值,mongos则将构造在此值所允许的延迟内的副本成员列表。
从此列表中选择一个成员以从中随机读取。
通过--localThreshold设置进行比较的成员使用的ping时间是最近一次ping时间的移动平均值,最多每10秒计算一次。结果,某些查询可能会达到阈值以上的成员,直到mongos重新计算平均值为止。
看到
为TLS / SSL配置mongod和mongos,以获取有关MongoDB支持的完整文档。