内网全断,怎么核实高炉和烧结系统的数据库对接信息

周五下午,我接到一个任务:核实高炉系统和烧结系统的数据库及点位对接信息。打开终端探了一下内网业务节点的常用端口,全部 TCP 超时------远程接入工具没登录,内网完全不通。没法连库查数据,没法跑脚本验证。只能翻配置文件。

这不是最理想的状态,但也不能就此停工。下面记录一下我实际怎么做、踩了什么坑、最后报告里怎么写。

内网全断:先划清取证边界

内网不通时,所有结论只能来自静态文件。我列了四台内网节点(两台业务节点、一台外部 MES 节点)的常用端口,逐一 TCP 探测,全部超时。远程接入工具未登录,短时间内也连不上。

这意味着几件事我必须写进报告开头:

  • 数据库里实际存了什么数据、点位是否真的在采集、Redis 里有没有热缓存,这些我完全看不到。
  • 我能看到的只有:连接串指向哪个节点、哪个库、哪个 db 编号、鉴权用的哪个实例。
  • 任何涉及"运行时状态"的结论,都不能由我出具。

在报告第一行就标注"内网全断,以下结论基于静态配置文件与初始化脚本原文,未经运行时验证",读者才知道该给这些结论打几折。跳过这一步,后面写再多细节都白搭。

配置文件逐行取证:yml 里藏着什么

高炉系统的业务配置在 ironmaking-server 模块的 application-dev.yml 里,烧结系统在 ironmaking-sj-server 的同名文件中。我逐段读了两个文件,把每个连接信息标上行号,方便同事复核。

高炉侧,我在 yml 里定位到以下连接配置:

  • 业务库:内网 A 节点 3306 端口,库名 iron(yml 第 4-6 行)
  • 业务 Redis:同节点 6380 端口,db 编号 4(第 26-30 行)
  • 鉴权 Redis:内网 B 节点 6379 端口,db 编号 11(第 91-98 行)
  • IoTDB 时序库:A 节点 6667 端口(第 36-41 行)
  • 外部 MES 库:10 段地址 3306 端口,库名 tqts,账号为独立业务用户(第 78-83 行)
  • Socket 通信:A 节点 8191 端口(第 52-56 行)

烧结侧文件结构类似,但有一个关键发现------它的业务库连接串指向和高炉完全相同:同一个 iron 库、同一个 3306 端口。区别只在 Redis 的 db 编号和 IoTDB 的表前缀上。

两个系统共用一个库:最容易漏的坑

这一点如果靠"猜",大概率会漏掉。

高炉和烧结在业务上是两个独立模块,前端页面分开部署,运维同学习惯性地认为它们各有各的库。但配置文件原文写得很清楚:烧结服务连的业务库就是 iron,和高炉共用。两者通过 Redis 不同 db 编号、IoTDB 不同表前缀来隔离数据。

这个发现直接影响了后续操作的风险评估。任何数据库迁移、主从切换、权限变更,都必须同时拉两个服务的影响面。我把这条写进了报告的"风险提示"栏,并附了两个模块的 yml 原文截图,避免下游同事只看一个模块就动手。

初始化 SQL 和 Java 常量:补充证据链

光看 yml 不够。我翻了项目根目录 init_sql/ 文件夹,里面有两张关键表:

  1. 点位映射表:把 DCS 点位编号映射到业务字段名,约 180 条记录。
  2. 系统字典表:枚举炉型、烧结工艺参数等。

Java 代码里有个 PointConstant.java,硬编码了 200 多个点位编号,注释里标了每个点位对应的物理量(炉顶压力、风口温度、烧结料温等)。我拿这些编号和 SQL 映射表做了交叉比对,记录是对得上的。

但因为内网不通,我无法确认这些点位在 DCS 侧是否真的在采集、数据是否落库。报告里我逐条标注了"基于代码常量,未经运行时验证",没有替它们背书。

三条可以带走的经验

  1. 先声明取证边界,再写结论。 网络不通就是不通,别假装验证过连通性。报告第一句话写清楚证据来源和局限,读者才知道该给结论打几折信任。

  2. 配置文件加行号,结论才可追溯。 每个连接信息都标注 yml 行号(比如 :4-6、:26-30),同事拿到报告可以直接 sed -n '4,6p' 定位原文,不用重新翻文件。报告的价值不在于"我查了",而在于"你五秒内能验证我查的"。

  3. 别假设"一个系统一个库"。 共用库在遗留项目里太常见了。做数据库变更前,grep 一下所有模块的 application*.yml,把连接串拉出来放一张表里横向对比,比问运维靠谱得多。


做自动化这几年,最耗时间的从来不是写代码,是摸清每个平台的脾气。

这篇里提到的坑,都是真金白银踩出来的。 这篇里的场景你踩过类似的吗?是卡在「需求说不清」还是「改完就崩」? 评论区说说,我按最多人卡的点接着写。

相关推荐
weavecodes27 分钟前
双层缓存与权限实时生效:织码在线教育系统的 Caffeine + Redis 设计
数据库
bksczm42 分钟前
InnoDB 页结构详解:页类型、页头页尾、数据行与页目录
数据库·mysql
bksczm1 小时前
InnoDB 行格式详解:DYNAMIC / COMPACT / COMPRESSED / REDUNDANT
java·开发语言·数据库
字节跳动开源2 小时前
OpenViking连接业务系统,LLM Wiki一键编译
数据库·开源
进击的荆棘3 小时前
MySQL——数据库基础
数据库·mysql
Decay__3 小时前
22_MySQL 运维自动化平台 —— 部署编排 + 监控 + 巡检 + 告警 + 工单闭环一体化
运维·数据库·sql·mysql·架构
codeejun3 小时前
每日一Go·MySQL-11、覆盖索引 & 回表原理
javascript·数据库·mysql
CoderYanger4 小时前
Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)
java·数据库·spring·面试·职场和发展·java-ee·mybatis
XLYcmy4 小时前
信息检索报告数字经济赋能城市低碳治理的路径研究——基于“传统数据库 + 生成式人工智能”双轮驱动的检索实践 检索实施与结果分析 Web of Science
数据库·ai·llm·prompt·ssci·deepseek·wos