

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在 IBM Db2 on AWS 上为 SAP 设置灾难恢复
<a name="set-up-disaster-recovery-for-sap-on-ibm-db2-on-aws"></a>

*Ambarish Satarkar 和 Debasis Sahoo，Amazon Web Services*

## Summary
<a name="set-up-disaster-recovery-for-sap-on-ibm-db2-on-aws-summary"></a>

此模式概述了使用 IBM Db2 作为数据库平台并在 Amazon Web Services (AWS) 云上运行的 SAP 工作负载设置灾难恢复 (DR) 系统的步骤。目标是提供一种低成本解决方案，以在发生中断时提供业务连续性。

该图案使用 [pilot light 方法](https://aws.amazon.com/blogs/architecture/disaster-recovery-dr-architecture-on-aws-part-iii-pilot-light-and-warm-standby/)。通过在 AWS 上实施 pilot light 灾难恢复，您可以减少停机时间并保持业务连续性。Pilot light 方法侧重于在 AWS 中设置最小的灾难恢复环境，包括 SAP 系统和与生产环境同步的备用 Db2 数据库。

该解决方案具有可扩展性。您可以根据需要将其扩展至全面的灾难恢复环境。

## 先决条件和限制
<a name="set-up-disaster-recovery-for-sap-on-ibm-db2-on-aws-prereqs"></a>

**先决条件**
+ 在亚马逊弹性计算云 (Amazon EC2) 实例上运行的 SAP 实例
+ IBM Db2 数据库
+ SAP Product Availability Matrix (PAM) 支持的操作系统
+ 生产数据库主机和备用数据库主机的物理数据库主机名不同
+ AWS 区域 中的 Amazon Simple Storage Service (Amazon S3) 存储桶，且已启用[跨区域复制 (CRR)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html)

**产品版本**
+ IBM Db2 数据库 11.5.7 或更高版本

## 架构
<a name="set-up-disaster-recovery-for-sap-on-ibm-db2-on-aws-architecture"></a>

**目标技术堆栈**
+ 亚马逊 EC2
+ Amazon Simple Storage Service（Amazon S3）
+ Amazon 虚拟私有云（VPC 对等连接）
+ Amazon Route 53
+ IBM Db2 高可用性灾难恢复 (HADR)

**目标架构**

该架构以 Db2 作为数据库平台，为 SAP 工作负载实现了灾难恢复解决方案。生产数据库部署在 AWS 区域 1 中，备用数据库部署在第二个区域。备用数据库称为灾难恢复系统。Db2 数据库支持多个备用数据库（最多三个）。它使用 Db2 HADR 设置灾难恢复数据库并在生产数据库和备用数据库之间自动进行日志传送。

如果发生灾难导致区域 1 不可用，DR 区域中的备用数据库将接管生产数据库角色。SAP 应用程序服务器可以提前构建，也可以使用 [AWS Elastic Disaster Recovery](https://aws.amazon.com/disaster-recovery/) 或亚马逊机器映像（AMI）满足恢复时间目标（RTO）要求。此示例使用 AMI。

Db2 HADR 实现生产备用设置，其中生产充当主服务器，所有用户都连接到它。所有事务都写入日志文件，并使用 TCP/IP 将日志文件传输到备用服务器。备用服务器通过前滚传输的日志记录来更新其本地数据库，这有助于确保其与生产服务器保持同步。

使用 VPC 对等互连，以便生产区域和灾难恢复区域中的实例可以相互通信。Amazon Route 53 将最终用户路由至互联网应用程序。

![\[Db2 on AWS，支持跨区域复制\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/06edfa4c-0827-4d05-95cf-2d2651e74323/images/e77c1e4e-36f3-4af4-89d0-8eec72348f0a.png)


1. 在区域 1 为应用程序[创建 AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html#creating-an-ami)，[复制 AMI](https://repost.aws/knowledge-center/copy-ami-region) 至区域 2。发生灾难时，使用 AMI 启动区域 2 服务器。

1. 在生产数据库 (在区域 1 )和备用数据库 (在区域 2) 之间设置 Db2 HADR 复制。

1. 发生灾难时，更改 EC2 实例类型以匹配生产实例。

1. 在区域 1 中，将 `LOGARCHMETH1` 设置为 `db2remote: S3 path`。

1. 在区域 2 中，将 `LOGARCHMETH1` 设置为 `db2remote: S3 path`。

1. 跨区域复制在S3存储桶之间执行。

## 工具
<a name="set-up-disaster-recovery-for-sap-on-ibm-db2-on-aws-tools"></a>

**AWS 服务**
+ [亚马逊弹性计算云 (Amazon EC2)](https://docs.aws.amazon.com/ec2/) 在 AWS 云中提供可扩展的计算容量。您可以根据需要启动任意数量的虚拟服务器，并快速纵向扩展或缩减这些服务器。
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) 是一种可用性高、可扩展性强的 DNS Web 服务。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) 是一项基于云的对象存储服务，可帮助您存储、保护和检索任意数量的数据。
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) 可帮助您将 AWS 资源启动到您定义的虚拟网络中。此虚拟网络类似于您在自己的数据中心内运行的传统网络，具有使用 AWS 可扩展基础设施的优势。此模式使用 [VPC 对等互连](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-peering.html)。

## 最佳实践
<a name="set-up-disaster-recovery-for-sap-on-ibm-db2-on-aws-best-practices"></a>
+ 网络在决定 HADR 复制模式方面起着关键作用。对于跨 AWS 区域 的灾难恢复，我们建议您使用 Db2 HADR ASYNC 或 SUPERASYNC 模式。 
+ 有关 Db2 HADR 复制模式的更多信息，请参阅 [IBM 文档](https://ibm.github.io/db2-hadr-wiki/hadrSyncMode.html#Description_of_the_Modes)。
+ 您可以使用 AWS 管理控制台 或 AWS 命令行界面（AWS CLI）针对现有 SAP System [创建新的 AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html#creating-an-ami)。然后，您可以使用 AMI 恢复现有 SAP 系统或者创建克隆。
+ [AWS Systems Manager Automation](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-automation.html) 可以帮助完成 EC2 实例和其他 AWS 资源的常见维护和部署任务。
+ AWS 提供多种本机服务，监控和管理 AWS 上的基础设施和应用程序。诸如 Amazon CloudWatch 和 AWS 之类的服务 CloudTrail 可以分别用于监控您的底层基础设施和 API 操作。有关更多详细信息，请参阅 [SAP on AWS – IBM Db2 HADR， 带 Pacemaker](https://docs.aws.amazon.com/sap/latest/sap-AnyDB/sap-ibm-pacemaker.html)。

## 操作说明
<a name="set-up-disaster-recovery-for-sap-on-ibm-db2-on-aws-epics"></a>

### 准备环境
<a name="prepare-the-environment"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 检查系统和日志。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-sap-on-ibm-db2-on-aws.html) | AWS 管理员、SAP Basis 管理员 | 

### 设置服务器和复制
<a name="set-up-the-servers-and-replication"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建 SAP 和数据库服务器。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-sap-on-ibm-db2-on-aws.html)恢复完整备份后，默认设置前滚挂起状态。前滚挂起状态指示数据库正在恢复，并且可能需要应用一些更改。有关更多信息，请参阅 [IBM 文档](https://www.ibm.com/docs/en/db2/11.5?topic=commands-rollforward-database)。 | SAP Basis 管理员 | 
| 检查配置。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-sap-on-ibm-db2-on-aws.html) | AWS 管理员、SAP Basis 管理员 | 
| 设置从生产数据库到灾难恢复数据库的复制（使用异步模式）。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-sap-on-ibm-db2-on-aws.html) | SAP Basis 管理员 | 

### 测试灾难恢复失效转移任务
<a name="test-dr-failover-tasks"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 规划灾难恢复测试生产业务停机时间。 | 确保在生产环境中计划所需业务停机时间，以测试灾难恢复失效转移场景。 | SAP Basis 管理员 | 
| 创建测试用户。 | 创建可在灾难恢复主机中进行验证的测试用户（或任何测试更改），以确认灾难恢复失效转移后的日志复制。 | SAP Basis 管理员 | 
| 在控制台上，停止生产 EC2 实例。 | 在此步骤中启动非正常关闭，以模拟灾难场景。 | AWS 系统管理员 | 
| 扩展 DR EC2 实例以满足要求。 | 在 EC2 控制台上，更改灾难恢复区域中的实例类型。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-sap-on-ibm-db2-on-aws.html) | SAP Basis 管理员 | 
| 发起接管。 | 在灾难恢复系统 (`host2`) 中，启动接管进程并启动灾难恢复数据库作为主数据库。<pre>db2 takeover hadr on database <SID> by force</pre>或者，您可设置以下参数，根据实例类型自动调整数据库内存分配。该 `INSTANCE_MEMORY` 值可以根据分配给 Db2 数据库的专用内存部分来决定。<pre>db2 update db cfg for <SID> using INSTANCE_MEMORY <FIXED VALUE> IMMEDIATE;<br />db2 get db cfg for <SID> | grep -i DATABASE_MEMORY AUTOMATIC IMMEDIATE; <br />db2 update db cfg for <SID> using self_tuning_mem ON IMMEDIATE;</pre>请使用以下命令验证更改。<pre>db2 get db cfg for <SID> | grep -i MEMORY<br />db2 get db cfg for <SID> | grep -i self_tuning_mem</pre> | SAP Basis 管理员 | 
| 在灾难恢复区域中启动适用于 SAP 的应用程序服务器。 | 使用您在生产系统中创建的 AMI，在灾难恢复区域中 [启动新的附加应用程序服务器](https://aws.amazon.com/premiumsupport/knowledge-center/launch-instance-custom-ami/)。 | SAP Basis 管理员 | 
| 在启动 SAP 应用程序前执行验证。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-sap-on-ibm-db2-on-aws.html) | AWS 管理员、SAP Basis 管理员 | 
| 在灾难恢复系统启动 SAP 应用程序。 | 使用 `<sid>adm` 用户在灾难恢复系统上启动 SAP 应用程序。使用以下代码，代码 `XX` 代表您的 SAP ABAP SAP 中央服务 (ASCS) 服务器的实例号，`YY` 代表您的 SAP 应用程序服务器的实例号。<pre>sapconrol -nr XX -function StartService <SID><br />sapconrol -nr XX -function StartSystem<br />sapconrol -nr YY -function StartService <SID><br />sapconrol -nr YY -function StartSystem</pre> | SAP Basis 管理员 | 
| 执行 SAP 验证。 | 这是作为灾难恢复测试执行的，以提供证据或检查灾难恢复区域的数据复制是否成功。 | 测试工程师 | 

### 执行灾难恢复失效自动恢复任务
<a name="perform-dr-failback-tasks"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 启动生产 SAP 和数据库服务器。 | 在控制台上，启动在生产系统中托管 SAP 和数据库的 EC2 实例。 | SAP Basis 管理员 | 
| 启动生产数据库并设置 HADR。 | 登录至生产系统 (`host1`)，使用以下命令验证数据库是否处于恢复模式。<pre>db2start<br />db2 start HADR on db P3V as standby<br />db2 connect to <SID></pre>验证 HADR 状态是否为 `connected`。复制状态应为 `peer`。<pre>db2pd -d <SID> -hadr</pre>如果数据库并非不一致且未处于 `connected` 和 `peer` 状态，则可能需要进行备份和恢复，以使数据库 (开启 `host1`) 与当前活动的数据库 (在灾难恢复区域 `host2` 中) 同步。在这种情况下，请将数据库备份从 `host2` 灾难恢复区域的数据库还原到 `host1` 生产区域的数据库。 | SAP Basis 管理员 | 
| 将数据库故障恢复至生产区域。 | 在正常 business-as-usual情况下，此步骤是在计划停机时间内执行的。在灾难恢复系统上运行的应用程序将停止，数据库将故障恢复到生产区域 (区域 1)，以便从生产区域恢复操作。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-sap-on-ibm-db2-on-aws.html) | SAP Basis 管理员 | 
| 在启动 SAP 应用程序前执行验证。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-sap-on-ibm-db2-on-aws.html) | AWS 管理员、SAP Basis 管理员 | 
| 启动 SAP 应用程序。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-sap-on-ibm-db2-on-aws.html) | SAP Basis 管理员 | 

## 问题排查
<a name="set-up-disaster-recovery-for-sap-on-ibm-db2-on-aws-troubleshooting"></a>


| 问题 | 解决方案 | 
| --- | --- | 
| 用于解决 HADR 相关问题的密钥日志文件和命令 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-sap-on-ibm-db2-on-aws.html) | 
| SAP 注意事项，用于对 Db2 UDB 上的 HADR 问题进行疑难解答 | 请参阅 SAP [Note 1154013- DB6：HADR 环境中的数据库问题。](https://service.sap.com/sap/support/notes/1154013)（您需要 SAP 门户凭证才能访问此笔记。） | 

## 相关资源
<a name="set-up-disaster-recovery-for-sap-on-ibm-db2-on-aws-resources"></a>
+ [AWS 上 Db2 数据库灾难恢复方法](https://aws.amazon.com/blogs/architecture/disaster-recovery-approaches-for-db2-databases-on-aws/)（博客文章）
+ [SAP on AWS — 带有 Pacemaker 的 IBM Db2 HADR](https://docs.aws.amazon.com/sap/latest/sap-AnyDB/sap-ibm-pacemaker.html)
+ [在数据库之间 DB2 设置 HADR 复制的分步过程](https://www.ibm.com/support/pages/step-step-procedure-set-hadr-replication-between-db2-databases)
+ [Db2 HADR Wiki](https://ibm.github.io/db2-hadr-wiki/index.html)

## 附加信息
<a name="set-up-disaster-recovery-for-sap-on-ibm-db2-on-aws-additional"></a>

使用这种模式，您可为在 Db2 数据库上运行的 SAP 系统设置灾难恢复系统。在灾难情况下，业务应能够继续执行您定义的恢复时间目标（RTO）和恢复点目标（RPO）要求：
+ **RTO** 是指服务中断和服务恢复之间可接受的最大延迟。这决定了当服务不可用时，什么时间段被视为可接受的时间窗口。
+ **RPO** 是指自上一个数据恢复点以来可接受的最长时间。这决定了从上一个恢复点到服务中断之间可接受的数据丢失情况。

有关 HADR 的 FAQs 相关信息，请参阅 [SAP 注释 \$11612105- DB6：Db2 高可用性灾难恢复 (HADR) 常见问题解答](https://launchpad.support.sap.com/#/notes/1612105)。(您需要 SAP 门户凭证才能访问此笔记。)