1. MongoDB BI Connector参考指南
2. 1. 概述
3. 2. 安装
- 系统: 本文档基于Centos 7.x安装
- mongodb bi connector版本: mongodb-bi-linux-x86_64-rhel70-v2.14.2.tgz
3.1. 2.1 安装要求
安装 mongodb bi connector 需要系统已经安装了 openssl,如未安装,可以使用 yum 命令安装
yum -y install openssl
3.2. 2.2 安装
安装mongodb,非常简单,执行下面的命令,解压即可:
tar -xzvf mongodb-bi-linux-x86_64-rhel70-v2.14.2.tgz
3.3. 2.3 配置
mongosqld 的配置文件使用了 yaml 格式,大部分参数也有对应的命令行参数。
3.3.1. 2.3.1 日志参数
systemLog:
logAppend: <boolean>
logRotate: "rename" 或 "reopen"
path: <string>
quiet: <boolean>
verbosity: <integer>
参数说明:
参数 | 类型 | 默认值 | 对应的命令行参数 | 说明 | |
---|---|---|---|---|---|
systemLog.logAppend | boolean | --logAppend | 输出日志到systemLog.path 指定的日志文件, 且必须设置systemLog.logRotate |
||
systemLog.path | string | rename | --logRotate | 指定日志该怎样rotate, 有两个选项: rename : 关闭已有的文件,并重命名,在文件名后面追加一个RFC3339格式的时间戳。同时生成一个新的日志文件。 reopen : 关闭文件后后再打开。 |
|
systemLog.path | string | --logPath | 指定存储输出日志的文件 | ||
systemLog.quiet | boolean | --quiet | 隐藏所有的日志输出 | ||
systemLog.verbosity | integer | --verbose / -v | 设置该选项,会输出更详细的日志 |
3.3.2. 2.3.2 schema参数
schema:
path: <string>
maxVarcharLength: <integer>
参数说明:
参数 | 类型 | 默认值 | 对应的命令行参数 | 说明 | |
---|---|---|---|---|---|
schema.path | string | --schema | 指定schema文件或目录 | ||
schema.maxVarcharLength | integer | --maxVarcharLength | 指定varchar字段的最大字符长度,如果超出长度,会截取到指定的长度,并打印一条警告日志 |
3.3.3. 2.3.2 数据样例参数
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 | integer | custom | --schemaMode | 配置mongosqld的样例模型,必须与schema.stored.source 一起使用,有两个选项: custom : mongosqld从MongoDB数据库中读取以存储的schema auto : mongosqld对schema进行取样,并写到MongoDB数据库 |
|
schema.stored.source | string | --schemaSource | 指定存储schema信息的数据库 | ||
schema.stored.name | string | defaultSchema | --schemaName | 用于读写的schema名称 | |
schema.sample.size | integer | 1000 | --sampleSize | 收集schema信息时,每个数据库取样的文档数量 | |
schema.sample.prejoin | boolean | --prejoin | schema选项,用于将数组和非数组数据组合到单个表中 | ||
schema.sample.namespaces | string或者string array | --sampleNamespaces | 指定数据库和集合,用于包含或排除创建schema的数据抽样过程 | ||
schema.sample.uuidSubtype3Encoding | string | --uuidSubtype3Encoding / -b | 指定用于生成UUID二进制子类型的编码,包含: old : 旧BSON二进制子类型表示 csharp : C#或.NET遗留UUID表示 java : Java旧版UUID表示 |
||
schema.refreshIntervalSecs | integer | 0 | --schemaRefreshIntervalSecs | mongosqld重新取样创建schema的间隔秒数,默认为0,表示连接期间,初始化时取样后,不再取样。值必须是正整数 |
3.3.4. 2.3.3 Runtime参数
runtime:
memory:
maxPerStage: <integer>
maxPerServer: <integer>
maxPerConnection: <integer>
参数说明:
参数 | 类型 | 默认值 | 对应的命令行参数 | 说明 | |
---|---|---|---|---|---|
runtime.memory.maxPerStage | integer | 指定查询执行阶段可以使用的最大内存(单位: Byte) | |||
runtime.memory.maxPerServer | integer | 指定mongosqld进程可以使用的最大内存(单位: Byte) | |||
runtime.memory.maxPerConnection | integer | 指定mongosqld客户端连接可以使用的最大内存(单位: Byte) |
3.3.5. 2.3.4 网络参数
net:
bindIp: <string>
port: <integer>
unixDomainSocket:
enabled: <boolean>
pathPrefix: <string>
filePermissions: <string>
ssl:
mode: <string>
allowInvalidCertificates: <boolean>
PEMKeyFile: <string>
PEMKeyPassword: <string>
CAFile: <string>
minimumTLSVersion: <string>
参数说明:
参数 | 类型 | 默认值 | 对应的命令行参数 | 说明 | |
---|---|---|---|---|---|
net.bindIp | string | 127.0.0.1 | --addr 的主机部分 | 指定监听的主机地址,多个地址以","分隔 | |
net.port | integer | 3307 | --addr 的端口部分 | 指定监听的端口 | |
net.unixDomainSocket.enabled | boolean | true : 表示监听unix域套接字 false 表示禁用监听域套接字,等同于命令行参数--noUnixSocket |
|||
net.unixDomainSocket.pathPrefix | string | /tmp | --unixSocketPrefix | 指定mongosqld Unix域套接字的目录,mongosqld会在该路径下创建一个mysql.sock套接字,如果未指定,则会创建 /tmp/mysql.sock套接字 | |
net.unixDomainSocket.filePermissions | string | 448 | --filePermissions | 指定Unix域套接字文件的权限 | |
net.ssl.allowInvalidCertificates | boolean | --sslAllowInvalidCertificates | 允许MySQL客户端提供无效的客户端TLS/SSL证书 | ||
net.ssl.mode | string | disabled | --sslMode | 启用或者禁用 TLS/SSL 连接mongosqld。包括以下3个选项: disabled : mongosqld不接受使用TLS/SSL保护的连接 allowSSL : mongosqld接受使用TLS/SSL保护的连接(意味着也接收不使用TLS/SSL的连接) requireSSL : mongosqld只接受使用TLS/SSL保护的连接 |
|
net.ssl.PEMKeyFile | string | --sslPEMKeyFile | 指定包含了TLS/SSL证书和MySQL客户端key的.pem 文件,可以使用相对或者绝对路径指定 |
||
net.ssl.PEMKeyPassword | string | --sslPEMKeyPassword | 指定密码,用于解密net.ssl.PEMKeyFile 指定的私钥 |
||
net.ssl.CAFile | string | --sslCAFile | 指定mongosqld .pem 文件,该文件包含了证书颁发机构的根证书链。可以使用相对路径或绝对路径指定 |
||
net.ssl.minimumTLSVersion | string | TLS1_1 | --minimumTLSVersion | 指定TLS的最小版本,有3个选项: TLS1_0、TLS1_1、TLS1_2 |
3.3.6. 2.3.5 安全参数
security:
enabled: <boolean>
defaultMechanism: <string>
defaultSource: <string>
gssapi:
hostname: <string>
serviceName: <string>
参数说明:
参数 | 类型 | 默认值 | 对应的命令行参数 | 说明 | |
---|---|---|---|---|---|
security.enabled | boolean | --auth | 要求对客户端请求进行认证 | ||
security.defaultMechanism | string | SCRAM-SHA-1 | --defaultAuthMechanism | 指定默认的认证机制,包括 SCRAM-SHA-1、SCRAM-SHA-256、PLAIN、GSSAPI | |
security.defaultSource | string | admin | --defaultAuthSource | 指定MongoDB认证的默认source | |
security.gssapi.hostname | string | net.bindIp 指定的第一个IP |
--gssapiHostname | 配置Kerberos认证的FQDN | |
security.gssapi.serviceName | string | mongosql | --gssapiServiceName | 使用Kerberos注册的服务名 | |
security.gssapi.constrainedDelegation | string | False | --gssapiConstrainedDelegation | 使用代理credential进行Kerberos授权,启用constrained delegation |
3.3.7. 2.3.6 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>
参数说明:
参数 | 类型 | 默认值 | 对应的命令行参数 | 说明 | |
---|---|---|---|---|---|
mongodb.versionCompatibility | string | --mongo-versionCompatibility | 根据给定的MongoDB的版本,限制mongosqld所能提供的功能。只有当副本集和各个成员使用了不同的版本,或者滚动升级MongoDB时才有必要 | ||
mongodb.net.uri | string | mongodb://localhost:27017 | --mongo-uri | 指定MongoDB的连接字符串 | |
mongodb.net.ssl.enabled | boolean | False | 表示是否使用TLS/SSL连接MongoDB实例 | ||
mongodb.net.ssl.allowInvalidCertificates | boolea | --mongo-sslAllowInvalidCertificates | 允许MongoDB提供无效的TLS/SSL证书 | ||
mongodb.net.ssl.allowInvalidHostnames | boolean | --mongo-sslAllowInvalidHostnames | 允许mongosqld使用不同于TLS/SSL证书中的hostname连接MongoDB | ||
mongodb.net.ssl.PEMKeyFile | string | --mongo-sslPEMKeyFile | 指定包含了TLS/SSL证书和mongosqld连接MongoDB时的key的.pem 文件。可以使用相对路径和绝对路径 |
||
mongodb.net.ssl.PEMKeyPassword | string | --mongo-sslPEMKeyPassword | 指定包含连接MongoDB的证书和私钥的文件路径 | ||
mongodb.net.ssl.CAFile | string | --mongo-sslCAFile | 指定MongoDB的.pem 文件,该文件包含了证书颁发机构的根证书链。可以使用相对路径或绝对路径指定 |
||
mongodb.net.ssl.CRLFile | string | --mongo-sslCRLFile | 指定包含了废除证书列表的MongoDB.pem 文件 |
||
mongodb.net.ssl.FIPSMode | boolean | --mongo-sslFIPSMode | 在安装的OpenSSL库中启用FIPS模式 | ||
mongodb.net.ssl.minimumTLSVersion | string | --mongo-minimumTLSVersion | 指定TLS的最小版本,有3个选项: TLS1_0、TLS1_1、TLS1_2 | ||
mongodb.net.auth.username | string | --mongo-username / -u | 指定用户名,用于发现模式,只有在启用了--auth的情况下才需要。必须是有效的MongoDB用户,且具有listDatabases 权限 |
||
mongodb.net.auth.password | string | --mongo-password / -p | 指定用户密码 | ||
mongodb.net.auth.source | string | admin | --mongo-authenticationSource | 指定用于认证的数据库 | |
mongodb.net.auth.mechanism | string | SCRAM-SHA-1 | --mongo-authenticationMechanism | 指定认证机制,包括 SCRAM-SHA-1、SCRAM-SHA-256、PLAIN、GSSAPI | |
mongodb.net.auth.gssapiServiceName | string | mongodb | --mongo-gssapiServiceName | 设置Kerberos SPN,用于Kerberos认证 |
3.3.8. 2.3.7 进程管理参数
processManagement:
service:
name: <string>
displayName: <string>
description: <string>
参数说明:
参数 | 类型 | 默认值 | 对应的命令行参数 | 说明 | |
---|---|---|---|---|---|
processManagement.service.name | string | --serviceName | 运行mongosqld的系统服务名 | ||
processManagement.service.displayName | string | --serviceDisplayName | 运行mongosqld的系统服务的显示名称 | ||
processManagement.service.description | string | --serviceDescription | 运行mongosqld的系统服务的描述 |
3.4. 2.4 配置文件示例
下面是一个配置文件的样例:
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"
4. 3. 启动
使用命令行参数的方式启动
bin/mongosqld --mongo-uri "mongodb://127.0.0.1:27017" --auth -u root -p 123456 --addr "0.0.0.0:3307"
使用配置文件的方式启动
bin/mongosqld --config <pathToConfigFile>/mongosqld.conf
5. 4. 容器化
5.1. 4.1 制作镜像
- 编写dockerfile ```dockerfile FROM ubuntu:xenial
COPY mongo* /usr/local/bin/
RUN apt-get update \ && apt-get install -y --no-install-recommends ca-certificates numactl procps gnupg dirmngr gnupg-curl \ && apt-get install -y rsyslog \ && service rsyslog start
EXPOSE 3307
ENTRYPOINT ["mongosqld"]
2. 编写build.sh脚本
```bash
#! /bin/sh
cd $(dirname $0)
set -ex
DOCKER_FILE=mongodb-bi.Dockerfile
IMAGE_NAME=mongodb-bi-connector
IMAGE_VERSION=2.14.2
MONGODB_BI="mongodb-bi-linux-x86_64-ubuntu1604-v${IMAGE_VERSION}"
MONGODB_BI_URL="https://info-mongodb-com.s3.amazonaws.com/mongodb-bi/v2/${MONGODB_BI}.tgz"
wget -N ${MONGODB_BI_URL}
tar -xzvf ${MONGODB_BI}.tgz
docker build -f $DOCKER_FILE -t ${IMAGE_NAME}:${IMAGE_VERSION} ${MONGODB_BI}/bin/
- 创建镜像
执行如下命令
sh build.sh
5.2. 4.2 启动
假设已经安装了一个mongodb,其安装信息如下
配置 | 值 |
---|---|
地址 | 192.16.1.10 |
端口 | 27017 |
用户名 | mongodb |
密码 | mongodb |
则启动命令如下
docker run --name mongodb-bi -i -t -p 3307:3307 -d mongodb-bi-connector:2.l4.2 --mongo-uri "mongodb://192.168.1.10:27017" --auth -u mongodb -p mongodb --addr "0.0.0.0:3307"
6. 附录
6.1. 官方网站
https://docs.mongodb.com/bi-connector/current/local-quickstart/
results matching ""
No results matching ""
衡石文档
- 产品功能一览
- 发布说明
- 新手上路
- 安装与启动
- 系统管理员手册
- 数据管理员手册
- 分析人员手册
- 数据查看员手册
- 数据服务
- 最佳实践
- 衡石分析平台 API 手册
- 附录