信创项目里数据库要换成达梦 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
LIMIT m, n 在 DM 里要写成 LIMIT n OFFSET m,或直接用 DM 的 TOP;平台侧已统一封装分页函数,业务层无感;这三处是适配时最容易出的坑,改完基本就能跑通。
存量数据从 MySQL 迁到 DM8,走「结构 + 数据」两步:先按 DM 的方言重生成建表语句(注意上面的标识符规则),再用 DM 提供的迁移工具或 dts 把数据导过去。迁移完要重点核对两件事:
TIMESTAMP 和 MySQL 在毫秒处理上略有差异;信创环境常是鲲鹏/飞腾 + 麒麟 V10。炬鲸 OBSERVE 提供 ARM64 单二进制,配好上面的环境变量后:
wget https://download.jjhub.cn/observe/arm64/observe
chmod +x observe
./observe --config ./env
不需要编译,不需要装 Go 运行时,一条命令拉起。用 systemd 托管即可开机自启。连接池建议按 DM8 的并发上限调小,实测默认池在国产 ARM 上稳定,压力测试时把最大连接数控制在 DM8 配置的 70% 以内更稳。