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_0TLS1_1TLS1_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-1SCRAM-SHA-256PLAINGSSAPI
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_0TLS1_1TLS1_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-1SCRAM-SHA-256PLAINGSSAPI
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. 启动

  1. 使用命令行参数的方式启动

    bin/mongosqld --mongo-uri "mongodb://127.0.0.1:27017" --auth  -u root -p 123456 --addr "0.0.0.0:3307"
    
  2. 使用配置文件的方式启动

    bin/mongosqld --config <pathToConfigFile>/mongosqld.conf
    

5. 4. 容器化

5.1. 4.1 制作镜像

  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/
  1. 创建镜像 执行如下命令
    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 ""

    MongoDB BI Connector Hive