DB2 HADR 高可用实战:主备状态巡检、故障排查与主备切换操作指南
发布时间:2026/10/19 1:52:09 锦皓数字建站

适用环境DB2版本11.5 数据库TESTDB DB2实例用户db2inst1 DB2服务名db2c_db2inst1 DB2业务端口50000/tcp 架构HADR主备db2inst1为 DB2 实例用户DB2 实例进程db2sysc由该用户运行。执行 DB2 管理及巡检命令前建议先切换至该用户。原巡检资料也是按照db2sysc→su - db2inst1→ 数据库检查的顺序执行。一、日常快速巡检1. 检查 DB2 服务进程ps -ef | grep db2sysc | grep -v grep正常能看到db2inst1用户运行的db2sysc进程。2. 检查 DB2 业务端口ss -lnt | grep 50000正常应看到50000端口处于LISTEN说明 DB2 业务监听端口正常。3. 切换 DB2 实例用户su - db2inst1确认whoami正常返回db2inst14. 检查数据库状态db2 list active databases正常应看到Database name TESTDB业务运行期间还应存在正常数据库连接。原巡检文档也将TESTDB Active和应用连接情况作为数据库运行状态判断项。5. 测试数据库连接db2 connect to TESTDB正常能够成功连接无报错。测试 SQLdb2 values current timestamp正常能够正常返回数据库当前时间。查看当前应用连接db2 list applications正常能够看到当前数据库连接信息。二、检查 HADR 主备状态主、备两台服务器均执行db2pd -db TESTDB -hadr重点只看HADR_ROLE PRIMARY / STANDBY HADR_STATE PEER HADR_CONNECT_STATUS CONNECTED HADR_LOG_GAP(bytes) 0 或较小 STANDBY_RECV_REPLAY_GAP(bytes) 0 或较小角色判断HADR_ROLE PRIMARY 当前主库 HADR_ROLE STANDBY 当前备库正常状态核心标准HADR_STATE PEER HADR_CONNECT_STATUS CONNECTED HADR_LOG_GAP(bytes) 0 或较小其中PEER表示主备已经进入正常同步状态CONNECTED表示主备 HADR 通信正常。日常正常判断DB2进程正常 50000端口监听正常 TESTDB Active 数据库可以连接 SQL执行正常 应用连接正常 HADR_STATE PEER HADR_CONNECT_STATUS CONNECTED LOG_GAP正常满足以上条件即可判断DB2 数据库服务及 HADR 主备运行正常。三、正常主备切换1. 切换前检查主备两端执行db2pd -db TESTDB -hadr确认当前主库 HADR_ROLE PRIMARY 当前备库 HADR_ROLE STANDBY 主备状态 HADR_STATE PEER HADR_CONNECT_STATUS CONNECTED HADR_LOG_GAP(bytes) 0 或较小正常切换前应确认主备处于PEER状态。2. 执行正常切换必须在当前备库即HADR_ROLE STANDBY的服务器执行db2 takeover hadr on db TESTDB正常返回DB20000I The TAKEOVER HADR ON DATABASE command completed successfully.原切换记录同样明确注明普通takeover在STANDBY备库执行。切换后原主库PRIMARY → STANDBY 原备库STANDBY → PRIMARY3. 切换后检查主备两端再次执行db2pd -db TESTDB -hadr确认HADR_ROLE 已完成互换 HADR_STATE PEER HADR_CONNECT_STATUS CONNECTED HADR_LOG_GAP(bytes) 0 或较小在新主库执行db2 connect to TESTDB db2 values current timestamp db2 list applications确认数据库连接、SQL及业务连接正常。四、故障切换只有在原主库发生故障、无法正常完成普通主备切换时才在存活备库执行db2 takeover hadr on db TESTDB by forceBY FORCE属于故障接管命令正常主备切换不要使用。原切换资料也将其定义为主库故障情况下的强制接管方式。五、日常常用命令汇总# 检查DB2服务 ps -ef | grep db2sysc | grep -v grep # 检查DB2业务端口 ss -lnt | grep 50000 # 切换DB2实例用户 su - db2inst1 # 检查数据库状态 db2 list active databases # 测试数据库连接 db2 connect to TESTDB # 测试SQL db2 values current timestamp # 查看应用连接 db2 list applications # 检查HADR主备状态 db2pd -db TESTDB -hadr # 正常主备切换当前备库执行 db2 takeover hadr on db TESTDB # 故障强制切换仅主库故障时使用 db2 takeover hadr on db TESTDB by force核心判断口诀服务正常 → 50000端口正常 → TESTDB正常 → 数据库能连接 → SQL正常 → 业务连接正常 → HADR PEER → CONNECTED → LOG_GAP正常正常切换记住一句找到HADR_ROLE STANDBY的备库在备库执行db2 takeover hadr on db TESTDB。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。