数据库 CI/CD 实践:如何管理多环境 SQL 变更与发布流程

一次新版本发布,从开发环境走到生产环境,通常需要经历开发、测试、预发布、生产等等多个阶段。当数据库变更越来越多,除了自动检查和执行 SQL,环境一多,问题也随之而来:

  • SQL 是否会在传递过程中被改动?
  • SQL 变更哪个环境执行过了?
  • 多个项目发布流程该如何统一管理?

针对这些问题,CloudDM 新版本推出了数据库 CI/CD 「发布流编排」功能,同时也支持了 GitLab 作为发布源。

什么是发布流编排?

从流程上看,一次数据库变更无非是从开发环境逐步走向生产环境,流程似乎并不复杂,但在实际执行过程中,往往会受到以下问题的影响:

  • 流程复杂:多环境、多环节协同,发布进度难以统一管理。
  • 权限混乱:发起、审批和执行边界不清,责任难以落实。
  • SQL 变更管理不规范:依赖人工传递,容易出现版本不一致且难以追溯。

发布流编排,是将原本相互独立的数据库发布流程,按照真实的交付顺序组织成一条完整链路。

使用 CloudDM 发布流编排功能,根据实际发布顺序组成多级拓扑,每个发布流节点均可独立配置负责人、审核规则和执行方式。上游变更执行成功后,SQL 将自动传递至下游,无需人工重复提交,实现发布流程、权限和 SQL 变更的统一管理。

产品界面-创建发布流_compressed.webp

SQL 工单全流程追踪

CloudDM 4.1.0 优化了 SQL 工单,可以查看 SQL 识别、行为分析、安全规则检查和执行阶段的进度、统计、日志及失败原因。

在工单详情中可以看到:创建 → 分析 → 审批 → 确认 → 执行。每个步骤都会显示相应的状态、处理时间和处理人。

进入「分析」步骤后,还可以继续查看 SQL 的行为、规则和数据分析结果。例如,可以看到本次变更包含多少条 SQL、涉及多少个数据库对象、产生了多少次操作。安全规则检查结果、各项处理耗时和失败信息也会直接显示在页面中。

分析_compressed.webp

当数据库变更进入执行阶段后,还可以查看具体 SQL 的执行状态和相关日志。

执行_compressed.webp

当一项数据库变更出现异常时,可以先确定问题发生在哪个步骤,再结合分析结果、规则检查、错误信息和执行日志继续排查,定位后可直接在详情页对失败节点发起重试。

支持直接上传 SQL 文件

除了通过代码仓库获取 SQL 变更,CloudDM CI/CD 也支持手动提交 SQL。需要发布数据库变更时,可以直接在编辑器中输入 SQL,也可以选择直接上传 .sql 文件导入,再触发对应的数据库变更。

sql_compressed.webp

支持私有化 GitLab

除了直接上传 SQL 文件,CloudDM 也支持通过 GitLab、Gitee 等代码仓库管理数据库变更。CloudDM 4.1.0 新增了对私有化 GitLab 的支持。企业内部部署的 GitLab 可以直接作为 CI/CD 发布源,目前支持 HTTP / HTTPS、非标准端口、子路径部署,以及 Push、Merge Request Webhook。

创建发布流时,可以选择 GitLab 作为变更源,并配置代码仓库、目标分支和脚本路径,同时指定需要发布的数据库、实例和 Schema。

gitlab_compressed.webp

gitlab2_compressed.webp

快速体验

CloudDM 是一款开源数据库管理平台,采用 Apache 2.0 协议。你可以自行部署、修改和二次开发,也可以将其部署到自己的生产环境中。CloudDM 支持单机、集群、Docker、Kubernetes 等多种部署方式。使用 Docker 可以直接启动:

国内镜像

docker run -d --name cgdm-alone \
  --restart always \
  -p 8222:8222 \
  -v cgdm_alone_conf:/root/cgdm/alone/conf \
  -v cgdm_alone_logs:/root/cgdm/alone/logs \
  -v cgdm_alone_data:/root/cgdm/alone/data \
  -v cgdm_alone_mysql_data:/var/lib/mysql \
  cloudcanal-registry.cn-shanghai.cr.aliyuncs.com/clougence/cgdm-alone:latest

海外镜像

docker run -d --name cgdm-alone \
  --restart always \
  -p 8222:8222 \
  -v cgdm_alone_conf:/root/cgdm/alone/conf \
  -v cgdm_alone_logs:/root/cgdm/alone/logs \
  -v cgdm_alone_data:/root/cgdm/alone/data \
  -v cgdm_alone_mysql_data:/var/lib/mysql \
  bladepipe/cgdm-alone:latest

启动完成后,浏览器访问:http://localhost:8222

更多信息:

如果 CloudDM 对你有帮助,欢迎到 GitHub 或 Gitee 为项目点一个 Star,我们将会非常感激。也欢迎使用之后把反馈告诉我们。

posted @ 2026-08-28 15:12  clougence  阅读(5)  评论(0)    收藏  举报