• mongodb bi-connector 使用


    mongodb bi-connector 是一个方便的mongodb 2 sql 工具,我们可以使用sql 的强大查询能力,分析mongo的数据,以下是一些
    简单操作,以及一些部署上的细节说明,后边会介绍spring boot 集成的说明

    安装

    为了方便测试使用本地docker 运行mongo+ 使用本地mongodb bi-connector

    参考以下地址安装 https://www.mongodb.com/download-center/bi-connector

    mongo 环境准备

    添加了一个pgspider:mongo pg 的fdw

    • docker-compose 文件
     
    version: "3"
    services:
        pg-mysql:
            image: dalongrong/pgspider:mongo
            ports:
                - "5432:5432"
            environment:
                - "POSTGRES_PASSWORD=dalong"
            volumes:
                - "./certs:/opt/certs"
        mongo:
            image: mongo
            ports:
                - "27017:27017"
    • 初始化数据
    docker-compose up -d
    创建数据库以及用户
    use appdemos
    db.createCollection("appdemos")
    db.createUser(  
      {  
        user: "dalong",  
        pwd: "dalong",  
        roles: [{role: "dbAdmin", db: "appdemos"}],
        mechanisms : ["SCRAM-SHA-1"] 
      }  
    )
    导入部分这个,这个可以根据实际数据导入,可以使用命令

    配置说明

    下载好的软件包里边有三个文件(可能是两个)一个生成schema 的一个是sql 运行服务,一个是sql 到mongo
    聚合查询生成的,我们使用静态配置方式,同时因为添加了用户密码,所以需要tls 证书(使用了宽松模式)

    • 配置

    • 生成证书

      实际最好调整下信息

     
    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配置
      通过yaml 格式配置
     
    net:
      bindIp: "0.0.0.0"
      port: 3307
    # 宽松模式的ssl
      ssl:
        mode: allowSSL
        PEMKeyFile: './certs/test.pem'
        allowInvalidCertificates: true
        minimumTLSVersion: TLS1_0
    mongodb:
      net:
        uri: "mongodb://127.0.0.1:27017"
        ssl:
          enabled: false
        auth:
          username: dalong
          password: dalong
          source: appdemos
          mechanism: SCRAM-SHA-1
    security:
      enabled: true
      defaultMechanism: "SCRAM-SHA-1"
      defaultSource: "appdemos"
    systemLog:
      path: ./mongosqld.log
      verbosity: 2
      logAppend: true
    schema:
      path: ./schemas
      maxVarcharLength: 65535
    processManagement:
      service:
        name: "mongosql"
        displayName: "MongoSQL Service"
        description: "MongoSQL accesses MongoDB data with SQL"
    • schema 生成
    bin/mongodrdl --host 127.0.0.1:27017 --username dalong --password dalong --db appdemos --authenticationDatabase appdemos --out schemas/schemas.drdl
    • 启动服务
    bin/mongosqld --config mongosqld-config.yml
    • 连接

      注意部分工具可能使用了mysql jdbc 8 以及一些高版本的连接会有问题

    对于连接因为使用了ssl,需要使用工具需要勾选ssl,同时对于mysql cli 需要添加--enable-cleartext-plugin ,同时需要注意如果代码连接也需要配置



    几个问题

    • ssl 问题
      这个问题也是网上大家都反馈比较多的, 尽管net配置中可以ssl disable,但是没有效果(这个是使用密码关系,属于工具的一个强制策略)
      尽管有人说只能本地运行,这是不对的,碰到问题最好还是多看看官方文档,这样会少点折腾
    • 代码连接问题
      spring jdbc 配置,这个后边会有介绍使用的,关于nodejs 的集成就很不好了,好多对于ssl 的支持一般,后边也有介绍
     
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3307/appdemos?useSSL=true
    spring.datasource.username=dalong
    spring.datasource.password=dalong
    • 关于mysql fdw 的集成问题
      这个测试没用通过(mysql 协议支持的问题,当然修改fdw 代码,让只支持查询,应能是可行的,后边尝试下),如果真的需要
      集成推荐使用mongo 的fdw(这个更靠谱稳定)
    • 实际生成的mongo 查询 

           这个我们可以通过mongotranslate 工具,以及sql 的查询计划任务看出来,以下是sql 查询分析的 

    • linux systemd 启动文件
      mongosqld 命令行支持包含了使用系统服务管理的命令,可以快速帮助我们生成系统级别的服务管理脚本,如下是centos 的一个
      目录:/etc/systemd/system/mongosql.service 方便大家学习
     
    [Unit]
    Description=MongoSQL accesses MongoDB data with SQL
    ConditionFileIsExecutable=/usr/bin/mongosqld
    [Service]
    StartLimitInterval=5
    StartLimitBurst=10
    ExecStart=/usr/bin/mongosqld "--config=/root/mong/mongosqld-config.yml"
    Restart=always
    RestartSec=120
    EnvironmentFile=-/etc/sysconfig/mongosql
    [Install]
    WantedBy=multi-user.target

    参考资料

    https://docs.mongodb.com/bi-connector/master/reference/mongosqld/#bin.mongosqld
    https://www.mongodb.com/download-center/bi-connector
    https://docs.mongodb.com/bi-connector/master/release-notes/

  • 相关阅读:
    IDEA tomcat 乱码( Catalina log localhost log server )
    idea的maven项目无法加载resources下的配置或是xml文件
    【MyBatis系列10】MyBatis日志如何做到兼容所有常用的日志框架
    【MyBatis系列9】彻底搞懂MyBatis插件原理及PageHelper原理
    【MyBatis系列8】带你彻底掌握MyBatis的缓存工作原理
    【MyBatis系列7】原来SqlSession只是个甩手掌柜,真正干活的却是Executor等四大对象
    idea 热部署Devtools
    git branch 命令查看分支、删除远程分支、本地分支【转】
    【转】elasticsearch 基础知识汇总
    【转】Elasticsearch究竟要设置多少分片数?
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/12313132.html
Copyright © 2020-2023  润新知