SQL 审核神器: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 了。安装包下载地址:github.com/actiontech/...

2.2 执行安装

执行安装命令。

bash 复制代码
rpm -ihv sqle-ce-3.2310.0.qa.el7.x86_64.rpm --prefix=/opt/sqle

2.3 安装 MySQL

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

bash 复制代码
# 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;

2.4 修改配置文件

这里主要修改两个部分:

  1. 数据库连接信息。
  2. secret_key,可以使用 Linux 命令 uuidgen 生成,记得删除"-"。
yaml 复制代码
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'

2.5 启动

bash 复制代码
cd /opt/sqle
chmod +x scripts/init_start.sh
./scripts/init_start.sh

2.6 安装测试

查看服务进程。

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

Docker 安装

SQLE 3.0 也支持 Docker 安装方式。

3.1 安装环境准备

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

3.2 安装 MySQL

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

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

bash 复制代码
# 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;

3.3、安装 SQLE

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

bash 复制代码
# 下载镜像
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

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

总结

4.1 整体过程

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

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

4.2 RPM 安装遇到的问题

端口错误

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

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

建库语句待优化

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

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

其它没能理解的地方

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 才能正常使用。将两个服务配置在一套容器中,是综合考虑了部署难度及维护成本决定的。

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

关于 SQLE

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

相关推荐
MiniFlyZt2 小时前
省市区三级联动(后端)
数据库·spring boot
背太阳的牧羊人3 小时前
用于与多个数据库聊天的智能 SQL 代理问答和 RAG 系统(2) —— 从 PDF 文档生成矢量数据库 (VectorDB),然后存储文本的嵌入向量
数据库·人工智能·sql·langchain·pdf
zhangxueyi4 小时前
MySQL之企业面试题:InnoDB存储引擎组成部分、作用
java·数据库·mysql·面试·innodb
代码代码快快显灵4 小时前
Redis 优化秒杀(异步秒杀)
数据库·redis·缓存
极客先躯4 小时前
Redis 安装与配置指南
数据库·redis·数据验证·安装说明·编译和安装·redis 集群配置·查看集群
YaenLi4 小时前
MySQL 安装部署
linux·数据库·mysql
乄北城以北乀5 小时前
一.MySQL程序简介
数据库·mysql
炭烤毛蛋5 小时前
Ubuntu 磁盘修复
linux·数据库·ubuntu
代码代码快快显灵5 小时前
Redis之秒杀活动
数据库·redis·缓存·秒杀活动
一水鉴天7 小时前
为AI聊天工具添加一个知识系统 之27 支持边缘计算设备的资源存储库及管理器
数据库·人工智能·前端框架