DB2 HADR 主备架构活动日志参数优化操作手册

一、适用场景

适用于 DB2 HADR 主备架构下调整数据库日志参数,例如:

复制代码
LOGFILSIZ
LOGPRIMARY
LOGSECOND

本次 TESTDB 调整示例:

复制代码
调整前:
LOGFILSIZ  = 1024   # 4MB
LOGPRIMARY = 16
LOGSECOND  = 22

调整后:
LOGFILSIZ  = 4096   # 16MB
LOGPRIMARY = 20
LOGSECOND  = 30

最大活动日志空间:

复制代码
(LOGPRIMARY + LOGSECOND) × LOGFILSIZ × 4KB

调整前:
(16 + 22) × 1024 × 4KB ≈ 152MB

调整后:
(20 + 30) × 4096 × 4KB ≈ 800MB

二、操作原则

HADR 主从架构建议顺序:

复制代码
检查主从状态
      ↓
先修改从库
      ↓
从库重新激活
      ↓
确认从库恢复 PEER
      ↓
主库写入 DEFERRED 配置
      ↓
等待维护窗口
      ↓
停止业务
      ↓
主库重新激活
      ↓
确认 HADR 恢复 PEER
      ↓
恢复业务

核心原则:

复制代码
先从库,后主库
先验证从库正常,再动主库
任何时候不要同时重启主从
主库重新激活必须安排维护窗口

三、操作用户

DB2 操作统一使用实例用户:

复制代码
su - db2inst1

确认:

复制代码
whoami

应返回:

复制代码
db2inst1

四、变更前检查

主库、从库都先检查:

复制代码
db2pd -db TESTDB -hadr

正常状态必须满足:

主库:

复制代码
HADR_ROLE = PRIMARY
HADR_STATE = PEER
HADR_CONNECT_STATUS = CONNECTED

从库:

复制代码
HADR_ROLE = STANDBY
HADR_STATE = PEER
HADR_CONNECT_STATUS = CONNECTED

重点确认:

复制代码
HADR_LOG_GAP(bytes) 接近 0
STANDBY_ERROR_TIME = NULL

检查当前参数:

复制代码
db2 get db cfg for TESTDB | \
egrep -i "Log file size|primary log|secondary log"

检查磁盘空间:

复制代码
df -h

五、第一步:修改从库

先登录 STANDBY。

例如:

复制代码
10.1.3.66

确认从库状态:

复制代码
db2pd -db TESTDB -hadr

确认无业务连接:

复制代码
db2 list active databases

最好看到:

复制代码
Applications connected currently = 0

修改参数

复制代码
db2 update db cfg for TESTDB using LOGFILSIZ 4096 DEFERRED

db2 update db cfg for TESTDB using LOGPRIMARY 20 DEFERRED

db2 update db cfg for TESTDB using LOGSECOND 30 DEFERRED

正常返回:

复制代码
DB20000I  The UPDATE DATABASE CONFIGURATION command completed successfully.

验证配置:

复制代码
db2 get db cfg for TESTDB | \
egrep -i "Log file size|primary log|secondary log"

应看到:

复制代码
LOGFILSIZ  = 4096
LOGPRIMARY = 20
LOGSECOND  = 30

六、从库重新激活

确认:

复制代码
STANDBY
PEER
CONNECTED
Applications connected = 0

然后:

复制代码
db2 deactivate db TESTDB

成功后:

复制代码
db2 activate db TESTDB

注意:

复制代码
deactivate / activate
= 重新激活 TESTDB 数据库

不是:
db2stop / db2start

也不是:
reboot

七、验证从库

重新激活后:

复制代码
db2pd -db TESTDB -hadr

必须恢复:

复制代码
HADR_ROLE = STANDBY
HADR_STATE = PEER
HADR_CONNECT_STATUS = CONNECTED
HADR_LOG_GAP(bytes) ≈ 0

再确认参数:

复制代码
db2 get db cfg for TESTDB | \
egrep -i "Log file size|primary log|secondary log"

应为:

复制代码
LOGFILSIZ  = 4096
LOGPRIMARY = 20
LOGSECOND  = 30

只有从库恢复:

复制代码
PEER + CONNECTED

以后,才可以继续处理主库。


八、第二步:修改主库配置

登录 PRIMARY。

例如:

复制代码
10.1.3.65

确认 HADR:

复制代码
db2pd -db TESTDB -hadr

必须满足:

复制代码
HADR_ROLE = PRIMARY
HADR_STATE = PEER
HADR_CONNECT_STATUS = CONNECTED

写入参数:

复制代码
db2 update db cfg for TESTDB using LOGFILSIZ 4096 DEFERRED

db2 update db cfg for TESTDB using LOGPRIMARY 20 DEFERRED

db2 update db cfg for TESTDB using LOGSECOND 30 DEFERRED

检查:

复制代码
db2 get db cfg for TESTDB | \
egrep -i "Log file size|primary log|secondary log"

应看到:

复制代码
LOGFILSIZ  = 4096
LOGPRIMARY = 20
LOGSECOND  = 30

此时:

复制代码
配置已保存 ✅
业务继续运行 ✅
主库暂不重新激活 ✅

可以保持这种状态直到维护窗口。


九、维护窗口处理主库

维护窗口开始前先检查:

复制代码
db2pd -db TESTDB -hadr

必须确认:

复制代码
PRIMARY
PEER
CONNECTED

然后应用侧停止业务或连接池。

检查数据库连接:

复制代码
db2 list applications

确认业务连接已经退出。

不要直接使用:

复制代码
db2 force applications all

除非经过审批并确认允许强制断开业务。


十、主库重新激活

业务停止后:

复制代码
db2 deactivate db TESTDB

然后:

复制代码
db2 activate db TESTDB

十一、最终验证

参数验证

复制代码
db2 get db cfg for TESTDB | \
egrep -i "Log file size|primary log|secondary log"

目标:

复制代码
LOGFILSIZ  = 4096
LOGPRIMARY = 20
LOGSECOND  = 30

HADR 验证

复制代码
db2pd -db TESTDB -hadr

主库确认:

复制代码
HADR_ROLE = PRIMARY
HADR_STATE = PEER
HADR_CONNECT_STATUS = CONNECTED
HADR_LOG_GAP(bytes) ≈ 0

从库确认:

复制代码
HADR_ROLE = STANDBY
HADR_STATE = PEER
HADR_CONNECT_STATUS = CONNECTED

然后恢复应用。


十二、最简现场执行版

以后遇到类似调整,直接记住下面这套顺序:

复制代码
① 主从 HADR 必须先确认 PEER / CONNECTED

② 从库:
   修改参数 DEFERRED
   ↓
   deactivate TESTDB
   ↓
   activate TESTDB
   ↓
   等待恢复 PEER

③ 主库:
   修改参数 DEFERRED
   ↓
   暂不重新激活
   ↓
   正常运行等待维护窗口

④ 维护窗口:
   再确认 HADR PEER
   ↓
   停止应用
   ↓
   确认连接退出
   ↓
   deactivate TESTDB
   ↓
   activate TESTDB

⑤ 最终验证:
   参数正确
   PRIMARY / STANDBY 角色正确
   PEER
   CONNECTED
   HADR_LOG_GAP 接近 0
   ↓
   恢复业务

十三、关键注意事项

  1. 所有 DB2 操作使用:

    db2inst1

  2. 不需要手工修改任何 .conf.cfg 文件。

标准方式:

复制代码
db2 update db cfg for TESTDB using ...
  1. 不需要:

    reboot

  2. 不需要:

    db2stop
    db2start

  3. LOGFILSIZ 单位为 4KB:

    1024 = 4MB
    4096 = 16MB

  4. 从库重新激活期间:

    主库业务仍可继续
    但 HADR 高可用冗余暂时降低

因此从库恢复 PEER 前绝不能同时操作主库。

  1. 主库配置可以提前使用 DEFERRED 写入,之后等正常维护窗口再重新激活,没有必要为了参数调整立即停业务。

  2. HADR 判断是否正常,优先看:

    HADR_STATE = PEER
    HADR_CONNECT_STATUS = CONNECTED
    HADR_LOG_GAP 接近 0
    STANDBY_ERROR_TIME = NULL


一句话标准

DB2 HADR 参数变更:先从库修改并重新激活,确认恢复 PEER;再给主库写 DEFERRED 配置,等维护窗口停业务后重新激活主库,最后确认主备 PEER/CONNECTED 后恢复业务。

相关推荐
szarron1 小时前
HTOOL‑SA12 + HT06 近场探头组合实操|手持设备工位 EMI 预兼容排查完整流程
运维·服务器·开发语言·网络·射频工程·频谱仪
我是大猴子1 小时前
MyBatis‑Plus & MyBatis‑Flex 区别
java·服务器·数据库
csdn_aspnet1 小时前
如何从电脑主机拷东西到VWmare虚拟机
linux·运维·服务器·windows·vmware·虚拟机
鸽芷咕1 小时前
SQL Server数据库迁移避坑指南:老代码不用重写,金仓KES V9R4C019把路铺平了
数据库
鸽芷咕1 小时前
MongoDB 鸿蒙 PC 适配全记录:从 Bazel 交叉编译到 HNP 原生数据库服务
数据库·mongodb·harmonyos
码农幻想梦1 小时前
“找不到 www.bilibili.com 的服务器 IP 地址”解决办法
运维·服务器·tcp/ip
YangYang9YangYan1 小时前
2026 校招管理会计 JD 拆解,数据分析能力要求与工具清单
java·数据库·数据分析
Vcaker1 小时前
Linux学习28-Kubernetes service
linux·运维·学习
gf13211111 小时前
python_调用远程服务器上的openclaw
服务器·python·php