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

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

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

Ambarish Satarkar,Amazon Web Services

摘要

此模式描述了如何在不使用暂存区域的情况下使用亚马逊简单存储服务 (Amazon S3) 作为 IBM Db2 生成的存档日志的目录存储。

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

Amazon S3 将通过至少三台设备上传到它的数据存储在一台设备中 AWS 区域。鉴于Amazon S3的高可用性、灵活的存储选项、生命周期策略和安全性,数百万不同规模和行业的客户都在使用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 企业服务器 (SLES) 11 或更高版本

  • 红帽企业 Linux (RHEL) 6 或更高版本

  • Windows Server 2008 R2、2012 (R2)、2016 或 2019

架构

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

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

上的架构 AWS Cloud 包括以下内容:

  • 虚拟私有云 (VPC) — AWS Cloud 在逻辑上隔离的资源启动部分。

  • 可用区 — 通过在内部的隔离数据中心运行 Db2 LUW(Linux、Unix、Windows)工作负载来提供高可用性。 AWS 区域

  • 公有子网-通过 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 是一个免费的客户端网址传输库。

  • 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 输出显示了策略的亚马逊资源名称 (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 文档中的目录存储访问命令

要创建存储访问别名,请使用以下语法:

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>'

要将日志与其他文件分开,请指定将日志保存在 S3 存储桶TESTDB_LOGS中的子目录(即 Amazon 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 资源