

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

# 允许将 DB2 日志直接存档到 IBM Db2 数据库中的 Amazon S3
<a name="enable-db2-logarchive-directly-to-amazon-s3-in-ibm-db2-database"></a>

*Ambarish Satarkar，Amazon Web Services*

## Summary
<a name="enable-db2-logarchive-directly-to-amazon-s3-in-ibm-db2-database-summary"></a>

此模式描述了如何将 Amazon Simple Storage Service（Amazon S3）用作 IBM Db2 生成的存档日志的目录存储，而无需使用暂存区。

你可以为 logarchm [eth1 和 logarchmeth [2](https://www.ibm.com/docs/en/db2/12.1.0?topic=parameters-logarchmeth2-secondary-log-archive-method) 日志存档方法](https://www.ibm.com/docs/en/db2/12.1.0?topic=parameters-logarchmeth1-primary-log-archive-method)配置参数指定[DB2远程](https://www.ibm.com/docs/en/db2/12.1.0?topic=storage-db2remote-identifiers) Amazon S3 存储。您可以使用 `logarchmeth1` 参数，为从当前日志路径存档的日志指定主要目标。借助此功能，您可以直接存档和检索来自 Amazon S3 的事务日志，而无需使用暂存区。

[Amazon S3](https://aws.amazon.com/s3/) 会存储来自单个 AWS 区域中至少三个设备的上传数据。Amazon S3 具有高可用性、灵活的存储选项、完善的生命周期策略和安全性，因此数百万不同规模和行业的客户都选择用它来存储企业备份。

## 先决条件和限制
<a name="enable-db2-logarchive-directly-to-amazon-s3-in-ibm-db2-database-prereqs"></a>

**先决条件**
+ 活跃 AWS 账户的.
+ 在亚马逊弹性计算云 (Amazon EC2) 实例上运行的 IBM Db2 数据库。
+ AWS Command Line Interface (AWS CLI) 已安装
+ [libcurl](https://curl.se/libcurl/) 和 [libxml2 安装在 Db2 实例](https://gitlab.gnome.org/GNOME/libxml2/-/wikis/home)上。 EC2 

**限制**
+ 只有 [Db2 11.5.7](https://www.ibm.com/docs/en/db2/11.5.x?topic=new-1157) 或更高版本允许将日志直接存档到 Amazon S3 存储。
+ 有些 AWS 服务 并非全部可用 AWS 区域。有关区域可用性，请参阅[按区域划分的AWS 服务](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)。有关特定端点，请参阅[服务端点和配额](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)，然后选择相应服务的链接。
+ 在所有配置中，Amazon S3 存在以下限制：
  + AWS Key Management Service (AWS KMS) 不支持。
  + AWS 不支持基于角色AWS Identity and Access Management ((IAM)) 或基于令牌的AWS Security Token Service ((AWS STS)) 证书。

**产品版本**
+ AWS CLI 版本 2 或更高版本
+ IBM Db2 11.5.7 或更高版本
+ Linux SUSE Linux Enterprise Server（SLES）11 或更高版本
+ 红帽企业 Linux (RHEL) 6 或更高版本
+ Windows Server 2008 R2、2012（R2）、2016 或 2019

## 架构
<a name="enable-db2-logarchive-directly-to-amazon-s3-in-ibm-db2-database-architecture"></a>

下图显示了此模式的组件和工作流。

![将 Amazon S3 用作 Db2 生成的存档日志的目录存储的工作流。](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/7a10333e-07be-4144-9913-45c60a2f51ea/images/0437d348-1688-4c3e-9aa5-43535afe08c6.png)


上的架构 AWS Cloud 包括以下内容：
+ **虚拟私有云 (VPC)** — AWS Cloud 在逻辑上隔离的资源启动部分。
+ **可用区** – 通过在 AWS 区域内的隔离数据中心运行 Db2 LUW（Linux、Unix、Windows）工作负载来提供高可用性。
+ **公有子网** – 通过 NAT 网关为管理员提供 RDP（远程桌面协议）访问权限和互联网连接。
+ **私有子网** – 托管 Db2 LUW 数据库。Db2 LUW 实例使用 `LOGARCHMETH1` 参数进行配置。该参数通过网关端点将数据库日志存档文件直接写入 Amazon S3 路径。

以下内容 AWS 服务 提供支持：
+ **Amazon S3** – 用作 Db2 日志存档文件的持久、可扩展的存储位置。
+ **Amazon Elastic File System（Amazon EFS）**– 提供完全托管式共享文件系统，而 Db2 可以将其用于数据库备份和暂存。在日志文件存档到 Amazon S3 之前，Db2 还可以使用 Amazon EFS 作为日志文件的挂载点。
+ **Amazon CloudWatch** — 收集和监控来自 Db2 和底层 EC2 实例的指标、日志和事件。您可以使用 CloudWatch 创建警报、仪表板以及对性能或可用性问题的自动响应。

**自动化和扩展**
+ 此模式提供了一种用于存储 Db2 日志存档备份的全自动解决方案。
+ 您可以使用相同的 Amazon S3 存储桶来启用多个 Db2 数据库的日志存档。

## 工具
<a name="enable-db2-logarchive-directly-to-amazon-s3-in-ibm-db2-database-tools"></a>

**AWS 服务**
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 可帮助您实时监控您的 AWS 资源和运行的应用程序 AWS 的指标。
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) 是一个开源工具，可帮助您 AWS 服务 通过命令行 shell 中的命令进行交互。
+ [亚马逊弹性计算云 (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) 在中提供可扩展的计算容量 AWS Cloud。您可以根据需要启动任意数量的虚拟服务器，并快速纵向扩展或缩减这些服务器。
+ [Amazon Elastic File System（Amazon EFS）](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html)可帮助您在 AWS Cloud中创建和配置共享文件系统。
+ [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)帮助您集中管理对所有应用程序 AWS 账户 和云应用程序的单点登录 (SSO) 访问权限。
+ [Amazon Simple Storage Service（Amazon S3）](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)是一项基于云的对象存储服务，可帮助您存储、保护和检索任意数量的数据。
+ [Amazon Virtual Private Cloud（亚马逊 VPC）](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html)可帮助您将 AWS 资源启动到您定义的虚拟网络中。该虚拟网络类似于您在数据中心中运行的传统网络，并具有使用 AWS的可扩展基础设施的优势。

**其他工具**
+ [libcurl](https://curl.se/libcurl/) 是一个免费的客户端 URL 传输库。
+ [libxml2](https://gitlab.gnome.org/GNOME/libxml2/-/wikis/home) 是一个免费的 XML C 解析器和工具包。

## 最佳实践
<a name="enable-db2-logarchive-directly-to-amazon-s3-in-ibm-db2-database-best-practices"></a>
+ 遵循最低权限原则，并授予执行任务所需的最低权限。有关详情，请参阅 IAM 文档中的[授予最低权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv)和[安全最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。

## 操作说明
<a name="enable-db2-logarchive-directly-to-amazon-s3-in-ibm-db2-database-epics"></a>

### 配置 AWS 服务
<a name="configure-aws-services"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 设置 AWS CLI. | 要[下载并安装 AWS CLI，](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.htmlhttps://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)请使用以下命令：<pre>i) curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"<br />ii) unzip awscliv2.zip<br />iii) sudo ./aws/install</pre> | AWS 系统管理员、AWS 管理员 | 
| 配置 AWS CLI。 | 要[配置 AWS CLI，](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-quickstart.html)请使用以下命令：<pre>$ aws configure<br />AWS Access Key ID [None]:*******************************<br />AWS Secret Access Key [None]: ***************************<br />Default region name [None]: < aws region ><br />Default output format [None]: text</pre> | AWS 系统管理员、AWS 管理员 | 
| 创建 IAM 用户。 | 要创建一个 IAM 用户以便稍后用于连接 Amazon S3 与 Db2 数据库，请使用以下命令：<br />`aws iam create-user --user-name <unique username>`<br />以下是命令的示例：<br />`aws iam create-user --user-name db_backup_user`此场景需要 IAM 用户具有编程访问权限和长期凭证，这会带来安全风险。为了减轻这种风险，我们建议仅向这些用户提供执行任务所需的权限，并在不再需要这些用户时将其移除。必要时可以更新访问密钥。有关更多信息，请参阅 IAM 文档中的 [AWS 安全凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html#access-keys-and-secret-access-keys)和[管理 IAM 用户的访问密钥](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_RotateAccessKey)。 | AWS 系统管理员 | 
| 创建 Amazon S3 存储桶。 | 要创建 Amazon S3 存储桶用于存储数据库备份，请使用以下命令：<br />`aws s3api create-bucket --bucket <unique bucket name> --region <aws region>`<br />以下是示例命令：<br />`aws s3api create-bucket --bucket myfirstbucket --region af-south-1` | AWS 系统管理员 | 
| 向 IAM 用户授权。 | 要为新创建的 IAM 用户授予 Amazon S3 权限，请使用以下步骤：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/enable-db2-logarchive-directly-to-amazon-s3-in-ibm-db2-database.html) | AWS 系统管理员、AWS 管理员 | 
| 创建访问密钥。 | 要生成访问密钥以编程方式从 DB2 实例访问 Amazon S3，请使用以下命令：<br />`aws iam create-access-key --user-name <username>`<br />以下是命令的示例：<br />`aws iam create-access-key --user-name db_backup_user`此场景需要 IAM 用户具有编程访问权限和长期凭证，这会带来安全风险。为了减轻这种风险，我们建议仅向这些用户提供执行任务所需的权限，并在不再需要这些用户时将其移除。必要时可以更新访问密钥。有关更多信息，请参阅 IAM 文档中的 [AWS 安全凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html#access-keys-and-secret-access-keys)和[管理 IAM 用户的访问密钥](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_RotateAccessKey)。 | AWS 系统管理员 | 
| 创建 PKCS 密钥库。 | 要创建 PKCS 密钥库来存储密钥，并创建秘密访问密钥以将数据传输到 Amazon S3，请使用以下命令：<pre>gsk8capicmd_64 -keydb -create -db "/db2/db2<sid>/.keystore/db6-s3.p12" -pw "<password>" -type pkcs12 -stash</pre> | AWS 系统管理员 | 
| 配置 DB2 为使用密钥库。 |  DB2 要配置为使用带有`keystore_location`和`keystore_type`参数的密钥库，请使用以下命令：<pre>db2 "update dbm cfg using keystore_location /db2/db2<sid>/.keystore/db6-s3.p12 keystore_type pkcs12"</pre> | AWS 系统管理员 | 
| 创建 DB2 存储访问别名。 | 存储访问别名指定要使用的 Amazon S3 存储桶。它会还提供连接详细信息，例如以加密格式存储在本地密钥库中的用户名和密码。有关更多信息，请参阅 IBM Db2 文档中的 [CATALOG STORAGE ACCESS 命令](https://www.ibm.com/docs/en/db2/12.1.0?topic=commands-catalog-storage-access)。<br />若要创建存储访问别名，请使用以下脚本：<pre>db2 "catalog storage access alias <alias_name> vendor S3 server <S3 endpoint> user '<access_key>' password '<secret_access_key>' container '<bucket_name>'"</pre><br />以下是一个示例：<pre>db2 "catalog storage access alias DB2BKPS3 vendor S3 server s3.us-west-2.amazonaws.com user '*******************' password '*********************' container 'myfirstbucket'"</pre> | AWS 系统管理员 | 

### 更新 logarchmeth1 中的位置并重新启动 DB2 DB2
<a name="update-logarchmeth1-location-in-db2-and-restart-db2"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 更新 `LOGARCHMETH1` 位置。 | 要使用您之前定义的存储访问别名，请使用以下命令，更新 `LOGARCHMETH1` 数据库参数：<pre>db2 update db cfg for <DBNAME> using LOGARCHMETH1 'DB2REMOTE://<storage_alias_name>//<sub folder>'</pre><br />要将日志与其他文件分开，请指定一个子目录（即 Amazon S3 存储桶前缀）`TESTDB_LOGS`，以便在 S3 存储桶中储存日志。<br />以下是一个示例：<pre>db2 update db cfg for ABC using LOGARCHMETH1 'DB2REMOTE://DB2BKPS3//TESTDB_LOGS/'</pre><br />您将看到以下消息：`DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully.` | AWS 系统管理员 | 
| 重新启动 DB2。 | 重新配置 DB2 实例以进行日志存档后，请重新启动该实例。<br />但是，如果 `LOGARCHMETH1 ` 之前设置为任何文件系统位置，则不需要重新启动。 | AWS 管理员、AWS 系统管理员 | 

### 查看 Amazon S3 和 db2diag.log 中的存档日志路径
<a name="check-the-archive-log-path-in-s3-and-db2diag-log"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 在 Amazon S3 中查看存档日志。 | 此时，您的数据库已完全配置为将事务日志直接存档到 Amazon S3 存储。要确认配置，请开始在数据库上执行事务活动以开始使用（和存档）日志空间。在 Amazon S3 中查看存档日志。 | AWS 管理员、AWS 系统管理员 | 
| 在 `db2diag.log` 中检查存档日志配置。 | 在 Amazon S3 中查看存档日志后，请在 DB2 诊断日志中查找以下消息`db2diag.log`：<br />`MESSAGE : ADM1846I  Completed archive for log file "S0000079.LOG" to Completed archive for log file S0000080.LOG to DB2REMOTE://<AWS S3 Bucket Name>/<SID>/log1/db2<sid>/<SID>/NODE0000/LOGSTREAM0000/C0000001/ from /db2/<SID>/log_dir/NODE0000/LOGSTREAM0000/. MESSAGE : ADM1846I  Completed archive for log file "S0000080.LOG" to Completed archive for log file S0000081.LOG to DB2REMOTE://<AWS S3 Bucket Name> /<SID>/log1/db2<sid>/<SID>/NODE0000/LOGSTREAM0000/C0000001/ from /db2/<SID>/log_dir/NODE0000/LOGSTREAM0000/. `<br />此消息确认已关闭的 DB2 事务日志文件正在存档到（远程）Amazon S3 存储。 | AWS 系统管理员 | 

## 相关资源
<a name="enable-db2-logarchive-directly-to-amazon-s3-in-ibm-db2-database-resources"></a>

**AWS 服务文档**
+ [AWS 安全证书](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html#access-keys-and-secret-access-keys)（IAM 文档）
+ [授予最低权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv)（IAM 文档）
+ [管理 IAM 用户的访问密钥](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_RotateAccessKey)（IAM 文档）
+ [IAM 中的安全最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)（IAM 文档）

**IBM 资源**
+ [IBM Db2 数据库](https://www.ibm.com/products/db2-database)
+ [logarchmeth1 - 主日志存档方法配置参数](https://www.ibm.com/docs/en/db2/12.1.0?topic=parameters-logarchmeth1-primary-log-archive-method)
+ [logarchmeth2 - 辅助日志存档方法设置参数](https://www.ibm.com/docs/en/db2/12.1.0?topic=parameters-logarchmeth2-secondary-log-archive-method)
+ [远程存储](https://www.ibm.com/docs/en/db2/12.1.0?topic=databases-remote-storage) 