允许将 DB2 日志直接存档到 IBM Db2 数据库中的 Amazon S3 - AWS 规范指引

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

允许将 DB2 日志直接存档到 IBM Db2 数据库中的 Amazon S3

Ambarish Satarkar,Amazon Web Services

Summary

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

你可以为 logarchm eth1 和 logarchmeth 2 日志存档方法配置参数指定DB2远程 Amazon S3 存储。您可以使用 logarchmeth1 参数,为从当前日志路径存档的日志指定主要目标。借助此功能,您可以直接存档和检索来自 Amazon S3 的事务日志,而无需使用暂存区。

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

先决条件和限制

先决条件

  • 活跃 AWS 账户的.

  • 在亚马逊弹性计算云 (Amazon EC2) 实例上运行的 IBM Db2 数据库。

  • AWS Command Line Interface (AWS CLI) 已安装

  • libcurllibxml2 安装在 Db2 实例上。 EC2

限制

  • 只有 Db2 11.5.7 或更高版本允许将日志直接存档到 Amazon S3 存储。

  • 有些 AWS 服务 并非全部可用 AWS 区域。有关区域可用性,请参阅按区域划分的AWS 服务。有关特定端点,请参阅服务端点和配额,然后选择相应服务的链接。

  • 在所有配置中,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

架构

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

将 Amazon S3 用作 Db2 生成的存档日志的目录存储的工作流。

上的架构 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 数据库的日志存档。

工具

AWS 服务

其他工具

  • libcurl 是一个免费的客户端 URL 传输库。

  • libxml2 是一个免费的 XML C 解析器和工具包。

最佳实践

操作说明

Task说明所需技能

设置 AWS CLI.

下载并安装 AWS CLI,请使用以下命令:

i) curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" ii) unzip awscliv2.zip iii) sudo ./aws/install
AWS 系统管理员、AWS 管理员

配置 AWS CLI。

配置 AWS CLI,请使用以下命令:

$ aws configure AWS Access Key ID [None]:******************************* AWS Secret Access Key [None]: *************************** Default region name [None]: < aws region > Default output format [None]: text
AWS 系统管理员、AWS 管理员

创建 IAM 用户。

要创建一个 IAM 用户以便稍后用于连接 Amazon S3 与 Db2 数据库,请使用以下命令:

aws iam create-user --user-name <unique username>

以下是命令的示例:

aws iam create-user --user-name db_backup_user

警告

此场景需要 IAM 用户具有编程访问权限和长期凭证,这会带来安全风险。为了减轻这种风险,我们建议仅向这些用户提供执行任务所需的权限,并在不再需要这些用户时将其移除。必要时可以更新访问密钥。有关更多信息,请参阅 IAM 文档中的 AWS 安全凭证管理 IAM 用户的访问密钥

AWS 系统管理员

创建 Amazon S3 存储桶。

要创建 Amazon S3 存储桶用于存储数据库备份,请使用以下命令:

aws s3api create-bucket --bucket <unique bucket name> --region <aws region>

以下是示例命令:

aws s3api create-bucket --bucket myfirstbucket --region af-south-1

AWS 系统管理员

向 IAM 用户授权。

要为新创建的 IAM 用户授予 Amazon S3 权限,请使用以下步骤:

  1. 要为 Amazon S3 存储桶生成新的 IAM 策略文件 db2bucket.json,请使用以下命令:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ListObjectsInBucket", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": [ "arn:aws:s3:::myfirstbucket" ] }, { "Sid": "AllObjectActions", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::myfirstbucket/*" ] } ] }
  2. 根据 db2bucket.json 文件创建 IAM 策略。JSON 输出显示策略的 Amazon 资源名称(ARN:"Arn": "arn:aws:iam::111122223333:policy/db2s3policy"

    aws iam create-policy \ --policy-name db2s3policy \ --policy-document file://db2bucket.json
  3. 将 IAM policy 附加到具有 ARN 策略的 IAM 用户。

    aws iam attach-user-policy --user-name db_backup_user --policy-arn "arn:aws:iam::111122223333:policy/db2s3policy"
AWS 系统管理员、AWS 管理员

创建访问密钥。

要生成访问密钥以编程方式从 DB2 实例访问 Amazon S3,请使用以下命令:

aws iam create-access-key --user-name <username>

以下是命令的示例:

aws iam create-access-key --user-name db_backup_user

警告

此场景需要 IAM 用户具有编程访问权限和长期凭证,这会带来安全风险。为了减轻这种风险,我们建议仅向这些用户提供执行任务所需的权限,并在不再需要这些用户时将其移除。必要时可以更新访问密钥。有关更多信息,请参阅 IAM 文档中的 AWS 安全凭证管理 IAM 用户的访问密钥

AWS 系统管理员

创建 PKCS 密钥库。

要创建 PKCS 密钥库来存储密钥,并创建秘密访问密钥以将数据传输到 Amazon S3,请使用以下命令:

gsk8capicmd_64 -keydb -create -db "/db2/db2<sid>/.keystore/db6-s3.p12" -pw "<password>" -type pkcs12 -stash
AWS 系统管理员

配置 DB2 为使用密钥库。

DB2 要配置为使用带有keystore_locationkeystore_type参数的密钥库,请使用以下命令:

db2 "update dbm cfg using keystore_location /db2/db2<sid>/.keystore/db6-s3.p12 keystore_type pkcs12"
AWS 系统管理员

创建 DB2 存储访问别名。

存储访问别名指定要使用的 Amazon S3 存储桶。它会还提供连接详细信息,例如以加密格式存储在本地密钥库中的用户名和密码。有关更多信息,请参阅 IBM Db2 文档中的 CATALOG STORAGE ACCESS 命令

若要创建存储访问别名,请使用以下脚本:

db2 "catalog storage access alias <alias_name> vendor S3 server <S3 endpoint> user '<access_key>' password '<secret_access_key>' container '<bucket_name>'"

以下是一个示例:

db2 "catalog storage access alias DB2BKPS3 vendor S3 server s3.us-west-2.amazonaws.com user '*******************' password '*********************' container 'myfirstbucket'"
AWS 系统管理员
Task说明所需技能

更新 LOGARCHMETH1 位置。

要使用您之前定义的存储访问别名,请使用以下命令,更新 LOGARCHMETH1 数据库参数:

db2 update db cfg for <DBNAME> using LOGARCHMETH1 'DB2REMOTE://<storage_alias_name>//<sub folder>'

要将日志与其他文件分开,请指定一个子目录(即 Amazon S3 存储桶前缀)TESTDB_LOGS,以便在 S3 存储桶中储存日志。

以下是一个示例:

db2 update db cfg for ABC using LOGARCHMETH1 'DB2REMOTE://DB2BKPS3//TESTDB_LOGS/'

您将看到以下消息:DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully.

AWS 系统管理员

重新启动 DB2。

重新配置 DB2 实例以进行日志存档后,请重新启动该实例。

但是,如果 LOGARCHMETH1 之前设置为任何文件系统位置,则不需要重新启动。

AWS 管理员、AWS 系统管理员
Task说明所需技能

在 Amazon S3 中查看存档日志。

此时,您的数据库已完全配置为将事务日志直接存档到 Amazon S3 存储。要确认配置,请开始在数据库上执行事务活动以开始使用(和存档)日志空间。在 Amazon S3 中查看存档日志。

AWS 管理员、AWS 系统管理员

db2diag.log 中检查存档日志配置。

在 Amazon S3 中查看存档日志后,请在 DB2 诊断日志中查找以下消息db2diag.log

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/.

此消息确认已关闭的 DB2 事务日志文件正在存档到(远程)Amazon S3 存储。

AWS 系统管理员

相关资源

AWS 服务文档

IBM 资源