在 HADR 环境中升级 DB2 服务器(不需要重新初始化备用数据库)
将 Enterprise Server Edition Db2 V 10.5 修订包 7 或更高版本的数据库升级到 Db2 V 11.1时,请在高可用性灾难恢复 (HADR) 环境中使用此过程。 此过程将保持数据库角色,并依赖 HADR 功能共有的正常日志传送和日志重放特征。 此过程不需要停止 HADR 以进行升级,也不需要重新初始化 HADR。 这缩短了不存在备用数据库的时间段,也免除了将备份映像发送至备用站点以重新进行初始化的成本。
此过程依赖于 Db2 V 10.5 修订包 7 或更高版本的主数据库将所有日志数据交付到修订包 7 或更高版本的备用数据库以及重放了所有接收到的日志数据的备用数据库。
Db2 版本 11.1 备用数据库无法重放先前 Db2 版本中的日志数据。 此过程通过在 db2iupgrade 期间运行的 db2ckupgrade 或者用于与数据库建立独占连接的任何 db2ckupgrade 调用来强制施加此限制,以进行适当的数据库一致性检查。
可以将此过程应用于 Enterprise Server Edition 环境中使用单备用数据库配置或多备用数据库配置的 HADR 数据库。
准备工作
- 复查 HADR 的系统需求。 有关更多详细信息,请参阅 Db2 高可用性灾难恢复 (HADR) 的系统需求。
- 如果您有两个按以下方式设置的 HADR 数据库(数据库 A 和数据库 B),请在一个数据库上执行角色切换,以使两个主数据库在升级期间位于同一系统上:
- 数据库 A 的主数据库在系统 1 上运行,备用数据库在系统 2 上运行
- 数据库 B 的主数据库在系统 2 上运行,备用数据库在系统 1 上运行
- 请确保您熟悉将 DB2 实例和 DB2 数据库升级时涉及到的步骤。
- 使用 高可用性灾难恢复 (HADR) 监视,确保在运行 db2ckupgrade之前,主数据库的日志传送功能和备用数据库的日志重放功能都正常工作。
- 如果您正在使用“在备用数据库上读取”功能,请确保在主数据库上已启用数据库配置参数 logindexbuild,以便将升级期间进行的索引重新创建发送至备用数据库以重放。 这允许读取连接在备用数据库上升级之后恢复。
- 如果在 HADR 升级过程中发生故障,请确保您熟悉 在 HADR 环境中升级 Db2 服务器时处理故障 (无需备用数据库重新初始化)。
- 所有 DB2 升级、硬件升级和软件升级在应用于生产系统之前,都应该在测试环境中实现。
关于本任务
此升级任务描述了将 Enterprise Server Edition 单备用环境中的 HADR 数据库从 10.5 修订包 7 或更高版本升级到 Db2 V 11.1 的步骤。 主数据库和备用数据库都应使用同一修订包级别的 DB2。
重要信息: Each time you run the db2iupgrade command to upgrade a server, be sure to follow up by running the db2licm -a <license file> command to 重新应用 Db2 许可证.
限制
过程
要将 HADR 环境中的数据库升级到 Db2 V 11.1:
- 在主实例上,使用 db2pd -hadr 或 MON_GET_HADR 命令来监视数据库,以确保主日志发送和备用日志重放不滞后并且正常运行。 监视 HADR 数据库将减少升级过程中发生故障的机会。 此外,请确保在备用数据库上关闭了重放延迟,以避免发生显著的时间延迟或滞后。
- 通过将数据库配置参数 hadr_replay_delay 设置为 0 ,确保在所有备用数据库上关闭重放延迟,以确保备用日志重放位置可以在合理的时间内赶上主数据库。
- 在主实例上,使用 DEACTIVATE DATABASE 命令取消激活数据库,以确保在主数据库上完成日志发送,并将数据传输到备用数据库。
- 在主实例上,使用 db2stop 命令停止 Db2 实例。 请确保应用程序未连接,以便未生成新的日志数据,并且备用数据库上的日志重放位置最终与主数据库上的日志传送位置相匹配。
- 在主实例上,使用 db2iupgrade 命令升级 Db2 实例。 db2iupgrade 命令将调用 db2ckupgrade 命令以验证该数据库是否已准备好进行升级。 db2ckupgrade 命令报告错误时,db2iupgrade 不会运行。 检查日志文件确定是否遇到了任何错误。 对于来自 10.5 修订包 7 或更高版本的 HADR 主数据库, db2ckupgrade 命令将验证是否可以将有效备用数据库连接到主数据库。 一旦建立了连接,日志传送功能将开始启动,必要时,将发送任何暂挂的日志数据。 db2ckupgrade 命令还会验证主数据库的日志传送位置是否与备用数据库上的日志重放位置相匹配。
- 在备用实例上,使用 DEACTIVATE DATABASE 取消激活数据库,以确保在主数据库上完成日志传递,并将数据传输到备用数据库。
- 在备用实例上,使用 db2stop 命令停止 Db2 实例。
- 在备用实例上,使用 db2iupgrade 命令升级 Db2 实例。 db2iupgrade 命令调用 db2ckupgrade 命令以验证备用数据库是否已准备好进行升级。
- 在备用实例上,发出 UPGRADE DATABASE 命令。 这会将数据库元数据对象升级,如果先前步骤中的日志验证成功,那么主要的备用数据库将启动,并等待来自主数据库的连接。 重放功能在后台开始,并等待由主数据库发送升级日志数据。 此时,备用数据库被视为正在进行升级,UPGRADE DATABASE 命令将返回 SQL1103W。 在此“正在进行升级”状态下,不允许建立用户连接。 可以使用 db2pd -hadr 以及 DB2 诊断日志来监视备用数据库中的进度。 只要备用数据库处于“正在进行升级”状态,您还可以发出连接尝试,接收 SQL1776N,原因码为 9。
- 在主实例上,发出 UPGRADE DATABASE 命令以升级主数据库。 这会将任何数据库元数据文件升级,例如,数据库配置、表空间定义、日志头控制文件和存储器组文件。 一旦已将这些元数据文件升级,主数据库就要在 HADR 超时时间段内连接至备用数据库。 一旦建立了连接,就会开始进行升级处理,并将日志数据发送至备用数据库以进行重放。
- 在主实例上,发出 ACTIVATE DATABASE 命令以开始使用新的 Db2 版本中的数据库。