← 返回文章列表
信创 4 分钟阅读 炬鲸团队

信创落地:可观测平台对接达梦 DM8 的适配记录

信创项目里数据库要换成达梦 DM8,可观测平台也得跟着适配。本文记录一次真实适配:连接串、方言、分页与事务差异,以及如何在国产 ARM 环境下一键部署。

为什么数据库要跟着换

信创项目的验收清单里,「数据库国产化」是绕不开的一条。平台侧如果还依赖 Oracle 或 MySQL 原厂,验收就过不了。可观测平台本身也存元数据——服务、告警规则、审计日志——所以数据库必须支持国产替代。

炬鲸 OBSERVE 采用 Go 架构,数据库访问层做了方言抽象,对接达梦 DM8 不需要改业务代码,只换驱动和连接串。下面记录一次真实适配里的关键点。

连接串与驱动

DM8 提供 JDBC 兼容驱动,Go 侧用达梦官方的 go-driver 或走 DM 的 MySQL 兼容模式。若项目已大量使用 MySQL 生态,推荐开 DM8 的 MySQL 兼容模式,改动最小:

dsn := "dm://SYSDBA:Sysdba123@192.168.10.20:5236?compatibleMode=mysql"

平台配置里只需改几个环境变量:

DB_TYPE=dm8
DB_HOST=192.168.10.20
DB_PORT=5236
DB_USER=SYSDBA
DB_PASSWORD=********
DB_SCHEMA=OBSERVE

三处必须注意的方言差异

  1. 分页:MySQL 的 LIMIT m, n 在 DM 里要写成 LIMIT n OFFSET m,或直接用 DM 的 TOP;平台侧已统一封装分页函数,业务层无感;
  2. 标识符:DM 默认把未加引号的标识符转大写,建表、建索引时统一用小写加引号,避免「表名大小写敏感」踩坑;
  3. 事务隔离:DM8 默认读已提交,但长事务下和 MySQL 的 MVCC 行为有细微差异,审计写入要走独立连接,避免和查询事务互相锁等待。

这三处是适配时最容易出的坑,改完基本就能跑通。

从 MySQL 迁移的路径

存量数据从 MySQL 迁到 DM8,走「结构 + 数据」两步:先按 DM 的方言重生成建表语句(注意上面的标识符规则),再用 DM 提供的迁移工具或 dts 把数据导过去。迁移完要重点核对两件事:

  • 时间字段的精度与默认值,DM 的 TIMESTAMP 和 MySQL 在毫秒处理上略有差异;
  • 自增主键和索引,DM 的序列(SEQUENCE)语义和 MySQL 的 AUTO_INCREMENT 不同,主键生成逻辑要同步改。

ARM 环境一键部署

信创环境常是鲲鹏/飞腾 + 麒麟 V10。炬鲸 OBSERVE 提供 ARM64 单二进制,配好上面的环境变量后:

wget https://download.jjhub.cn/observe/arm64/observe
chmod +x observe
./observe --config ./env

不需要编译,不需要装 Go 运行时,一条命令拉起。用 systemd 托管即可开机自启。连接池建议按 DM8 的并发上限调小,实测默认池在国产 ARM 上稳定,压力测试时把最大连接数控制在 DM8 配置的 70% 以内更稳。

验收要点

  • 元数据读写:服务、告警规则、审计日志在 DM8 上增删改查正常;
  • 故障演练:停掉 DM8 主库,确认平台能按配置自动切到备库或降级为只读;
  • 数据不出内网:所有数据只落在内网 DM8,无外发通道;
  • 等保相关:登录、查询、导出均留审计,支持三权分立。