来自 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 履行装置

履行装置指令。

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

SQL 审阅神器:SQLE 3.0 布置实践

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: 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 装置测验

检查服务进程。

SQL 审阅神器:SQLE 3.0 布置实践

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

SQL 审阅神器: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
# 留意替换 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 端口号,看到如下页面就完成装置了。

SQL 审阅神器:SQLE 3.0 布置实践

总结

4.1 全体过程

  • RPM 装置:全体装置流程比较清晰,按照官方文档能够正常完成装置布置,需求留意的是 secret_key 字段装备有两处,假如因为装备文件没写正确,导致装置失败主张删去数据库后重新测验,防止第一次发动初始化的数据不正确,影响后续装置。

  • Docker 装置:根据 Docker 装置仍是便利,全程无坑五分钟布置完成,全体装置体会十分优异。

4.2 RPM 装置遇到的问题

端口错误

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

SQL 审阅神器:SQLE 3.0 布置实践

SQL 审阅神器:SQLE 3.0 布置实践

雍正喵提示:装备文件已修正,感谢纠错。

建库句子待优化

句子后面没有带 ; 结束,需求手动弥补。

SQL 审阅神器:SQLE 3.0 布置实践

雍正喵提示:用户手册当时已修正,能够直接复制运用。

其它没能理解的地方

RPM 装置后已经将服务注册至 systemd 办理,为何还有运用 shell 脚本发动运用,而不是 systemctl start sqld

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

SQL 审阅神器:SQLE 3.0 布置实践

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 审阅和办理。支撑干流的开源、商业、国产数据库,为开发和运维供给流程自动化才能,进步上线效率,进步数据质量。