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;
2.4 修改配置文件
这里主要修改两个部分:
- 数据库连接信息。
secret_key,可以使用 Linux 命令 uuidgen 生成,记得删除“-”。
dms:id: 1api:addr: "0.0.0.0"port: 10000enable_https: falsecert_file_path: './etc/cert.pem'key_file_path: './etc/key.pem'secret_key: '7fa9af029350433daceb899710ee3a62'service:database:host: "127.0.0.1"port: 3306username: "root"password: "sqle2023"database: "dms"debug: truecloudbeaver:enable_https: falsehost: "127.0.0.1"port: 8978admin_user: "cbadmin"admin_password: "123456"sqle:id: 1dms_server_address: "http://127.0.0.1:10000"api:addr: "127.0.0.1"port: 10001enable_https: falsecert_file_path: './etc/cert.pem'key_file_path: './etc/key.pem'secret_key: '7fa9af029350433daceb899710ee3a62'service:auto_migrate_table: truedebug_log: falselog_path: './logs'log_max_size_mb: 1024log_max_backup_number: 2plugin_path: './plugins'database:mysql_host: '127.0.0.1'mysql_port: 3306mysql_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,正常登录系统。

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;
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
# 注意替换 IPdocker 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 生效。
雍正喵提示:排期研发中。
配置文件问题
目前配置文件无法修改了,因为在容器内部,也就是说端口号修改,需要自己想办法。
解决办法也很简单,有两种比较容易实现的方式:
使用
docker cp命名将配置文件复制到宿主机进行修改,修改完成后再使用docker cp命令复制到容器中,重启容器生效。缺点就是删除容器后重建,配置文件会丢失。使用
dockr run -v 参数,将配置文件从外部挂载到容器内。
容器的运行方式上
基于容器的部署尽量是单容器和单进程, SQLE 的容器中包含了两个进程一个 dms 一个 sqled。建议拆分成两个单独的容器,这样可以修改配置后单独重启其中一个服务。不过目前来看,这个问题并不影响现在的部署。
雍正喵提示:SQLE 当前由 sqle 和 dms 两个服务组件构成,只有这两个服务同时运行,SQLE 才能正常使用。将两个服务配置在一套容器中,是综合考虑了部署难度及维护成本决定的。
更多技术文章,请访问:https://opensource.actionsky.com/
关于 SQLE
SQLE 是一款全方位的 SQL 质量管理平台,覆盖开发至生产环境的 SQL 审核和管理。支持主流的开源、商业、国产数据库,为开发和运维提供流程自动化能力,提升上线效率,提高数据质量。
SQLE 获取
| 类型 | 地址 |
|---|---|
| 版本库 | https://github.com/actiontech/sqle |
| 文档 | https://actiontech.github.io/sqle-docs/ |
| 发布信息 | https://github.com/actiontech/sqle/releases |
| 数据审核插件开发文档 | https://actiontech.github.io/sqle-docs/docs/dev-manual/plugins/howtouse |
相关文章:
SQLE 3.0 部署实践
来自 1024 活动的投稿系列 第一篇《SQLE 3.0 部署实践》 . 作者:张昇,河北东软软件有限公司高级软件工程师,腾讯云社区作者。 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 本文共 32…...
爬虫的分类
爬虫的分类 网络爬虫按照系统结构和实现技术,大致可分为4类,即通用网络爬虫、聚焦网络爬虫、增量网络爬虫和深层次网络爬虫。 1.通用网络爬虫:搜索引擎的爬虫 比如用户在百度搜索引擎上检索对应关键词时,百度将对关键词进行分析…...
简说vue-router原理
vue-router原理 hash模式 实现原理 改变描点监听描点变化 history模式 实现原理 改变url监听url变化 abstracthash 和 history 模式有什么区别? url 不一样原理不同 其他总结扩展 history 出现404错误 vue-router原理 vue-router是vue项目的重要组成部分&#x…...
什么是 Spring 框架?
Spring 框架是一个开源的、轻量级的企业级应用框架,用于构建 Java 应用程序。它提供了全面的基础设施支持,以简化企业级应用的开发。Spring 的核心目标是通过促进良好的设计原则和编程习惯来提高 Java 开发人员的效率和系统的可维护性。 Spring 框架的主…...
Vue2.x源码:new Vue()做了啥
例子1new Vue做了啥?new Vue做了啥,源码解析 initMixin函数 初始化 – 初始化Vue实例的配置initLifecycle函数 – 初始化生命周期钩子函数initEvents – 初始化事件系统初始化渲染 initRender初始化inject选项 例子1 <div id"app"><div class"home&…...
iOS 借助DSYMTools工具定位到闪退的具体行数和方法名
1、下载 dSYMTools-master 工具,下载安装后,如下图: 2、通过Bugly或友盟等异常记录工具,找到闪退的内存地址和偏移量信息上图是Bugy记录的闪退信息,友盟的参考如下: 关于工具的原理和其他描述,…...
分布式解决方案与实战
分布式多线程性能调优 使用多线程优化接口 //下单业务public Object order( long userId){long start System.currentTimeMillis();//方法的开始时间戳(ms)JSONObject orderInfo remoteService.createOrder(userId);Callable<JSONObject> calla…...
GitHub入门介绍
GitHub是一个基于web的版本控制系统,主要用于代码管理和协作开发。它是开源的,并且提供了一系列的功能,方便开发人员进行版本控制、代码托管和团队协作。 以下是GitHub的一些基本概念和功能: 版本控制:GitHub使用Git作…...
IP与子网掩码之间的关系
子网掩码用于确认IP所在的网段,网络位与子网掩码相匹配 如果有另一台主机想要与这个IP地址进行通信,这时需要看两台主机的IP地址是否处于同一网段,处于同一网段才能相互ping通。 那么怎么判断是否处于同一网段呢?我们就看子网掩…...
文档或书籍扫描为 PDF:ScanPapyrus Crack
ScanPapyrus 可让您快速轻松地将文档或书籍扫描为 PDF,批处理模式使扫描过程快速高效,自动处理书籍并将其拆分为单独的页面 用于快速扫描文档、书籍或打印照片的扫描仪软件 快速扫描文档 使用此扫描仪软件,您无需在扫描仪和计算机之间来回移动…...
Clickhouse RoaringBitmap
https://blog.csdn.net/penriver/article/details/119736050 https://juejin.cn/post/7179956435806076988 BitMap适合连续密集的正整数存储,对于稀疏的正整数存储,其性能在很多时候是没办法和int数组相比的,尤其是正整数跨度较大的场景&…...
C语言第四十九弹----模拟使用strcpy函数
使用C语言模拟使用strcpy函数 定义:strcpy 函数是 C 标准库中用于字符串复制的函数。它接受两个参数,第一个参数 dest 是目标字符串的指针,第二个参数 src 是源字符串的指针,函数的功能是将源字符串复制到目标字符串中࿰…...
docker搭建maven私库Nexus3
什么是Maven私服? Maven 私服是一种特殊的Maven远程仓库,它是架设在局域网内的仓库服务,用来代理位于外部的远程仓库(中央仓库、其他远程公共仓库)。 当然也并不是说私服只能建立在局域网,也有很多公司会…...
Java 基础学习(十)包装类、异常
1 包装类 1.1 包装类概述 1.1.1 什么是包装类 在进行类型转换时,有一种特殊的转换:将 int 这样的基本数据类型转换为对象,如下图所示: 所有基本类型都有一个与之对应的类,即包装类(wrapper)。…...
STM32的基本定时器注意点
本文介绍了STM32基本定时器3个重要的寄存器PSC、ARR、CNT,以及缓冲机制和计数细节。 基本定时器的框图 预分频器寄存器(TIMx_PSC)可以在运行过程中修改它的数值,新的预分频数值将在下一个更新事件时起作用。因为更新事件发生时,会把 TIMx_PS…...
浅谈NLP和大模型的关系
目录 一、什么是NLP 二、NLP的应用举例 三、NLP的Python实现举例 四、NLP和大模型的关系 五、NLP的难点 5.1 内容的有效界定 5.2 消歧和模糊性 5.3 有瑕疵的或不规范的输入 5.4 语言行为与计划 六、研究热点 一、什么是NLP 如果单独说NLP这3个字母,具有两…...
k8s上安装KubeSphere
🍩安装KubeSphere 🍪前置环境🍪安装nfs-server文件系统🍪配置nfs-client🍪配置默认存储🍪创建了一个存储类🍪metrics-server集群指标监控组件 🍪安装KubeSphere🍪执行安装…...
Linux 链接器如何使用静态库来解析引用
文章目录 通过进行代码实践静态库在编译时被链接到可执行文件中的基本原理原理总结 QA:.obj文件是什么? 通过进行代码实践 链接器在解析引用时,可以使用静态库来满足对未定义符号的引用。以下是使用静态库的一般步骤: 编写代码: 首先&#…...
vue实现滑动验证
效果图: 源码地址:github文档地址: https://github.com/monoplasty/vue-monoplasty-slide-verify 使用步骤:1,安装插件: npm install --save vue-monoplasty-slide-verify 在main.js中使用一下ÿ…...
***Cpolar配置外网访问和Dashy
Dashy是一个开源的自托管的导航页配置服务,具有易于使用的可视化编辑器、状态检查、小工具和主题等功能。你可以将自己常用的一些网站聚合起来放在一起,形成自己的导航页。一款功能超强大,颜值爆表的可定制专属导航页工具 结合cpolar内网工具,我们实现无需部署到公网服务器…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
