适用环境:
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正常:能够成功连接,无报错。
测试 SQL:
db2 "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 force
BY 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。