Db2 pureScale 环境中的 HADR 备用重放

Db2 pureScale 环境中,只有一个 HADR 备用集群成员重放日志,其他成员保持不活动状态。 HADR 主集群中的成员通过使用 TCP 连接将其日志直接传送给重放成员,或者通过受助远程同步复制间接传送。

启动备用数据库时,如果 Db2 实例在该成员上处于联机状态,那么将在指定为 首选重放成员 的成员上激活备用重放服务。 否则,将在其他成员上激活重放。 没有任何方法来控制选择非首选成员;但是,任何正在以重新启动轻量级方式运行的成员(即,在其宿主机上未处于活动状态的成员)将获得最低的优先级。 即使首选重放成员指定是持久的,如果重放因为首选重放成员不可用而在另一个成员上处于活动状态,那么当首选重放成员可用时,也不会在该成员上自动还原重放。 强制在首选重放成员上执行重放的唯一方法是在备用数据库上取消激活 HADR,然后重新激活。

因为备用数据库上的重放成员将重放主数据库上所有成员生成的日志,所以该成员可能会成为瓶颈。 要避免可能出现的影响,您应该将具有更多资源(例如,CPU 和内存)的成员选择为首选重放成员。 通过对其发出 START HADR 命令来隐式指定首选重放成员。 从中发出 START HADR AS STANDBY 命令的成员是备用集群上的首选重放成员; 从中发出 START HADR AS PRIMARY 命令的成员是主集群上的首选重放成员。 仅当主数据库成为备用数据库时,主数据库上首选重放成员的状态才会生效。

如果当前重放成员异常关闭(例如,由于软件或硬件故障)或正常关闭(例如,由于发出了取消激活特定成员的用户命令),那么会将重放自动迁移到其他成员。 如果当前重放成员异常关闭,那么将执行成员崩溃恢复并选择继续重放的成员(在选择期间会设置首选重放成员,可能会也可能不会重新选择旧重放成员)。 只要备用数据库中存在一个联机成员,就会继续执行重放。 要停止重放,请取消激活整个备用数据库。

可以从主数据库或备用数据库查明哪个成员是当前重放成员。 在主数据库上,使用带有 -hadr 参数的 db2pd 命令或 MON_GET_HADR 表函数。 重放成员在STANDBY_MEMBER字段。 如果要从备用数据库确定当前重放成员,那么只能使用 db2pd 命令,因为无法从 Db2 pureScale 环境中的备用数据库调用表函数。 因为您不知道哪个重放成员处于活动状态,所以必须发出以下命令:
db2pd -hadr -db DB_name -allmembers
在输出中,只有当前重放成员具有 HADR 信息; 所有非重放成员都显示Database DB_name not activated on database member X.