对您的 Db2 HADR数据库应用滚动更新

要完成 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数据库在整个升级过程中保持可用。

过程

  1. 修改部署所需的环境和版本变量:
    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 您想要升级到的版本号。
  2. 在您的部署上运行停止调速器命令。
    注意: 该设备不支持辅助备用电源运行。 在辅助部署中,此步骤并非必要。
    请先在您的主备部署上运行该命令,然后再在主部署上运行:
    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
  3. 升级您的备用部署。
    1. Db2uCluster 自定义资源更新至新版本:
      oc patch db2ucluster ${DB2UCLUSTER_STANDBY} -n ${PROJECT_STANDBY} --type merge -p "{\"spec\":{\"version\":\"${DB2_VERSION}\"}}"
      
      当备用部署升级完成时,系统 Db2uClusterREADY 将返回。
    2. 返回状态:
      oc get db2ucluster ${DB2UCLUSTER_STANDBY} -n ${PROJECT_STANDBY}
    3. 如果HADR拓扑中存在辅助部署,请逐个进行升级。 重复此步骤,并等待每次部署返回状态 READY
  4. 为备用数据库切换角色,将其设置为新的主数据库:
    oc exec -it c-${DB2UCLUSTER_STANDBY}-db2u-0 -n ${PROJECT_STANDBY} -- su - db2inst1
    db2 takeover hadr on db ${DBNAME}
  5. 升级新的备用(原主)部署。
    1. Db2uCluster 自定义资源更新至新版本:
      oc patch db2ucluster ${DB2UCLUSTER_PRIMARY} -n ${PROJECT_PRIMARY} --type merge -p "{\"spec\":{\"version\":\"${DB2_VERSION}\"}}"
      当备用部署升级完成时,系统 Db2uClusterREADY 将返回。
    2. 返回状态:
      oc get db2ucluster ${DB2UCLUSTER_PRIMARY} -n ${PROJECT_PRIMARY}
  6. 更新数据库。
    1. 更新当前主节点(原备用节点)部署上的数据库:
      oc exec -it c-${DB2UCLUSTER_STANDBY}-db2u-0 -n ${PROJECT_STANDBY} -- bash
      su - db2inst1 -s /bin/bash -lc 'db2_update_upgrade --databases --post-upgrade' 
    2. 等待日志重放完成。
    3. 通过运行以下命令并查看状态,确保HADR对已再次达到 PEER 状态:
      oc exec -it c-${DB2UCLUSTER_STANDBY}-db2u-0 -n ${PROJECT_STANDBY} -- manage_hadr -status
  7. 执行以下命令,停用当前备用(原主)部署中的数据库,然后重新启用该数据库:
    oc exec -it c-${DB2UCLUSTER_PRIMARY}-db2u-0 -n ${PROJECT_PRIMARY} -- su - db2inst1
    db2 deactivate db ${DBNAME}
    db2 activate db ${DBNAME}
    如果HADR拓扑中存在辅助部署,请重复此步骤以停用并激活每个部署。
  8. 执行以下命令完成角色切换,以恢复到原始的主部署:
    oc exec -it c-${DB2UCLUSTER_PRIMARY}-db2u-0 -n ${PROJECT_PRIMARY} -- su - db2inst1
    db2 takeover hadr on db ${DBNAME}
  9. 执行以下命令,停用后再启用备用部署中的数据库:
    oc exec -it c-${DB2UCLUSTER_STANDBY}-db2u-0 -n ${PROJECT_STANDBY} -- su - db2inst1
    db2 deactivate db ${DBNAME}
    db2 activate db ${DBNAME}
  10. 在初始部署中启动调速器:
    oc exec -it c-${DB2UCLUSTER_PRIMARY}-db2u-0 -n ${PROJECT_PRIMARY} -- su - db2inst1
    ${HOME}/governor/governor.sh start
  11. 启动备用部署中的调速器:
    oc exec -it c-${DB2UCLUSTER_STANDBY}-db2u-0 -n ${PROJECT_STANDBY} -- su - db2inst1
    ${HOME}/governor/governor.sh start

结果

您已成功升级HADR Db2 数据库。