要完成 HADR 数据库实例的 Db2 滚动更新,请编辑与您的 Db2 服务关联的自定义资源 (CR) 的源 YAML 文件。
开始之前
注: 此程序同样适用于 Db2uInstance CR。 要修改此过程以适用于 Db2uInstance CR,请用 db2uinstance 替换 db2ucluster。
- 升级服务 Db2。 有关更多信息,请参阅升级指南 Db2。
- 确保您的主数据库和主备用数据库处于
PEER 正常状态。
- 若您已使用 创建了 etcd 外部存储库 etcd ,该存储库与 打包 Db2 在一起,请参阅《 使用 映像 etcdDb2 创建的 etcd 外部存储库升级指南》,了解如何升级至最新映像。 这些步骤应在HADR滚动升级完成后执行,或在任务流程的第17步与第18步之间执行。
关于本任务
若您正在升级至
Db2 ,则在处理过程从一个数据库切换到另一个数据库时会出现中断。 中断的持续时间取决于自动客户端重定向(ACR)在主连接和备用连接之间切换所需的时间。
注意: 此升级过程将确保至少一个HADR数据库在整个升级过程中保持可用。
过程
- 修改部署所需的环境和版本变量:
DB2UCLUSTER_PRIMARY="db2oltp-crd-hadr-primary"
DB2UCLUSTER_STANDBY="db2oltp-crd-hadr-standby"
PROJECT_PRIMARY="zen"
PROJECT_STANDBY="zen"
DB2_VERSION="s12.1.2.0"
Db2uCluster 部署所在命名空间中的名称可通过
oc get db2ucluster 命令获取。 是
DB2_VERSION 您想要升级到的版本号。
- 在您的部署上运行停止调速器命令。
注意: 该设备不支持辅助备用电源运行。 在辅助部署中,此步骤并非必要。
请先在您的主备部署上运行该命令,然后再在主部署上运行:
oc exec -it c-${DB2UCLUSTER_STANDBY}-db2u-0 -n ${PROJECT_STANDBY} -- sv stop governor
oc exec -it c-${DB2UCLUSTER_PRIMARY}-db2u-0 -n ${PROJECT_PRIMARY} -- sv stop governor
- 升级您的备用部署。
- 将
Db2uCluster 自定义资源更新至新版本:oc patch db2ucluster ${DB2UCLUSTER_STANDBY} -n ${PROJECT_STANDBY} --type merge -p "{\"spec\":{\"version\":\"${DB2_VERSION}\"}}"
当备用部署升级完成时,系统
Db2uClusterREADY 将返回。
- 返回状态:
oc get db2ucluster ${DB2UCLUSTER_STANDBY} -n ${PROJECT_STANDBY}
- 如果HADR拓扑中存在辅助部署,请逐个进行升级。 重复此步骤,并等待每次部署返回状态
READY 。
- 为备用数据库切换角色,将其设置为新的主数据库:
oc exec -it c-${DB2UCLUSTER_STANDBY}-db2u-0 -n ${PROJECT_STANDBY} -- su - db2inst1
db2 takeover hadr on db ${DBNAME}
- 升级新的备用(原主)部署。
- 将
Db2uCluster 自定义资源更新至新版本:oc patch db2ucluster ${DB2UCLUSTER_PRIMARY} -n ${PROJECT_PRIMARY} --type merge -p "{\"spec\":{\"version\":\"${DB2_VERSION}\"}}"
当备用部署升级完成时,系统
Db2uClusterREADY 将返回。
- 返回状态:
oc get db2ucluster ${DB2UCLUSTER_PRIMARY} -n ${PROJECT_PRIMARY}
- 更新数据库。
- 更新当前主节点(原备用节点)部署上的数据库:
oc exec -it c-${DB2UCLUSTER_STANDBY}-db2u-0 -n ${PROJECT_STANDBY} -- bash
su - db2inst1 -s /bin/bash -lc 'db2_update_upgrade --databases --post-upgrade'
- 等待日志重放完成。
- 通过运行以下命令并查看状态,确保HADR对已再次达到
PEER 状态:
oc exec -it c-${DB2UCLUSTER_STANDBY}-db2u-0 -n ${PROJECT_STANDBY} -- manage_hadr -status
- 执行以下命令,停用当前备用(原主)部署中的数据库,然后重新启用该数据库:
oc exec -it c-${DB2UCLUSTER_PRIMARY}-db2u-0 -n ${PROJECT_PRIMARY} -- su - db2inst1
db2 deactivate db ${DBNAME}
db2 activate db ${DBNAME}
如果HADR拓扑中存在辅助部署,请重复此步骤以停用并激活每个部署。
- 执行以下命令完成角色切换,以恢复到原始的主部署:
oc exec -it c-${DB2UCLUSTER_PRIMARY}-db2u-0 -n ${PROJECT_PRIMARY} -- su - db2inst1
db2 takeover hadr on db ${DBNAME}
- 执行以下命令,停用后再启用备用部署中的数据库:
oc exec -it c-${DB2UCLUSTER_STANDBY}-db2u-0 -n ${PROJECT_STANDBY} -- su - db2inst1
db2 deactivate db ${DBNAME}
db2 activate db ${DBNAME}
- 在初始部署中启动调速器:
oc exec -it c-${DB2UCLUSTER_PRIMARY}-db2u-0 -n ${PROJECT_PRIMARY} -- su - db2inst1
${HOME}/governor/governor.sh start
- 启动备用部署中的调速器:
oc exec -it c-${DB2UCLUSTER_STANDBY}-db2u-0 -n ${PROJECT_STANDBY} -- su - db2inst1
${HOME}/governor/governor.sh start