当前位置:   article > 正文

SQLE 3.0 部署实践

SQLE 3.0 部署实践

来自 1024 活动的投稿系列 第一篇《SQLE 3.0 部署实践》 .

作者:张昇,河北东软软件有限公司高级软件工程师,腾讯云社区作者。

爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。

本文共 3200 字,预计阅读需要 10 分钟。

本文是 SQLE 1024 特别活动 | SQL 质量提升官活动 征稿活动的第一篇,作者详细记录了体验 SQLE 3.0 安装部署的全过程和体验感受。

SQLE 介绍

SQLE 是爱可生自主研发支持多元数据库的 SQL 质量管理平台,于 2021 年正式开源。应用于开发、测试、上线发布、生产运行阶段的 SQL 质量治理。通过 “建立规范、事前控制、事后监督、标准发布” 的方式,为企业提供 SQL 全生命周期质量管控能力,规避业务 SQL 不规范引起的生产事故,提高业务稳定性,也可推动企业内部开发规范快速落地。

以下是详细的 SQLE 3.0 安装体验过程,分别演示 RPM 和 Docker 两种部署方式。

RPM 安装

RPM 安装是首先支持的安装方式。

2.1 安装环境准备

目前最新的 v3 版本,所以系统就首选 CentOS 7 了。安装包下载地址:https://github.com/actiontech/sqle/releases

2.2 执行安装

执行安装命令。

rpm -ihv sqle-ce-3.2310.0.qa.el7.x86_64.rpm --prefix=/opt/sqle

    安装成功

    2.3 安装 MySQL

    配合使用数据源我们选择了 MySQL。为了简化安装,我们使用 Docker 方式进行部署。

    # Docker 运行 MySQL
    docker run -d --restart=always --name mysql \
            --network=host \
            -e MYSQL_ROOT_PASSWORD=sqle2023 \
            -e LANG=C.UTF-8 \
            -v /etc/timezone:/etc/timezone \
            -v /etc/localtime:/etc/localtime \
            mysql:5.7.41
    
    # 进入容器连接数据库
    docker exec -it mysql bash
    mysql -uroot -psqle2023
    
    # 执行建库语句
    CREATE DATABASE IF NOT EXISTS sqle default character set utf8mb4 collate utf8mb4_unicode_ci;
    CREATE DATABASE IF NOT EXISTS dms default character set utf8mb4 collate utf8mb4_unicode_ci;
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    2.4 修改配置文件

    这里主要修改两个部分:

    1. 数据库连接信息。
    2. secret_key,可以使用 Linux 命令 uuidgen 生成,记得删除“-”。
    dms:
      id: 1
      api:
        addr: "0.0.0.0"
        port: 10000
        enable_https: false
        cert_file_path: './etc/cert.pem'
        key_file_path: './etc/key.pem'
      secret_key: '7fa9af029350433daceb899710ee3a62'
      service:
        database:
          host: "127.0.0.1"
          port: 3306
          username: "root"
          password: "sqle2023"
          database: "dms"
          debug: true
      cloudbeaver:
        enable_https: false
        host: "127.0.0.1"
        port: 8978
        admin_user: "cbadmin"
        admin_password: "123456"
    
    sqle:
      id: 1
      dms_server_address: "http://127.0.0.1:10000"
      api:
        addr: "127.0.0.1"
        port: 10001
        enable_https: false
        cert_file_path: './etc/cert.pem'
        key_file_path: './etc/key.pem'
      secret_key: '7fa9af029350433daceb899710ee3a62'
      service:
        auto_migrate_table: true
        debug_log: false
        log_path: './logs'
        log_max_size_mb: 1024
        log_max_backup_number: 2
        plugin_path: './plugins'
        database:
          mysql_host: '127.0.0.1'
          mysql_port: 3306
          mysql_user: 'root'
          mysql_password: 'sqle2023'
          mysql_schema: 'sqle'
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    2.5 启动

    cd /opt/sqle
    chmod +x scripts/init_start.sh
    ./scripts/init_start.sh
    • 1
    • 2

    2.6 安装测试

    查看服务进程。

    服务已经启动

    访问 http://IP:10000,默认账密 admin/admin,正常登录系统。

    SQLE 3.0 界面

    Docker 安装

    SQLE 3.0 也支持 Docker 安装方式。

    3.1 安装环境准备

    目前最新的 v3 版本,已提供 Docker 安装方式部署方式。

    3.2 安装 MySQL

    与 RPM 包安装方式不同的是,Docker 部署必须要先安装 MySQL,并创建数据库,否则应用无法正常启动。

    为了简化安装,我们使用 Docker 方式进行部署。

    # Docker 运行 MySQL
    docker run -d --restart=always --name mysql \
            --network=host \
            -e MYSQL_ROOT_PASSWORD=sqle2023 \
            -e LANG=C.UTF-8 \
            -v /etc/timezone:/etc/timezone \
            -v /etc/localtime:/etc/localtime \
            mysql:5.7.41
    
    # 进入容器连接数据库
    docker exec -it mysql bash
    mysql -uroot -psqle2023
    
    # 执行建库语句
    CREATE DATABASE IF NOT EXISTS sqle default character set utf8mb4 collate utf8mb4_unicode_ci;
    CREATE DATABASE IF NOT EXISTS dms default character set utf8mb4 collate utf8mb4_unicode_ci;
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    3.3、安装 SQLE

    安装 Docker 时,如果服务器可以联网,那么在执行 docker run 命令是会自动拉去镜像;如果服务器不能联网,需要在可以联网的服务器下载镜像,然后导入到安装服务器。

    # 下载镜像
    docker pull actiontech/sqle-ce:latest
    
    # 保存镜像
    docker save actiontech/sqle-ce:latest > sqle.tar
    
    # 在安装服务器加载镜像
    docker load < sqle.tar
    
    # 启动 SQLE
    # 注意替换 IP
    
    docker run -d \
    --name sqle-server \
    -p 10000:10000 \
    -p 10001:10001 \
    -e MYSQL_HOST="IP" \
    -e MYSQL_PORT=3306 \
    -e MYSQL_USER="root" \
    -e MYSQL_PASSWORD="sqle2023" \
    -e MYSQL_DMS_SCHEMA="dms" \
    -e MYSQL_SQLE_SCHEMA="sqle" \
    actiontech/sqle-ce:latest
    
    # 查看容器状态
    docker ps 
    
    # 查看容器日志
    docker logs -f sqle-server
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    安装完成后访问服务器 10000 端口号,看到如下页面就完成安装了。

    SQLE 3.0 界面

    总结

    4.1 整体过程

    • RPM 安装:整体安装流程比较清晰,按照官方文档可以正常完成安装部署,需要注意的是 secret_key 字段配置有两处,如果由于配置文件没写正确,导致安装失败建议删除数据库后重新尝试,避免第一次启动初始化的数据不正确,影响后续安装。

    • Docker 安装:基于 Docker 安装还是方便,全程无坑五分钟部署完成,整体安装体验非常优秀。

    4.2 RPM 安装遇到的问题

    端口错误

    安装文档中说默认端口是 10000,但实际安装后默认端口为 7601

    安装文档描述

    默认配置文件

    雍正喵提示:配置文件已修改,感谢纠错。

    建库语句待优化

    语句后面没有带 ; 结尾,需要手动补充。 image-20231025134600486

    雍正喵提示:用户手册当前已修改,可以直接复制使用。

    其它没能理解的地方

    RPM 安装后已经将服务注册至 systemd 管理,为何还有使用 shell 脚本启动应用,而不是 systemctl start sqld

    雍正喵提示:SQLE当前包含两个服务。为了减少启动阻碍,所以将两个服务的启动指令写在一个脚本文件中,启动时,直接执行脚本即可。

    4.3 Docker 安装遇到的问题

    Docker 命令的问题

    官方给出的的 docker run -d -it 一起使用,但是 -d 表示后台运行,-it 表示交互运行,怎么可以又后台又交互呢?实际实行效果是只有 -d 生效。

    雍正喵提示:排期研发中。

    配置文件问题

    目前配置文件无法修改了,因为在容器内部,也就是说端口号修改,需要自己想办法。

    解决办法也很简单,有两种比较容易实现的方式:

    1. 使用 docker cp 命名将配置文件复制到宿主机进行修改,修改完成后再使用 docker cp 命令复制到容器中,重启容器生效。缺点就是删除容器后重建,配置文件会丢失。

    2. 使用 dockr run -v 参数,将配置文件从外部挂载到容器内。

    容器的运行方式上

    基于容器的部署尽量是单容器和单进程, SQLE 的容器中包含了两个进程一个 dms 一个 sqled。建议拆分成两个单独的容器,这样可以修改配置后单独重启其中一个服务。不过目前来看,这个问题并不影响现在的部署。

    雍正喵提示:SQLE 当前由 sqle 和 dms 两个服务组件构成,只有这两个服务同时运行,SQLE 才能正常使用。将两个服务配置在一套容器中,是综合考虑了部署难度及维护成本决定的。

    更多技术文章,请访问:https://opensource.actionsky.com/

    关于 SQLE

    SQLE 是一款全方位的 SQL 质量管理平台,覆盖开发至生产环境的 SQL 审核和管理。支持主流的开源、商业、国产数据库,为开发和运维提供流程自动化能力,提升上线效率,提高数据质量。

    SQLE 获取

    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/912814
    推荐阅读
    相关标签
      

    闽ICP备14008679号