作者·2012-04-09 13:36
·

db2 HADR 环境的启停

字数 2306阅读 12927评论 5赞 0
问题:DR test change后发现启动HADR失败。
环境:两个production server ,P1,P2,一台DR server,D1。6个生产数据库分别以primary role运行在P1 & P2,standby       dbs 运行在D1。

DR test操作过程(db2部分):1、运行 db2 takeover hadr on db xx ,使D1上的数据库切换为primary
                            2、检查D1上DB的可用性
                            3、db2 stop hadr on db xx (on all servers)  这是出问题的关键点。
                            4、other operations
                            5  DR结束,要切换role,悲剧的发现HADR无法启动

DR test是另一个DBA操作的,到我接手时,HADR无法启动:
   a3inpcp1@g01zcdrdb001:/home/a3inpcp1> db2 start hadr on db pcpprod as standby
SQL1767N Start HADR cannot complete. Reason code = "1".

原因分析:很显然,在DR test过程中,停止HADR是完全没必要的。其次即使停止HADR,那么由于是在takeover之后stop的,原生产库应该处于前滚暂挂状态。必然是前DBA或者应用的某些操作,导致其脱离前滚暂挂状态,至此,除重建外,别无它法。

information center的说明:

警告: 如果要停止指定的数据库,但仍然想保持其 HADR 主数据库角色或备用数据库角色,那么不要发出 STOP HADR 命令。如果发出 STOP HADR 命令,该数据库将变成标准数据库,并且可能要求进行重新初始化才能继续作为 HADR 数据库工作。而是,请发出 DEACTIVATE DATABASE 命令。

在以下示例中,停止数据库 SOCKS 上的 HADR 操作:

STOP HADR ON DATABASE SOCKS

如果针对不活动的主数据库发出此命令,数据库切换至标准数据库并保持脱机。

如果针对不活动的备用数据库发出此命令,数据库切换至标准数据库、置于前滚暂挂状态,并保持脱机。

如果在活动的主数据库上发出此命令,会停止将日志装入备用数据库,并且在主数据库上关闭所有 HADR 引擎分派单元(EDU)。数据库切换至标准数据库并保持联机。可以继续进行事务处理。可以发出带有 AS PRIMARY 选项的 START HADR 命令来将数据库角色重新切换为主数据库。

如果在活动的备用数据库上发出此命令,那么返回错误消息,指示必须取消激活备用数据库,然后才能尝试将其转换至标准数据库。

对于takeover hadr命令的说明:


  • 只能对备用数据库发出 TAKEOVER HADR 命令。
  • HADR 无法与 DB2® 故障监视器(db2fm)配合使用,此故障监视器可用于自动重新启动发生故障的数据库。如果启用故障监视器,应该知道在可能发生故障的主数据库上可能执行的故障监视器操作。
  • 仅当主数据库和备用数据库处于对等状态,或备用数据库处于远程同步复制暂挂状态时,接管操作才会发生。如果备用数据库处于任何其他状态,将返回错误。
    注: 通过将处于本地同步复制状态的备用数据库转换为标准数据库,可以使其正常使用。要执行此操作,通过发出 DEACTIVATE DATABASE 命令来关闭数据库,然后发出 STOP HADR 命令。一旦停止了 HADR,就必须先在前述的备用数据库上完成前滚操作,然后才能使用 HADR。当数据库从备用数据库转换为标准数据库之后,该数据库不能重新加入 HADR 数据库对。要在两台服务器上重新启动 HADR,请执行初始化 HADR 的过程。

    解决方法:初始化HADR。
    1、启动P1上的数据库,做online backup include logs,然后在D1上恢复数据库。需要强调的是,恢复之后不能做前滚操作。
    2、在D1 db上运行db2 start hadr on db xx as standby (要先启动备库)
    3、在P1 db上运行 db2 start hadr on db xx as primary
    4、db2pd -hadr -d xx 检查hadr状态。

    引申出一个问题,要对HADR备库做维护需要停机该怎么操作? 步骤如下:
    db2 deactivate db xx 
    db2stop
    不要停止hadr,这可能会导致角色丢失。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论5 条评论

Y1YIY1YI其它xxxx
2012-07-19 16:25
v9.5之前的版本是不允许对standby机做备份吧
zhmwangzhmwangPDOceanBase
2012-04-10 17:08
V9.7 FP4/5 db2rfpen 是可以用于HADR的。
db2dummydb2dummy软件开发工程师IBM
2012-04-10 16:05
看来这个case发生了很多次啊

2012-04-10 15:48
zhmwang: 请教下,如果备机成为primary后, 我需要对前主机做offline backup,
因此我必须对前primary做rollforward, 做完备份后,db2rfpen on dbname, start hadr on dbname as
据我所知,在V8是不行的,db2rfpen不能用于HADR,V9没验证过,估计是不行的。
zhmwangzhmwangPDOceanBase
2012-04-09 17:39
请教下,如果备机成为primary后, 我需要对前主机做offline backup,
因此我必须对前primary做rollforward, 做完备份后,db2rfpen on dbname, start hadr on dbname as standby,是否可行?
Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广