mongosqld
在此页面上
- 说明
- 使用
- 使用模式文件启动
mongosqld
- 使用模式数据库启动
mongosqld
- 使用指定的命名空间启动
mongosqld
- MongoDB 用户权限
- 默认最低 TLS 版本
- 命令行选项
- 核心选项
- 模式选项
- 日志选项
- MongoDB TLS/SSL 选项
- 客户端 TLS/SSL 选项
- 服务选项
- Kerberos Options
- 套接字选项
- 设置参数选项
- 配置文件
- 日志记录选项
- 模式选项
- 数据采样选项
- 运行时选项
- 网络选项
- 安全选项
- MongoDB 主机选项
- 流程管理选项
- 设置参数选项
- 加载外部配置值
- 示例配置文件
- 使用示例
mongosqld
带有模式文件- 指定要采样的集合
- 指定要采样的多个集合
- 从采样中排除数据库和集合
- 对集合中的所有文档进行采样
- 指定数据库以保存模式
- 指定数据重新采样间隔
mongosqld
(启用身份验证)mongosqld
(带有配置文件)- 与 Atlas 一起使用
- 采样模式参考图
- 无效配置
说明
注意
MongoDB Connector for BI 和相关实用程序与所有当前支持的 MongoDB 服务器版本兼容。
使用
2.3 版新增功能:
您可以使用 --schema
选项采用 .drdl 格式的架构文件启动 mongosqld
,也可以通过从 MongoDB 实例中采样数据来创建架构。
您可以使用 --sampleNamespaces
选项指定从哪个或哪些命名空间对数据采样。如果您未指定任何命名空间或模式文件,mongosqld
将对目标 MongoDB 实例中除 admin
和 local
数据库之外的所有数据库的数据采样。
您可以使用--schemaSource
选项指定用于存储模式信息的数据库。 否则, mongosqld
会将模式保存在内存中。
使用模式文件启动 mongosqld
启动 mongosqld
时,使用 --schema
选项来指定模式文件。
mongosqld --schema /path/to/schema-file.drdl
使用 mongodrdl
从 MongoDB 实例中创建模式文件。
使用模式数据库启动 mongosqld
使用 --schemaSource
选项,指定用于存储模式信息的数据库。
mongosqld --schemaSource sampleDb
使用指定的命名空间启动 mongosqld
使用 --sampleNamespaces
选项为 mongosqld
指定数据库和集合,从中采样数据以创建模式。
mongosqld --sampleNamespaces contacts.addresses
请参阅下面更多的使用示例。
MongoDB 用户权限
如果 MongoDB 实例使用 身份验证 ,则 BI Connector 实例也必须使用身份验证。在通过 mongosqld
程序连接 MongoDB 时,用户必须有权限读取所有要采样数据的命名空间。
有关 BI Connector 中 MongoDB 用户权限的更多详细信息,请参阅缓存采样的用户权限。
有关 MongoDB 用户和角色的更多信息,请参阅基于角色的访问控制。
默认最低 TLS 版本
版本 2.6 中的新增内容。
所有客户端连接的默认最低 TLS 版本为 1.1。其中包括指向 mongosqld
的传入客户端连接以及指向 MongoDB 的传出连接。
您可以使用 --minimumTLSVersion
选项对输入连接进行调整,使用 --mongo-minimumTLSVersion
选项对输出连接进行调整。
命令行选项
核心选项
--help
返回
mongosqld
的选项和使用的信息。
--version
返回
mongosqld
版本号。
--config <path>
指定配置文件的路径。
--mongo-uri <uri>
默认值:mongodb://localhost:27017
指定要连接到的 MongoDB 连接字符串。
--mongo-uri
选项支持连接string中的以下选项:有关这些 URI 选项的详细信息,请参阅读取偏好(read preference)选项和副本集选项。
对于在上述列表未包含的 Mongo URI 中设置的选项,请使用等效
mongosqld
选项。有关mongosqld
选项的完整列表,请参阅命令行选项。注意
要禁用自动副本集服务器发现逻辑并强制连接到指定服务器,请使用
connect=direct
选项。mongosqld --mongo-uri "mongodb://<hostname>:<port>/?connect=direct"
--mongo-versionCompatibility <version-number>
限制
mongosqld
使用指定版本的 MongoDB 所支持的功能。仅当与成员使用不同 MongoDB 版本的副本集一起使用或执行 MongoDB 滚动升级时才需要。仅支持 MongoDB 3.2 或更高版本。例如,如果您的副本集包含运行 MongoDB 3.2 的成员和运行 MongoDB 3.4 的其他成员,请设置以下选项限制
mongosqld
仅使用 MongoDB 3.2 支持的功能:mongosqld --mongo-versionCompatibility 3.2
--maxVarcharLength <length>
2.2 版本中的新增内容。
指定所有 varchar 字段的最大长度(以字符为单位)。 如果
mongosqld
遇到超过最大长度的string ,mongosqld
会将其截断到最大长度并记录警告。
--mongo-username <username>, -u <username>
2.3 版本新增功能。
指定用于模式发现的身份验证用户名。仅在启用
--auth
时需要。--mongo-username
指定的用户必须为具有listDatabases
特权的有效 MongoDB 用户。请参阅 mongosqld 用户权限。
--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
结合使用。
值说明RFC 5802 标准 Salted 挑战响应身份验证机制(使用 SHA1 哈希函数)
版本 2.6 中的新增内容: RFC 7677 标准 Salted 挑战响应身份验证机制(使用 SHA2 哈希函数)
普通版 (LDAP SASL)
使用 LDAP 进行外部身份验证。您也可使用
PLAIN
对数据库内用户进行身份验证。PLAIN
以纯文本形式传输密码。此机制仅在 MongoDB Enterprise 中可用。GSSAPI (Kerberos)
使用 Kerberos 的外部身份验证。此机制仅在 MongoDB Enterprise 中可用。
模式选项
--schemaDirectory <directoryname>
自版本 2.2 起已弃用。
请改用
--schema
。
--sampleNamespaces <db.collection>
2.5 版本新增功能。
--sampleNamespaces
指定在创建模式的数据采样过程中,要包含或排除的数据库和数据集。还可以指定来自单个数据库的多个集合,或来自多个数据库的多个集合。请参见下面的示例。如果您不使用
--sampleNamespaces
选项或--schema
选项,mongosqld
将从除admin
和local
数据库之外的所有可用 MongoDB 数据库和集合中采样数据。
--schemaMode <[custom|auto]>
默认:
custom
2.11 版新增功能。
配置
mongosqld
的采样模式。必须与
--schemaSource
选项一起使用。以下数值决定了采样行为:值--schemaMode
行为custom
mongosqld
会从--schemaSource
选项指定的 MongoDB 数据库中读取存储的模式。auto
mongosqld
会对该模式进行采样,并将模式数据写入由--schemaSource
选项指定的 MongoDB 数据库。有关配置采样模式的更多信息,请参阅采样模式参考图。
重要
如果
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
当 BI Connector 在启动时对此模式进行采样后,要写入
--schemaSource
数据库的模式的名称。重要
如果您上传自定义架构,则必须使用
name-schema
存储该架构,对其命名,然后将此名称指定给mongosqld
(使用命令--schemaName
)。如果在上传架构时不存储架构名称,则架构名称默认为defaultSchema
。如果架构的名称不存在,则会导致mongosqld
中的错误,类似于以下内容:MongoDB 架构尚不可用。初始化架构时出错:找不到此名称的架构。要了解有关采样模式的更多信息,请参阅采样模式参考图。
--sampleSize <number>
默认: 1000
2.3 版本新增功能。
收集架构信息时每个命名空间要采样的文档数量。
将
--sampleSize
设置为0
,以在构建模式时包括指定命名空间中的所有文档。如果未指定命名空间,将--sampleSize
设置为0
会使mongosqld
在构建模式时考虑所有数据库中的全部文档(不包括local
、admin
和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
。
--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
应提供更详细的日志输出。下表描述了各日志级别提供的信息:
MongoDB TLS/SSL 选项
重要
如果您使用自己的证书颁发机构 (CA) 对服务器和客户端证书进行自签名,则必须包含 --mongo-sslAllowInvalidHostnames
选项以确保身份验证正常运行。
--mongo-ssl
默认值:False
指示
mongosqld
在连接 MongoDB 实例时使用 TLS/SSL。
--mongo-sslPEMKeyFile <filename>
指定包含 TLS/SSL 证书和密钥的
.pem
文件,以供mongosqld
在连接到 MongoDB 时使用。 您可以使用相对或绝对路径来指定.pem
文件的文件名。使用
--mongo-ssl
选项连接已启用CAFile
但未启用
net.ssl.allowConnectionsWithoutCertificates
的mongod
或mongos
时,需要使用该选项。
--mongo-sslAllowInvalidHostnames
允许
mongosqld
连接到主机名与其 TLS/SSL 证书上的主机名不同的 MongoDB 服务器。
--mongo-sslAllowInvalidCertificates
允许 MongoDB 实例提供无效的服务器 SSL/TLS 证书。使用
allowInvalidCertificates
设置时,MongoDB 会将使用无效证书记录为警告。
客户端 TLS/SSL 选项
--sslMode <mode>
默认值:已禁用
2.3 版本新增功能。
为 mongosqld 连接启用或禁用 TLS/SSL。
sslMode
选项的参数可以是以下之一:
--sslPEMKeyPassword <password>
指定用于解密
--sslPEMKeyFile
指定的私钥的密码。
--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 身份验证源。设置此值,可指定
mongosqld
在使用 MongoDB 数据库进行身份验证时所用的默认源。GSSAPI
和PLAIN
身份验证机制使用$external
源,而SCRAM-SHA-1
和SCRAM-SHA-256
则将 MongoDB 数据库用作源。如果没有为此选项指定值,则默认为 MongoDB
admin
数据库。$external
身份验证源将对系统用户的引用存储在名为$external
的 MongoDB 数据库中,但档案存储在外部非 MongoDB 系统中,例如 LDAP 服务器。
--defaultAuthMechanism <authMechanism>
默认值:SCRAM-SHA-1
指定默认的身份验证机制。设置此值,以指定连接到
mongosqld
的默认机制。任何使用此指定默认值的连接都可以省略其 MySQL或 Tableau 用户名中的
mechanism
值。值说明RFC 5802 标准 Salted 挑战响应身份验证机制(使用 SHA1 哈希函数)
版本 2.6 中的新增内容: RFC 7677 标准 Salted 挑战响应身份验证机制(使用 SHA2 哈希函数)
普通版 (LDAP SASL)
使用 LDAP 进行外部身份验证。您也可使用
PLAIN
对数据库内用户进行身份验证。PLAIN
以纯文本形式传输密码。此机制仅在 MongoDB Enterprise 中可用。GSSAPI (Kerberos)
使用 Kerberos 的外部身份验证。此机制仅在 MongoDB Enterprise 中可用。
--minimumTLSVersion <TLS1_0|TLS1_1|TLS1_2>
默认:TLS1_1
指定客户端连接
mongosqld
所需的最低 TLS 版本。默认值TLS1_1
对应于 TLS 版本 1.1。
服务选项
--serviceName <service-name>
运行
mongosqld
的系统服务的名称。
--serviceDisplayName <service-name>
运行
mongosqld
的系统服务的显示名称。
--serviceDescription <service-name>
描述运行
mongosqld
的系统服务。
Kerberos Options
--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。
套接字选项
--unixSocketPrefix <path>
默认:/tmp
为
mongosqld
Unix 域套接字指定备用目录。mongosqld
将在此路径下创建一个名为mysql.sock
的套接字文件。如果不指定--unixSocketPrefix
,则套接字将存在于/tmp/mysql.sock
中。
设置参数选项
配置文件
您可以配置 mongosqld
,方法是使用 YAML 配置文件。此文件可能包含以下各节中列出的设置。
注意
您可以在配置文件中使用扩展指令 来加载外部来源的配置值。扩展指令 掩盖了安全证书和密码等机密信息。
要了解有关使用扩展指令的详细信息,请参阅 MongoDB 手册中的源自外部的配置文件值。
日志记录选项
systemLog: logAppend: <boolean> logRotate: "rename"|"reopen" path: <string> quiet: <boolean> verbosity: <integer>
名称 | 类型 | 对应 |
---|---|---|
布尔 | ||
字符串 | ||
字符串 | ||
布尔 | ||
整型 |
模式选项
schema: path: <string> maxVarcharLength: <integer>
名称 | 类型 | 对应 |
---|---|---|
字符串 | ||
整型 |
数据采样选项
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>
名称 | 类型 | 对应 |
---|---|---|
字符串 | ||
字符串 | ||
字符串 | ||
整型 | ||
布尔 | ||
字符串或字符串数组 | ||
整型 | ||
字符串 |
运行时选项
runtime: memory: maxPerStage: <integer> maxPerServer: <integer> maxPerConnection: <integer>
重要
BI Connector 提供了以下选项,用于控制 mongosqld
进程向 MongoDB 发送查询时可能使用的系统内存量。这些限制不包括 BI Connector 用于其他目的(如数据结构开销)的内存,因此 BI Connector 使用的内存总量会高于使用这些选项设置的限制。
runtime.memory.maxPerServer
类型:整型
默认: unlimited
2.5 版本新增功能。
指定
mongosqld
进程可以使用的最大内存量(字节)。
runtime.memory.maxPerConnection
类型:整型
默认: 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>
名称 | 类型 | 对应 |
---|---|---|
字符串 | ||
整型 |
| |
布尔 |
| |
字符串 | ||
字符串 | ||
布尔 | ||
字符串 | ||
字符串 | ||
字符串 | ||
字符串 | ||
字符串 |
安全选项
security: enabled: <boolean> defaultMechanism: <string> defaultSource: <string> gssapi: hostname: <string> serviceName: <string>
名称 | 类型 | 对应 |
---|---|---|
布尔 | ||
字符串 | ||
字符串 | ||
字符串 | ||
字符串 | ||
字符串 |
MongoDB 主机选项
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>
名称 | 类型 | 对应 |
---|---|---|
字符串 | ||
字符串 | ||
布尔 | ||
布尔 | ||
布尔 | ||
字符串 | ||
字符串 | ||
字符串 | ||
字符串 | ||
布尔 | ||
字符串 | ||
字符串 | ||
字符串 | ||
字符串 | ||
字符串 | ||
字符串 |
流程管理选项
processManagement: service: name: <string> displayName: <string> description: <string>
名称 | 类型 | 对应 |
---|---|---|
字符串 | ||
字符串 | ||
字符串 |
设置参数选项
setParameter: polymorphic_type_conversion_mode: <string> type_conversion_mode: <string>
名称 | 类型 | 对应 |
---|---|---|
字符串 | ||
字符串 |
这些配置文件选项也可用作系统变量。有关更多信息,请参阅系统变量。
加载外部配置值
您可以在配置文件中使用扩展指令 来加载外部来源的配置值。扩展指令 掩盖了安全证书和密码等机密信息。
要了解有关使用扩展指令的详细信息,请参阅 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"
使用示例
mongosqld
带有模式文件
使用 --schema
选项指定模式文件以供 mongosqld
使用。
mongosqld --schema /path/to/schema-file.drdl
指定要采样的集合
使用--sampleNamespaces
选项指定数据库和集合,以便mongosqld
从中采样数据。 如果在没有指定 选项的情况下启动mongosqld
--sampleNamespaces
,则会从除admin
和local
数据库之外的所有可用数据库中采样数据。
以下示例会对名为 contacts
的数据库中名为 addresses
的集合内的数据进行采样:
mongosqld --sampleNamespaces contacts.addresses
指定要采样的多个集合
要对数据库中所有集合的数据进行采样,请使用 --sampleNamespaces
选项并附带通配符 (*
)。
以下示例对名为 inventory
的数据库中所有集合中的数据进行采样:
mongosqld --sampleNamespaces 'inventory.*'
您可以重复使用 --sampleNamespaces
,以对来自某个数据库中多个集合或多个数据库中多个集合的数据进行采样。
以下示例对名为 cars
和 boats
的数据库中所有集合中的数据进行采样:
mongosqld --sampleNamespaces 'cars.*' \ --sampleNamespaces 'boats.*' \
您可以使用多个 --sampleNamespaces
选项混合和匹配通配符和特定集合。
以下示例会对名为 orders
的数据库中的所有集合以及 expenses
数据库中的 FY2015
和 FY2016
集合内的数据进行采样:
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
(启用身份验证)
要将 mongosqld
连接到在启用身份验证的情况下运行的 MongoDB 实例,请使用 --auth
选项并提供 MongoDB 用户凭证。
以下示例使用名为 reportsUser
、密码为
reportsPass
的用户的凭证启动 mongosqld
,该用户有权访问
reports.inventory
命名空间。
mongosqld --auth \ --mongo-username reportsUser \ --mongo-password reportsPass \ --sampleNamespaces reports.inventory
此示例未使用 --mongo-authenticationSource
选项指定身份验证数据库,因此默认为 admin
。它不使用 --mongo-authenticationMechanism
选项指定身份验证机制,因此默认为 SCRAM-SHA-1
。
mongosqld
(带有配置文件)
如要指定将日志保存到 /var/log/mongosqld.log
并从 /var/schema.drdl
加载模式的配置文件,则可以将如下文件保存到 /etc/mongosqld.conf
:
警告
配置文件中指定的所有路径都必须是绝对路径,例如它们必须以 /
开头。
systemLog: path: /var/log/mongosqld.log schema: path: /var/schema.drdl
然后,可启动附带 --config
选项的 mongosqld
:
mongosqld --config /etc/mongosqld.conf
有关将 mongosqld
作为系统服务启动的更多信息,请参阅您操作系统的《安装指南》。
与 Atlas 一起使用
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 客户端。例如,在不验证 mongosqld
服务器证书的情况下使用
mysql
:
mysql --host <mongosqld-host> --port <mongosqld-port> -u <username>?source=admin -p --ssl-mode required --enable-cleartext-plugin
有关将 mysql
客户端与 BI Connector 结合使用的更多详细信息,请参阅从 MySQL 客户端进行连接。
采样模式参考图
下图描述了mongosqld
启动配置的类型以及每种配置使用的选项。
模式 | mongosqld 选项 | 行为 | |||
---|---|---|---|---|---|
独立模式 |
|
例如:
有关详细信息,请参阅独立运行模式(缓存采样)。 | |||
自定义模式 |
| ||||
Auto Schema |
| 在用户指定的模式数据库中采样和保存模式数据。 例如:
|
无效配置
以下 mongosqld
选项配置无效,且会在启动时导致错误。
模式 | mongosqld 选项 | 行为 |
---|---|---|
独立编写器(无效) |
| |
集群采样读取器(无效) |
| 在 MongoDB 副本集或分片集群中使用时,此配置无效。使用 |