作者:张昇,河北东软软件有限公司高级软件工程师,腾讯云社区作者。
爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
本文共 3200 字,预计阅读需要 10 分钟。
本文是 SQLE 1024 特别活动 | SQL 质量提升官活动 征稿活动的第一篇,作者详细记录了体验 SQLE 3.0 安装部署的全过程和体验感受。文中 4.2 部分提到了作者在体验过程中遇到的一些问题,已经在《SQLE 202312 问答篇》中进行了解答,请配合阅读,以下是文章正文。
1SQLE 介绍
SQLE 是爱可生自主研发支持多元数据库的 SQL 质量管理平台,于 2021 年正式开源。应用于开发、测试、上线发布、生产运行阶段的 SQL 质量治理。通过 “建立规范、事前控制、事后监督、标准发布” 的方式,为企业提供 SQL 全生命周期质量管控能力,规避业务 SQL 不规范引起的生产事故,提高业务稳定性,也可推动企业内部开发规范快速落地。
以下是详细的 SQLE 3.0 安装体验过程,分别演示 RPM 和 Docker 两种部署方式。
2RPM 安装
RPM 安装[1]是首先支持的安装方式。
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;复制
2.4 修改配置文件
这里主要修改两个部分:
数据库连接信息。 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'复制
2.5 启动
cd /opt/sqle
chmod +x scripts/init_start.sh
./scripts/init_start.sh复制
2.6 安装测试
查看服务进程。

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

3Docker 安装
SQLE 3.0 也支持 Docker 安装[2]方式。
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;复制
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复制
安装完成后访问服务器 10000 端口号,看到如下页面就完成安装了。

4总结
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
生效。
雍正喵提示:经验证,-it 参数确实可以不用,为您的求真精神点赞👍
配置文件问题
目前配置文件无法修改了,因为在容器内部,也就是说端口号修改,需要自己想办法。
解决办法也很简单,有两种比较容易实现的方式:
使用
docker cp
命名将配置文件复制到宿主机进行修改,修改完成后再使用docker cp
命令复制到容器中,重启容器生效。缺点就是删除容器后重建,配置文件会丢失。使用
dockr run -v 参数
,将配置文件从外部挂载到容器内。
容器的运行方式上
基于容器的部署尽量是单容器和单进程, SQLE 的容器中包含了两个进程一个 dms
一个 sqled
。建议拆分成两个单独的容器,这样可以修改配置后单独重启其中一个服务。不过目前来看,这个问题并不影响现在的部署。
雍正喵提示:SQLE 当前由 sqle 和 dms 两个服务组件构成,只有这两个服务同时运行,SQLE 才能正常使用。将两个服务配置在一套容器中,是综合考虑了部署难度及维护成本决定的。
参考资料
RPM 安装: https://actiontech.github.io/sqle-docs/docs/deploy-manual/intro
[2]Docker 安装: https://actiontech.github.io/sqle-docs/docs/deploy-manual/Docker
用户体验有礼活动
体验流程:
体验 SQLE
填写体验问卷
上传体验过程截图并反馈体验建议或感受(有效性验证,必选)
联系管理员领取社区周边
体验问卷
社区周边-不定期更新
阅读推荐
这里有 MySQL/Oracle 最常用的 SQL 开发规则
关于 SQLE
一个支持多种不同类型数据库,覆盖事前控制、事后监督、标准发布场景,帮助您建立质量规范的 SQL 全生命周期质量管理平台。