Docs 主页 → 查看和分析数据 → BI Connector
mongosqld
在此页面上
- 说明
- 使用
- 使用模式文件启动
mongosqld
- 使用模式数据库启动
mongosqld
- 使用指定的命名空间启动
mongosqld
- MongoDB 用户权限
- 默认最低 TLS 版本
- 命令行选项
- 核心选项
- 模式选项
- 日志选项
- MongoDB TLS/SSL 选项
- 客户端 TLS/SSL 选项
- 服务选项
- Kerberos 选项
- 套接字选项
- 设置参数选项
- 配置文件
- 日志记录选项
- 模式选项
- 数据采样选项
- 运行时选项
- 网络选项
- 安全选项
- MongoDB 主机选项
- 流程管理选项
- 设置参数选项
- 加载外部配置值
- 示例配置文件
- 使用示例
mongosqld
带有模式文件- 指定要采样的集合
- 指定要采样的多个集合
- 从采样中排除数据库和集合
- 对集合中的所有文档进行采样
- 指定数据库以保存模式
- 指定数据重新采样间隔
mongosqld
(启用身份验证)mongosqld
(带有配置文件)- 与 Atlas 一起使用
- 采样模式参考图
- 无效配置
说明
注意
MongoDB Connector for BI 及相关实用程序与当前支持的所有 MongoDB 服务器版本兼容。
使用
2.3 版新增功能:
您可以使用 选项通过 .drdlmongosqld
格式--schema
的模式文件启动 ,也可以通过从 MongoDB 实例中采样数据来创建模式来启动 。
您可以使用--sampleNamespaces
选项指定从哪个或哪些命名空间采样数据。如果您未指定任何命名空间或模式文件, mongosqld
将对目标 MongoDB 实例中除admin
和local
数据库之外的所有数据库中的数据进行采样。
您可以使用--schemaSource
选项指定用于存储模式信息的数据库。否则, mongosqld
会将模式保存在内存中。
使用模式文件启动mongosqld
使用--schema
选项在启动mongosqld
时指定模式文件。
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
选项为传出连接调整此设置。
命令行选项
核心选项
--version
返回
mongosqld
版本号。
--config <path>
指定配置文件的路径。
--mongo-uri <uri>
默认值:mongodb://localhost:27017
指定要连接到的 MongoDB连接字符串。
--mongo-uri
选项支持连接字符串中的以下选项:有关这些 URI 选项的更多信息,请参阅读取偏好选项和副本集选项。
对于在上述列表未包含的 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
遇到超过最大长度的字符串,mongosqld
会将其截断到最大长度并记录警告。
--mongo-username <username>, -u <username>
2.3 版本新增功能。
指定用于模式发现的身份验证用户名。仅在启用
--auth
时需要。--mongo-username
指定的用户必须是具有listDatabases
特权的有效 MongoDB 用户。请参阅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
结合使用。值说明RFC5802 使用 SHA1 哈希函数的标准 Salted 挑战响应身份验证机制。版本2 中的新增内容。6 : RFC7677 使用 SHA2 哈希函数的标准 Salted 挑战响应身份验证机制。PLAIN (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
。如果模式的名称不存在,则会导致 出现类似于以下内容的错误:MongoDBmongosqld
模式尚不可用。初始化模式时出错:未找到此名称的模式。要了解有关采样模式的更多信息,请参阅采样模式参考图。
--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 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 选项
--mongo-ssl
默认值:False
指示
mongosqld
在连接到 MongoDB 实例时使用 TLS/SSL。
--mongo-sslPEMKeyFile <filename>
指定包含 TLS/SSL 证书和密钥的
.pem
文件,以供mongosqld
在连接到 MongoDB 时使用。您可以使用相对或绝对路径来指定.pem
文件的文件名。使用
--mongo-ssl
选项连接到已启用CAFile
且未启用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
值。值说明RFC5802 使用 SHA1 哈希函数的标准 Salted 挑战响应身份验证机制。版本2 中的新增内容。6 : RFC7677 使用 SHA2 哈希函数的标准 Salted 挑战响应身份验证机制。PLAIN (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 。
服务选项
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 。
套接字选项
--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
然后,您可以使用 选项启动mongosqld
--config
:
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 客户端。例如,使用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
选项配置无效,会在启动时导致错误。
模式 | mongosqld 选项 | 行为 |
---|---|---|
独立编写器(无效) |
| |
集群采样读取器(无效) |
| 在 MongoDB 副本集或分片集群中使用时,此配置无效。当使用 --schemaSource 指定数据库用于存储模式数据时,必须将--schemaMode 设置为auto ,以便可以从主节点更新模式,从而保持集群范围的一致性。 |