对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

mongosqld

注意

MongoDB Connector for BI 和相关实用程序与所有当前支持的 MongoDB 服务器版本兼容。

mongosqld接受来自SQL客户端的传入请求,并将这些请求代理到mongodmongos 实例。

2.3 版新增功能:

您可以使用 选项通过mongosqld .drdl --schema格式的模式文件启动 ,也可以通过从MongoDB实例中采样数据来创建模式来启动 。

您可以使用--sampleNamespaces 选项指定从哪个或哪些命名命名空间示例数据。如果您未指定任何命名空间或模式文件,mongosqld 将对目标MongoDB实例中除adminlocal 数据库之外的所有数据库中的数据进行采样。

您可以使用--schemaSource 选项指定用于存储模式信息的数据库。否则,mongosqld 会将模式保存在内存中。

使用--schema 选项在启动mongosqld 时指定模式文件。

mongosqld --schema /path/to/schema-file.drdl

使用 mongodrdl 从 MongoDB 实例中创建模式文件。

使用--schemaSource 选项指定用于存储模式信息的数据库。

mongosqld --schemaSource sampleDb

使用--sampleNamespaces 选项指定数据库和集合,以便mongosqld 从中示例数据以创建模式。

mongosqld --sampleNamespaces contacts.addresses

请参阅下面更多的使用示例

如果MongoDB实例使用身份验证,则BI Connector实例也必须使用身份验证。通过 程序连接到MongoDBmongosqld 的用户必须有权读取所有要从中示例数据的命名空间。

有关 BI Connector 中 MongoDB 用户权限的更多详细信息,请参阅缓存采样的用户权限

有关 MongoDB 用户和角色的更多信息,请参阅基于角色的访问控制。

mongosqld请参阅以下带有身份验证的 示例。

2.6版本新增。

所有客户端连接的默认最低 TLS1.1mongosqld 版本为 。这包括与 的传入客户端连接以及与MongoDB的传出连接。

您可以使用 选项为传入连接调整此设置,并使用--minimumTLSVersion --mongo-minimumTLSVersion选项为传出连接调整此设置。

--help

返回有关mongosqld 的选项和使用的信息。

--addr

默认值:127.0.0.1:3307

指定要监听的主机地址。

--version

返回mongosqld 发布号。

--config <path>

指定配置文件的路径。

--mongo-uri <uri>

默认值:mongodb://localhost:27017

指定要连接到的 MongoDB 连接字符串

--mongo-uri选项支持连接字符串中的以下选项:

有关这些 URI 选项的详细信息,请参阅读取偏好(read preference)选项副本集选项。

对于在上述列表未包含的 Mongo URI 中设立的选项,请使用等效的mongosqld 选项。有关mongosqld 选项的完整列表,请参阅命令行选项。

注意

无需在连接字符串中指定 和 ,而是使用 选项运行 ,指示 将SQL客户端提供的身份验证凭证传递给MongoDBusernamepasswordmongosqld --authmongosqld服务器。

同样,不启用连接字符串中的 ,而是使用ssl 运行mongosqld --mongo-ssl

要禁用自动副本集服务器发现逻辑并强制连接到指定服务器,请使用 connect=direct 选项。

mongosqld --mongo-uri "mongodb://<hostname>:<port>/?connect=direct"

不在上述列表中或不在支持的 选项列表中的 URI mongosqld选项不受支持。

--mongo-versionCompatibility <version-number>

限制mongosqld 使用指定版本的MongoDB支持的功能。仅当与成员使用不同MongoDB版本的副本集一起使用或执行MongoDB滚动升级时才需要。仅支持MongoDB版本.3 2或更高版本。

示例,如果您的副本集包含运行MongoDB3.2 的成员和运行MongoDB3.4 的其他成员,设立以下选项以限制mongosqld 仅使用MongoDB3 支持的功能。2 :

mongosqld --mongo-versionCompatibility 3.2
--maxVarcharLength <length>

2.2版本新增。

指定所有 varchar 字段的最大长度(以字符为单位)。如果mongosqld 遇到超过最大长度的字符串,mongosqld 会将其截断到最大长度并记录警告。

--mongo-username <username>, -u <username>

2.3版本新增。

指定用于模式发现的身份验证用户名。仅在启用--auth 时需要。--mongo-username 指定的用户必须是具有 权限的有效MongoDB用户。请参阅listDatabases mongsqld 用户权限。

--mongo-password <password>, -p <password>

2.3版本新增。

指定用于模式发现的身份验证密码。仅在启用--auth 时需要。与--mongo-username 结合使用。

--mongo-authenticationSource <auth-db-name>

默认值:admin

2.3版本新增。

指定凭证模式发现用户档案的数据库。仅在启用--auth 时可用。与凭证选项--mongo-username--mongo-password 结合使用。

--mongo-authenticationMechanism <authMechanism>

默认值:SCRAM-SHA-1

2.3版本新增。

指定用于模式发现的身份验证机制。仅在启用--auth 时可用。与凭证选项--mongo-username--mongo-password 结合使用。

说明

5802使用 SHA1 哈希函数的 RFC 标准 Salted 挑战响应身份验证机制。

版本 2.6 中的新增内容: 7677使用 SHA2 哈希函数的 RFC 标准 Salted 挑战响应身份验证机制。

普通版 (LDAP SASL)

使用 LDAP 进行外部身份验证。您也可使用 PLAIN 对数据库内用户进行身份验证。PLAIN 以纯文本形式传输密码。此机制仅在 MongoDB Enterprise 中可用。

GSSAPI (Kerberos)

使用 Kerberos 的外部身份验证。此机制仅在 MongoDB Enterprise 中可用。

--schema <filename>

指定模式文件或模式目录的路径。

--schemaDirectory <directoryname>

自版本 2.2 起已弃用。

请改用--schema

--sampleNamespaces <db.collection>

2.5版本新增。

--sampleNamespaces 在创建模式的数据采样过程中,指定包含或排除的数据库和数据集。还可以指定来自单个数据库的多个集合,或来自多个数据库的多个集合。请参见下面的示例

如果不使用--sampleNamespaces 选项或 选项,--schema 将从除mongosqld 和 数据库之外的所有可用MongoDB数据库和集合中采样数据。adminlocal

--schemaMode <[custom|auto]>

默认值custom

2.11版本新增。

配置 mongosqld的采样模式。必须与--schemaSource 选项一起使用。以下值决定了采样行为:

--schemaMode 行为

custom

mongosqld从 选项指定的MongoDB--schemaSource 数据库中读取存储的模式。

auto

mongosqld对模式进行采样,并将模式数据写入 选项指定的MongoDB--schemaSource 数据库。

有关配置采样模式的更多信息,请参阅采样模式参考表

重要

如果mongosqld authentication启用了 ,则经过身份验证的用户必须对指定的--schemaSource 数据库具有写入权限。有关 readWrite角色的更多信息,请参阅内置角色。

--schemaSource <db-name>

2.11版本新增。

设立--schemaMode 时需要。指定存储模式信息的数据库。

注意

如果您不指定任何--schema--schemaMode--schemaSource 选项,mongosqld 则会将其模式保留在内存中。

要了解有关采样模式的详情,请参阅采样模式参考图表

--schemaName <db-name>

默认值defaultSchema

2.11版本新增。

可选。要从--schemaSource 数据库加载或向其写入的模式的名称。通过指定模式名称,可在--schemaSource 数据库中存储多个模式。此行为取决于--schemaMode 的值:

--schemaName 行为

custom

要从--schemaSource 选项指定的数据库加载的模式的名称。

auto

--schemaSourceBI Connector在初创企业时对模式进行采样后要写入 数据库的模式的名称。

重要

如果上传自定义模式,则必须使用 将其存储为其指定名称,然后使用name-schema 将此名称指定为mongosqld --schemaName。如果您在上传模式时不存储模式名称,则模式名称默认为defaultSchema 。如果模式的名称不存在,则会导致 出现类似于以下内容的错误:mongosqld MongoDB模式尚不可用。初始化模式时出错:未找到此名称的模式。

要了解有关采样模式的详情,请参阅采样模式参考图表

--sampleSize <number>

默认值:1000

2.3版本新增。

收集架构信息时每个命名空间要采样的文档数量。

--sampleSize 0设置为--sampleSize ,以在构建模式时包括指定命名空间中的所有文档。如果未指定命名空间,将0 mongosqldlocaladmin设置为system 会导致 在构建模式时考虑所有数据库中的所有文档(不包括 、 和 )。请参阅以下示例。

--schemaRefreshIntervalSecs <number>

默认值:0

在版本 2.11 中进行了更改:

已将 --sampleRefreshIntervalSecs 重命名为 --schemaRefreshIntervalSecs

mongosqld重新采样数据以创建其模式的时间间隔(以秒为单位)。默认值为0 ,这意味着初始采样后不会自动重新采样。指定值必须是正整数。

要强制对模式进行一次性更新,请在 SQL 客户端中使用 FLUSH SAMPLE 命令。

--uuidSubtype3Encoding <old|csharp|java>, -b <old|csharp|java>

指定用于生成 UUID 二进制子类型 3 的编码。选择下列值之一:

  • old:旧的 BSON 二进制子类型表示形式

  • csharp: C#/.NET 传统 UUID 表示形式

  • java:Java 传统 UUID 表示形式

--prejoin

2.6版本新增。

用于将数组和非数组数据合并到单个表中的模式选项。

包含数组的 MongoDB 文档通常会转换为表格格式,其中数组数据和非数组数据有单独的表。考虑一个名为 test 的 MongoDB 集合,其中包含以下文档:

{ "_id" : 1, "a" : 3, "b" : [ "orange", "apple", "pear" ] }

上述集合会转换为采用表格形式的以下两个表:

mysql> select * from test;
+------+------+
| _id | a |
+------+------+
| 1 | 3 |
+------+------+
mysql> select * from test_b;
+------+--------+-------+
| _id | b | b_idx |
+------+--------+-------+
| 1 | orange | 0 |
| 1 | apple | 1 |
| 1 | pear | 2 |
+------+--------+-------+

--prejoin标志会使 列中的数据包含在a test_b表中:

mysql> select * from test_b;
+------+------+--------+-------+
| _id | a | b | b_idx |
+------+------+--------+-------+
| 1 | 3 | orange | 0 |
| 1 | 3 | apple | 1 |
| 1 | 3 | pear | 2 |
+------+------+--------+-------+
--logAppend

将新的日志输出追加到--logPath 指定的现有日志文件中。

需要--logRotate

--logPath <filename>

Default: stderr

指定用于存储日志输出的日志文件路径。

--logRotate reopen | rename

默认:重命名

指定要轮换日志以及如何轮换日志。

如果设置此选项,则在以下情况将发生日志轮换:您向 MongoDB Connector for BI 发出 FLUSH LOGS 命令,或者重启 mongosqld

如果将 --logRotate设立为 :rename

现有日志文件已关闭。 RFC3339 格式的时间戳将附加到已关闭的日志文件中。系统会创建一个新的日志文件。

如果将 --logRotate设立为 :reopen

关闭并重新打开现有日志文件。

注意

在 UNIX 和 macOS 平台上,可发出 SIGUSR1 信号来重新启动 mongosqld 进程并轮换日志。

--usageLogInterval <number>

默认:60

2.14版本新增。

将使用情况统计信息写入日志的时间间隔(以秒为单位)。设为 0 可禁用使用情况日志记录。

注意

没有为 Windows 启用使用情况日志记录。

--verbose, -v

指定mongosqld 应提供更详细的日志输出。

下表描述了各日志级别提供的信息:

字母选项
日志级别
消息内容

--quiet

不记录任何内容。

No flag

默认

用于通知用户基本mongosqld 事件和状态更改的日志消息。

-v

管理员

mongosqld 管理员提供信息的日志消息。

-vv

开发人员

对于 MongoDB 支持和开发有用的日志消息。

--quiet

隐藏所有日志输出。

重要

如果您使用自己的证书颁发机构 (CA) 对服务器和客户端证书进行自签名,则必须包含--mongo-sslAllowInvalidHostnames 选项以确保身份验证正常运行。

--mongo-ssl

默认值:False

指示 在连接到MongoDB实例时使用mongosqld TLS/SSL。

--mongo-sslPEMKeyFile <filename>

.pem指定包含 TLS/SSL 证书和密钥的 文件,以供mongosqld 在连接到MongoDB时使用。您可以使用相对或绝对路径来指定.pem 文件的文件名。

使用 --mongo-ssl 选项连接到已启用 CAFile 且未启用 allowConnectionsWithoutCertificatesmongodmongos 时,需要使用此选项。

--mongo-sslPEMKeyPassword <password>

指定包含用于连接 MongoDB 的证书和私钥的文件的路径。

--mongo-sslAllowInvalidHostnames

允许 连接到主机名与其 TLS/SSLmongosqld 证书上的主机名不同的MongoDB服务器。

--mongo-sslAllowInvalidCertificates

允许MongoDB实例提供无效的服务器SSL/TLS 证书。使用 设置时,allowInvalidCertificates MongoDB会将使用无效证书记录为警告。

--mongo-sslCAFile <filename>

指定 MongoDB 实例的 .pem 文件,其中包含来自证书颁发机构的根证书链。使用相对或绝对路径指定 .pem 文件的文件名称。

警告

在BI Connector 2.14.30 及更早版本上:

对于与 和--mongo-ssl mongodmongos的 SSLmongosqld 连接 (),如果 在没有--mongo-sslCAFile 的情况下运行,mongosqld 将不会尝试验证服务器证书。这会对过期的mongodmongos 证书以及冒充有效mongodmongos 实例的外部进程造成漏洞。确保始终指定 CA文件来验证服务器证书,以防可能发生入侵。

从BI Connector版本2.14.31 --mongo-ssl开始,如果提供了 标志,则还必须至少指定以下选项之一:

--mongo-sslCRLFile <filename>

指定 MongoDB 实例的 .pem 文件,其中包含证书吊销列表。

--mongo-sslFIPSMode

在已安装的 OpenSSL 库中启用 FIPS 模式。

--mongo-minimumTLSVersion <TLS1_0|TLS1_1|TLS1_2>

默认:TLS1_1

指定与 mongodmongos 的传出连接所需的最低 TLS 版本。实例。默认值 TLS1_1 对应于 TLS 版本 1.1。

--sslMode <mode>

默认值:已禁用

2.3版本新增。

mongosqld 连接启用或禁用 TLS / SSL 。sslMode 选项的参数可以是以下之一:

说明

disabled

mongsqld 无法接受使用 TLS/SSL 进行安全保护的连接。

allowSSL

mongsqld 可接受使用 TLS/SSL 进行保护的连接。

requireSSL

mongsqld 只能接受使用 TLS/SSL 进行安全保护的连接。

--sslPEMKeyFile <filename>

为 MySQL 客户端指定包含 TLS/SSL 证书和密钥的 .pem 文件。使用相对或绝对路径指定 .pem 文件的文件名。

--sslPEMKeyPassword <password>

指定用于解密由--sslPEMKeyFile 指定的私钥的密码。

--sslAllowInvalidCertificates

允许 MySQL 客户端提供无效的客户端 TLS/SSL 证书。

--sslAllowInvalidHostnames

允许SQL客户端连接到主机名与其 TLS/SSL 证书上的主机名不同的mongosqld

--sslCAFile <filename>

mongosqld.pem指定包含来自证书颁发机构的根证书链的 文件。使用相对或绝对路径指定.pem 文件的文件名。

--sslCRLFile <filename>

mongosqld.pem指定包含证书吊销列表的 文件。

--auth

要求对传入的客户端请求进行身份验证。

重要

在版本2.4.0中进行了更改。

启用身份验证后,必须使用--mongo-username--mongo-password 选项或配置文件中的mongodb.net.auth.username mongodb.net.auth.password 设置提供管理员凭证。

mongosqld 使用管理档案收集采样命名空间上的元数据,并使用连接客户端的档案将数据限制为仅客户端有权读取的数据。有关管理员用户所需权限的更多信息,请参阅缓存采样的用户权限

--defaultAuthSource <authSource>

默认值:admin

指定默认的MongoDB身份验证源。将此值设置为 以指定使用MongoDBmongosqld 数据库进行身份验证时使用的默认源。GSSAPI PLAIN$externalSCRAM-SHA-1和 身份验证机制使用 源,而 和SCRAM-SHA-256 则使用MongoDB 数据库作为源。

如果没有为此选项指定值,则默认为 MongoDB admin 数据库。

$external身份验证源将对系统用户的引用存储在名为$external的 MongoDB 数据库中,但档案存储在外部非 MongoDB 系统中,例如 LDAP 服务器。

任何使用默认值的连接都可以省略其 MySQLTableau 用户名中的 source 参数。

--defaultAuthMechanism <authMechanism>

默认值:SCRAM-SHA-1

指定默认的身份验证机制。将此值设置为mongosqld ,以指定连接到mechanism 的默认机制。任何使用此指定默认值的连接都可以省略其MySQL或Tableau用户名中的 值。

说明

5802使用 SHA1 哈希函数的 RFC 标准 Salted 挑战响应身份验证机制。

版本 2.6 中的新增内容: 7677使用 SHA2 哈希函数的 RFC 标准 Salted 挑战响应身份验证机制。

普通版 (LDAP SASL)

使用 LDAP 进行外部身份验证。您也可使用 PLAIN 对数据库内用户进行身份验证。PLAIN 以纯文本形式传输密码。此机制仅在 MongoDB Enterprise 中可用。

GSSAPI (Kerberos)

使用 Kerberos 的外部身份验证。此机制仅在 MongoDB Enterprise 中可用。

--minimumTLSVersion <TLS1_0|TLS1_1|TLS1_2>

默认:TLS1_1

指定客户端连接到 所需的最低 TLSmongosqld 版本。默认值TLS1_1 对应于 TLS 版本1 。1 。

--serviceName <service-name>

运行mongosqld 的系统服务的名称。

--serviceDisplayName <service-name>

运行mongosqld 的系统服务的显示名称。

--serviceDescription <service-name>

运行mongosqld 的系统服务的描述。

--gssapiHostname <hostname>

默认值:net.bindIp 的第一个IP解决。

2.5版本新增。

用于配置 Kerberos 身份验证的 FQDN。Kerberos 主机名仅覆盖 Kerberos 配置的主机名。

--gssapiServiceName <service-name>

默认值:mongosql

2.5版本新增。

使用 Kerberos 的服务的注册名称。此选项支持您在每个实例的基础上覆盖 Kerberos SPN 的默认 Kerberos 服务名称组件。如未指定,则使用默认值。

--mongo-gssapiServiceName <service-name>

默认值:mongodb

2.5版本新增。

连接到 Kerberized MongoDB 实例时设置 Kerberos SPN。此值必须与 MongoDB 实例上设置的服务名称相匹配。

--gssapiConstrainedDelegation

默认值:False

2.11版本新增。

使用代理凭证进行Kerberos授权,从而启用受限委派。要求mongosqld 服务凭证出现在客户端密钥表和服务密钥表中。有关Kerberos配置的更多信息,请参阅为BI Connector配置Kerberos 。

--filePermissions <mode>

默认:0700

指定 UNIX 域套接字文件的权限。

--noUnixSocket

禁用 Unix 域套接字上的侦听。

--unixSocketPrefix <path>

默认:/tmp

为 Unixmongosqld 域套接字指定备用目录。

mongosqldmysql.sock将在此路径下创建一个名为 的套接字文件。如果不指定--unixSocketPrefix ,则套接字将存在于/tmp/mysql.sock

--setParameter <parameter>
Parameter
类型
对应

"polymorphic_type_conversion_mode=<value>"

字符串

确定mongosqld 如何评估使用多种数据类型指定的文档字段。接受的值为offfastsafe 。要学习;了解有关这些值的更多信息,请参阅系统变量。

"type_conversion_mode=<value>"

字符串

指定 用于转换数据类型的模式。 BImongosqld Connector默认使用自己的模式()。接受的值为mongosql mongosqlmysql 。要学习;了解有关这些值的更多信息,请参阅系统变量。

以下示例启动mongosqld 并使用--setParameter 选项指定类型转换模式:

mongosqld --setParameter "type_conversion_mode=mongosql"

您可以使用mongosqld YAML 配置文件配置 。此文件可能包含以下各节中列出的设置。

注意

您可以在配置文件中使用扩展指令 来加载外部来源的配置值。扩展指令 掩盖了安全证书和密码等机密信息。

要了解有关使用扩展指令的详细信息,请参阅 MongoDB 手册中的源自外部的配置文件值

systemLog:
logAppend: <boolean>
logRotate: "rename"|"reopen"
path: <string>
quiet: <boolean>
verbosity: <integer>
名称
类型
对应
systemLog.logAppend

布尔

systemLog.logRotate

字符串

systemLog.path

字符串

systemLog.quiet

布尔

systemLog.verbosity

整型

schema:
path: <string>
maxVarcharLength: <integer>
名称
类型
对应
schema.path

字符串

schema.maxVarcharLength

整型

schema:
sample:
size: <integer>
prejoin: <boolean>
namespaces: <array of strings>
uuidSubtype3Encoding: <[old|csharp|java]>
stored:
mode: <[custom|auto]>
source: <string>
name: <db-name>
refreshIntervalSecs: <integer>
名称
类型
对应
schema.stored.mode

字符串

schema.stored.source

字符串

schema.stored.name

字符串

schema.sample.size

整型

schema.sample.prejoin

布尔

schema.sample.namespaces

字符串或字符串数组

schema.refreshIntervalSecs

整型

schema.sample.uuidSubtype3Encoding

字符串

runtime:
memory:
maxPerStage: <integer>
maxPerServer: <integer>
maxPerConnection: <integer>

重要

BI Connector提供以下选项,用于控制 进程向MongoDB发送查询时可能使用的系统内存量。这些限制不包括BI Connector用于其他目的(例如数据结构开销)的内存,因此BImongosqld Connector使用的内存总量将高于使用这些选项设立的限制。

runtime.memory.maxPerStage

类型:整型

Default: unlimited

指定查询执行阶段可以使用的最大内存量(以字节为单位)。

runtime.memory.maxPerServer

类型:整型

Default: unlimited

2.5版本新增。

指定mongosqld 进程可以使用的最大内存量(以字节为单位)。

runtime.memory.maxPerConnection

类型:整型

Default: unlimited

2.5版本新增。

指定mongosqld 客户端连接可以使用的最大内存量(以字节为单位)。

net:
bindIp: <string>
port: <integer>
unixDomainSocket:
enabled: <boolean>
pathPrefix: <string>
filePermissions: <string>
ssl:
mode: <string>
allowInvalidCertificates: <boolean>
PEMKeyFile: <string>
PEMKeyPassword: <string>
CAFile: <string>
名称
类型
对应
net.bindIp

字符串

主机名组件 --addr

版本2.2 中的更改:要绑定到多个IP地址,请输入逗号分隔值的列表。

例如:

"72.198.41.200,72.198.41.201,72.198.41.202"
net.port

整型

端口组件 --addr

net.unixDomainSocket.enabled

布尔

net.unixDomainSocket.pathPrefix

字符串

net.unixDomainSocket.filePermissions

字符串

net.ssl.allowInvalidCertificates

布尔

net.ssl.mode

字符串

net.ssl.PEMKeyFile

字符串

net.ssl.PEMKeyPassword

字符串

net.ssl.CAFile

字符串

net.ssl.minimumTLSVersion

字符串

security:
enabled: <boolean>
defaultMechanism: <string>
defaultSource: <string>
gssapi:
hostname: <string>
serviceName: <string>
名称
类型
对应
security.enabled

布尔

security.defaultMechanism

字符串

security.defaultSource

字符串

security.gssapi.hostname

字符串

security.gssapi.serviceName

字符串

security.gssapi.constrainedDelegation

字符串

mongodb:
versionCompatibility: <string>
net:
uri: <string>
ssl:
enabled: <boolean>
allowInvalidCertificates: <boolean>
allowInvalidHostnames: <boolean>
PEMKeyFile: <string>
PEMKeyPassword: <string>
CAFile: <string>
CRLFile: <string>
FIPSMode: <boolean>
auth:
username: <username>
password: <password>
source: <auth-db-name>
mechanism: <auth-mechanism>
gssapiServiceName: <service>
名称
类型
对应
mongodb.versionCompatibility

字符串

mongodb.net.uri

字符串

mongodb.net.ssl.enabled

布尔

mongodb.net.ssl.allowInvalidCertificates

布尔

mongodb.net.ssl.allowInvalidHostnames

布尔

mongodb.net.ssl.PEMKeyFile

字符串

mongodb.net.ssl.PEMKeyPassword

字符串

mongodb.net.ssl.CAFile

字符串

mongodb.net.ssl.CRLFile

字符串

mongodb.net.ssl.FIPSMode

布尔

mongodb.net.ssl.minimumTLSVersion

字符串

mongodb.net.auth.username

字符串

mongodb.net.auth.password

字符串

mongodb.net.auth.source

字符串

mongodb.net.auth.mechanism

字符串

mongodb.net.auth.gssapiServiceName

字符串

processManagement:
service:
name: <string>
displayName: <string>
description: <string>
名称
类型
对应
processManagement.service.name

字符串

processManagement.service.displayName

字符串

processManagement.service.description

字符串

setParameter:
polymorphic_type_conversion_mode: <string>
type_conversion_mode: <string>
名称
类型
对应
setParameter.polymorphic_type_conversion_mode

字符串

确定mongosqld 如何评估使用多种数据类型指定的文档字段。接受的值为offfastsafe 。要学习;了解有关这些值的更多信息,请参阅系统变量。

setParameter.type_conversion_mode

字符串

指定 用于转换数据类型的模式。 BImongosqld Connector默认使用自己的模式()。接受的值为mongosql mongosqlmysql 。要学习;了解有关这些值的更多信息,请参阅系统变量。

这些配置文件选项也可用作系统变量。有关更多信息,请参阅系统变量。

您可以在配置文件中使用扩展指令 来加载外部来源的配置值。扩展指令 掩盖了安全证书和密码等机密信息。

要了解有关使用扩展指令的详细信息,请参阅 MongoDB 手册中的源自外部的配置文件值

注意

此示例配置文件中使用的路径特定于 Linux。 检查本地系统文档,确定系统的正确路径。

systemLog:
logAppend: false
path: "/var/log/mongosqld/mongosqld.log"
verbosity: 2
security:
enabled: true
mongodb:
net:
uri: "mongo.example.com:27017"
auth:
username: "root"
password: "changeme"
net:
bindIp: 192.0.2.14
port: 3307
ssl:
mode: "allowSSL"
PEMKeyFile: "/vagrant/certificates/mongosqld-server.pem"
CAFile: "/vagrant/certificates/ca.crt"
schema:
sample:
namespaces: "inventory.*"
processManagement:
service:
name: mongosqld
displayName: mongosqld
description: "BI Connector SQL proxy server"

使用--schema 选项指定供 mongosqld使用的模式文件。

mongosqld --schema /path/to/schema-file.drdl

使用--sampleNamespaces 选项指定数据库和集合,以便mongosqld 从中示例数据。如果在没有指定 选项的情况下启动mongosqld --sampleNamespaces,则会从除adminlocal 数据库之外的所有可用数据库中采样数据。

以下示例会对名为 contacts 的数据库中名为 addresses 的集合内的数据进行采样:

mongosqld --sampleNamespaces contacts.addresses

要对数据库中所有集合的数据示例,请使用带有通配符--sampleNamespaces *() 的 选项。

以下示例对名为 inventory 的数据库中所有集合中的数据进行采样:

mongosqld --sampleNamespaces 'inventory.*'

您可以在命令行中重复使用--sampleNamespaces ,对来自一个数据库内多个集合或多个数据库中多个集合的数据示例。

以下示例对名为 carsboats 的数据库中所有集合中的数据进行采样:

mongosqld --sampleNamespaces 'cars.*' \
--sampleNamespaces 'boats.*' \

您可以将通配符和特定集合与多个--sampleNamespaces 选项混合和匹配。

以下示例会对名为 orders 的数据库中的所有集合以及 expenses 数据库中的 FY2015FY2016 集合内的数据进行采样:

mongosqld --sampleNamespaces 'orders.*' \
--sampleNamespaces expenses.FY2015 \
--sampleNamespaces expenses.FY2016 \

注意

使用通配符时,只需将命名空间用单引号括起。

要从数据采样过程中排除指定的命名空间,请在命名空间前面添加 ~ (波浪号)字符。以下示例包括除fruit数据库中的apples集合之外的所有数据库和集合:

mongosqld --sampleNamespaces ~fruit.apples

使用 * 通配符字符以表示数据库中的所有集合。以下示例可从数据采样中排除整个 vehicles 数据库:

mongosqld --sampleNamespaces '~vehicles.*'

如果您有一个集合,其中某些文档具有与其他文档不同的字段,并且您希望确保模式将所有这些文档都考虑在内,请将--sampleSize 选项设立为0 。这会导致mongosqld 在构建其模式时检查指定namespace 中的所有文档。

以下示例指示mongosqld 根据inventory.electronics 命名空间中的所有文档构建模式。

mongosqld --sampleNamespaces inventory.electronics \
--sampleSize 0

使用--schemaSource 选项指定用于存储模式信息的数据库。使用 选项可指定--schemaMode mongosqld是可以写入模式数据库还是只能从中读取。

以下示例命令使用名为 的数据库来存储模式信息,并将sampleDb --schemaMode设置为auto

mongosqld --schemaSource sampleDb --schemaMode auto

重要

如果mongosqld authentication启用了 ,则经过身份验证的用户必须对指定的--schemaSource 数据库具有写入权限。有关 readWrite角色的更多信息,请参阅内置角色。

使用--schemaRefreshIntervalSecs 选项指定mongosqld 重新采样数据并重新生成模式的时间间隔(以秒为单位)。此选项的默认值为0 ,这意味着mongosqld 从不对数据进行重采样。

如果使用--schemaRefreshIntervalSecs --schemaSource设立重新采样间隔,并使用 指定模式数据库,则无法将--schemaMode 设立为custom

以下示例未指定模式数据库或模式文件,因此它会将其模式保存在内存中。它使用--schemaRefreshIntervalSecs 指定3600 秒的数据重新采样间隔。

mongosqld --schemaRefreshIntervalSecs 3600

要将mongosqld 连接到运行了身份验证的MongoDB实例,请使用 --auth选项并提供MongoDB用户凭证。

以下示例使用名为mongosqld reportsUserreportsPass、密码为 的用户的凭证启动 ,该用户有权访问权限reports.inventory 命名空间。

mongosqld --auth \
--mongo-username reportsUser \
--mongo-password reportsPass \
--sampleNamespaces reports.inventory

此示例未使用--mongo-authenticationSource 选项指定身份验证数据库,因此默认为admin 。它不使用--mongo-authenticationMechanism 选项指定身份验证机制,因此默认为SCRAM-SHA-1

如要指定将日志保存到 /var/log/mongosqld.log 并从 /var/schema.drdl 加载模式的配置文件,则可以将如下文件保存到 /etc/mongosqld.conf

警告

配置文件中指定的所有路径都必须是绝对路径,例如它们必须以 / 开头。

systemLog:
path: /var/log/mongosqld.log
schema:
path: /var/schema.drdl

然后,您可以使用 选项启动mongosqld --config

mongosqld --config /etc/mongosqld.conf

有关将 mongosqld 作为系统服务启动的更多信息,请参阅您操作系统的《安装指南》。

Atlas 是一项云服务,可用来运行、监控和维护 MongoDB 部署,包括为 MongoDB 实例预配专用服务器。

Atlas 默认使用 TLS/SSL 来加密连接并强制执行身份验证。

注意

对于 MongoDB Atlas 免费套餐,BI Connector 无法使用 allowDiskUse 选项运行聚合管道。此选项支持在聚合阶段将数据作为临时文件写入磁盘。要查看 MongoDB Atlas 免费套餐约束,请参阅 MongoDB Atlas 手册

mongosqld 可以使用自签名证书 或证书颁发机构颁发的任何有效 TLS 证书。 如果使用自签名证书,尽管通信通道将被加密, 但不会验证服务器身份。尽管这种情况 可以防止连接被窃听,但它会让您容易受到中间人攻击。 使用由受信任的证书颁发机构签名的证书 将允许您的 MySQL 客户端验证服务器的身份。

出于测试目的,您可以使用 openssl 工具创建名为 test.pem.pem 密钥文件:

openssl req -nodes -newkey rsa:2048 -keyout test.key -out test.crt -x509 -days 365 -subj "/C=US/ST=test/L=test/O=test Security/OU=IT Department/CN=test.com"
cat test.crt test.key > test.pem

mongosqld使用以下选项启动 :

如果已将密钥文件命名为 test.pem(如上一示例所示),则可运行以下命令来替换集群 URI 和登录档案:

mongosqld --mongo-ssl \
--auth \
--sslPEMKeyFile test.pem \
--mongo-uri <uri> \
--sslMode allowSSL \
--mongo-username <username> \
--mongo-password <password>

将用户名、密码和身份验证数据库传递给SQL客户端。示例,使用mysql 而不验证mongosqld 服务器证书:

mysql --host <mongosqld-host> --port <mongosqld-port> -u <username>?source=admin -p --ssl-mode required --enable-cleartext-plugin

有关将 mysql 客户端与 BI Connector 结合使用的更多详细信息,请参阅从 MySQL 客户端进行连接

下图表描述了mongosqld 初创企业配置的类型以及每种配置使用的选项。

模式
mongosqld 选项
行为

独立模式

mongosqld在初创企业时对数据进行采样。如果--schemaRefreshIntervalSecs >0 ,按指定间隔重新采样。

例如:

mongosqld --schemaRefreshIntervalSecs 3600

有关详细信息,请参阅独立运行模式(缓存采样)。

自定义模式

--schemaSource 指定的数据库读取模式数据。

例如:

mongosqld --schemaMode custom \
--schemaSource schemaDb

Auto Schema

在用户指定的模式数据库中采样和保存模式数据。

例如:

mongosqld --schemaMode auto \
--schemaSource schemaDb \
--schemaRefreshIntervalSecs 3600

有关更多信息,请参阅 Auto Schema Mode(MongoDB 中的 Persist a Schema)。

以下mongosqld 选项配置无效,会在初创企业时导致错误。

模式
mongosqld 选项
行为

独立编写器(无效

此配置对于独立运行的 mongod实例无效,因为在auto 模式下,必须指定可写入的数据库。

集群采样读取器(无效

在MongoDB副本集或分片集群中使用时,此配置无效。当使用 指定数据库用于存储模式数据时,必须将--schemaSource 设立为--schemaMode ,以便可以从主节点auto (primary node in the replica set)更新模式,从而保持集群范围的一致性。