当前位置: 首页 > news >正文

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 修改配置文件

这里主要修改两个部分:

  1. 数据库连接信息。
  2. 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,正常登录系统。

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;

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 端口号,看到如下页面就完成安装了。

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 获取

类型地址
版本库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 部署实践》 . 作者&#xff1a;张昇&#xff0c;河北东软软件有限公司高级软件工程师&#xff0c;腾讯云社区作者。 爱可生开源社区出品&#xff0c;原创内容未经授权不得随意使用&#xff0c;转载请联系小编并注明来源。 本文共 32…...

爬虫的分类

爬虫的分类 网络爬虫按照系统结构和实现技术&#xff0c;大致可分为4类&#xff0c;即通用网络爬虫、聚焦网络爬虫、增量网络爬虫和深层次网络爬虫。 1.通用网络爬虫&#xff1a;搜索引擎的爬虫 比如用户在百度搜索引擎上检索对应关键词时&#xff0c;百度将对关键词进行分析…...

简说vue-router原理

vue-router原理 hash模式 实现原理 改变描点监听描点变化 history模式 实现原理 改变url监听url变化 abstracthash 和 history 模式有什么区别&#xff1f; url 不一样原理不同 其他总结扩展 history 出现404错误 vue-router原理 vue-router是vue项目的重要组成部分&#x…...

什么是 Spring 框架?

Spring 框架是一个开源的、轻量级的企业级应用框架&#xff0c;用于构建 Java 应用程序。它提供了全面的基础设施支持&#xff0c;以简化企业级应用的开发。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 工具&#xff0c;下载安装后&#xff0c;如下图&#xff1a; 2、通过Bugly或友盟等异常记录工具&#xff0c;找到闪退的内存地址和偏移量信息上图是Bugy记录的闪退信息&#xff0c;友盟的参考如下&#xff1a; 关于工具的原理和其他描述&#xff0c…...

分布式解决方案与实战

分布式多线程性能调优 使用多线程优化接口 //下单业务public Object order( long userId){long start System.currentTimeMillis();//方法的开始时间戳&#xff08;ms&#xff09;JSONObject orderInfo remoteService.createOrder(userId);Callable<JSONObject> calla…...

GitHub入门介绍

GitHub是一个基于web的版本控制系统&#xff0c;主要用于代码管理和协作开发。它是开源的&#xff0c;并且提供了一系列的功能&#xff0c;方便开发人员进行版本控制、代码托管和团队协作。 以下是GitHub的一些基本概念和功能&#xff1a; 版本控制&#xff1a;GitHub使用Git作…...

IP与子网掩码之间的关系

子网掩码用于确认IP所在的网段&#xff0c;网络位与子网掩码相匹配 如果有另一台主机想要与这个IP地址进行通信&#xff0c;这时需要看两台主机的IP地址是否处于同一网段&#xff0c;处于同一网段才能相互ping通。 那么怎么判断是否处于同一网段呢&#xff1f;我们就看子网掩…...

文档或书籍扫描为 PDF:ScanPapyrus Crack

ScanPapyrus 可让您快速轻松地将文档或书籍扫描为 PDF&#xff0c;批处理模式使扫描过程快速高效&#xff0c;自动处理书籍并将其拆分为单独的页面 用于快速扫描文档、书籍或打印照片的扫描仪软件 快速扫描文档 使用此扫描仪软件&#xff0c;您无需在扫描仪和计算机之间来回移动…...

Clickhouse RoaringBitmap

https://blog.csdn.net/penriver/article/details/119736050 https://juejin.cn/post/7179956435806076988 BitMap适合连续密集的正整数存储&#xff0c;对于稀疏的正整数存储&#xff0c;其性能在很多时候是没办法和int数组相比的&#xff0c;尤其是正整数跨度较大的场景&…...

C语言第四十九弹----模拟使用strcpy函数

使用C语言模拟使用strcpy函数 定义&#xff1a;strcpy 函数是 C 标准库中用于字符串复制的函数。它接受两个参数&#xff0c;第一个参数 dest 是目标字符串的指针&#xff0c;第二个参数 src 是源字符串的指针&#xff0c;函数的功能是将源字符串复制到目标字符串中&#xff0…...

docker搭建maven私库Nexus3

什么是Maven私服&#xff1f; Maven 私服是一种特殊的Maven远程仓库&#xff0c;它是架设在局域网内的仓库服务&#xff0c;用来代理位于外部的远程仓库&#xff08;中央仓库、其他远程公共仓库&#xff09;。 当然也并不是说私服只能建立在局域网&#xff0c;也有很多公司会…...

Java 基础学习(十)包装类、异常

1 包装类 1.1 包装类概述 1.1.1 什么是包装类 在进行类型转换时&#xff0c;有一种特殊的转换&#xff1a;将 int 这样的基本数据类型转换为对象&#xff0c;如下图所示&#xff1a; 所有基本类型都有一个与之对应的类&#xff0c;即包装类&#xff08;wrapper&#xff09;。…...

STM32的基本定时器注意点

本文介绍了STM32基本定时器3个重要的寄存器PSC、ARR、CNT&#xff0c;以及缓冲机制和计数细节。 基本定时器的框图 预分频器寄存器(TIMx_PSC)可以在运行过程中修改它的数值&#xff0c;新的预分频数值将在下一个更新事件时起作用。因为更新事件发生时&#xff0c;会把 TIMx_PS…...

浅谈NLP和大模型的关系

目录 一、什么是NLP 二、NLP的应用举例 三、NLP的Python实现举例 四、NLP和大模型的关系 五、NLP的难点 5.1 内容的有效界定 5.2 消歧和模糊性 5.3 有瑕疵的或不规范的输入 5.4 语言行为与计划 六、研究热点 一、什么是NLP 如果单独说NLP这3个字母&#xff0c;具有两…...

k8s上安装KubeSphere

&#x1f369;安装KubeSphere &#x1f36a;前置环境&#x1f36a;安装nfs-server文件系统&#x1f36a;配置nfs-client&#x1f36a;配置默认存储&#x1f36a;创建了一个存储类&#x1f36a;metrics-server集群指标监控组件 &#x1f36a;安装KubeSphere&#x1f36a;执行安装…...

Linux 链接器如何使用静态库来解析引用

文章目录 通过进行代码实践静态库在编译时被链接到可执行文件中的基本原理原理总结 QA:.obj文件是什么? 通过进行代码实践 链接器在解析引用时&#xff0c;可以使用静态库来满足对未定义符号的引用。以下是使用静态库的一般步骤&#xff1a; 编写代码&#xff1a; 首先&#…...

vue实现滑动验证

效果图&#xff1a; 源码地址&#xff1a;github文档地址&#xff1a; https://github.com/monoplasty/vue-monoplasty-slide-verify 使用步骤&#xff1a;1&#xff0c;安装插件&#xff1a; npm install --save vue-monoplasty-slide-verify 在main.js中使用一下&#xff…...

***Cpolar配置外网访问和Dashy

Dashy是一个开源的自托管的导航页配置服务,具有易于使用的可视化编辑器、状态检查、小工具和主题等功能。你可以将自己常用的一些网站聚合起来放在一起,形成自己的导航页。一款功能超强大,颜值爆表的可定制专属导航页工具 结合cpolar内网工具,我们实现无需部署到公网服务器…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...