View a markdown version of this page

通过高可用性灾难恢复将 Db2 for LUW 迁移到 Amazon EC2 - AWS 规范指引

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

通过高可用性灾难恢复将 Db2 for LUW 迁移到 Amazon EC2

Feng Cai、Aruna Gangireddy 和 Venkatesan Govindan,Amazon Web Services

Summary

如果客户要将 IBM Db2 LUW(Linux、UNIX 和 Windows)工作负载迁移至 Amazon Web Services(AWS),采用 Amazon Elastic Compute Cloud(Amazon EC2)并结合自带许可(BYOL)模式是最快捷的途径。不过,将大量数据从本地 Db2 迁移到 AWS 可能是一项挑战,尤其是在停机窗口很短的情况下。许多客户尝试将停机窗口设置为 30 分钟以下,这样留给数据库本身的时间就很少了。

此模式涵盖如何使用 Db2 高可用性灾难恢复 (HADR) 在较短的中断窗口内完成 Db2 迁移。此方法适用于小端 Linux 平台上且不使用数据分区功能 (DPF) 的 Db2 数据库。

先决条件和限制

先决条件

  • 一个有效的 Amazon Web Services account

  • 在 Amazon EC2 实例上运行且与本地文件系统布局匹配的 Db2 实例

  • EC2 实例可访问的 Amazon Simple Storage Service (Amazon S3) 存储桶

  • 用于向 Amazon S3 进行程序化调用的 AWS Identity and Access Management(IAM)策略和角色

  • Amazon EC2 和本地服务器上的同步时区和系统时钟

  • 通过 AWS Site-to-SiteVPN 或 AWS Di rect Connect 连接到 AWS 的本地网络

  • 本地服务器与 Amazon EC2 在 HADR 端口上的通信

限制

  • Db2 本地实例和 Amazon EC2 必须位于同一平台系列上。

  • 分区数据库环境不支持 HADR。

  • HADR 不支持对数据库日志文件使用原始 I/O (直接磁盘访问)。

  • HADR 不支持无限的日志记录。

  • LOGINDEXBUILD 必须设置为 YES,这将增加重建索引的日志使用量。

  • 必须记录 Db2 本地工作负载。在数据库配置中设置 blocknonlogged=yes 以阻止任何未记录的事务。

产品版本

  • 适用于 LUW 版本 11.5.9 及以上版本的 Db2

架构

源技术堆栈

  • Linux 上的 Db2 x86_64

目标技术堆栈

  • Amazon EC2

  • AWS Identity and Access Management (IAM)

  • Amazon S3

  • AWS Site-to-Site VPN

目标架构

在下图中,本地 Db2 作为主服务器在 db2-server1 运行。它包含两个 HADR 备用目标。一个备用目标位于本地,并且是可选。另一个备用目标 db2-ec2 位于 Amazon EC2 上。将数据库割接到 AWS 后,db2-ec2 成为主数据库。

使用 Db2 HADR 在短暂的中断窗口内迁移本地 Db2 的工作流。
  1. 日志从主本地数据库流式传输至备用本地数据库。

  2. 使用 Db2 HADR,日志通过 Site-to-Site VPN 从主本地数据库流式传输到 Amazon EC2 上的 Db2。

  3. Db2 备份和存档日志从主本地数据库发送至 AWS 上的 S3 存储桶。

工具

Amazon Web Services

  • AWS 命令行界面(AWS CLI)是一种开源工具,它可帮助您通过命令行 Shell 中的命令与 Amazon Web Services 交互。

  • AWS Direct Connect 通过标准的以太网光纤电缆将内部网络链接到 Direct Connect 位置。通过此连接,您可以直接创建连接到公有 Amazon Web Services 的虚拟接口,同时绕过网络路径中的互联网服务提供商。

  • Amazon Elastic Compute Cloud (Amazon EC2) 在 Amazon Web Services Cloud 中提供可扩展的计算容量。您可以根据需要启动任意数量的虚拟服务器,并快速纵向扩展或缩减这些服务器。

  • AWS Identity and Access Management (AWS IAM) 通过控制验证和授权使用您 AWS 资源的用户,帮助您安全地管理对您 AWS 资源的访问。

  • Amazon Simple Storage Service(Amazon S3)是一项基于云的对象存储服务,可帮助您存储、保护和检索任意数量的数据。

  • AWS Site-to-Site VPN 可帮助您在您在 AWS 上启动的实例和您自己的远程网络之间传递流量。

其他工具

  • db2cli 是 Db2 交互式 CLI 命令。

最佳实践

操作说明

Task说明所需技能

设置环境变量。

此模式使用以下名称和端口:

  1. Db2 本地主机名:db2-server1

  2. HADR 备用主机名:db2-server2(如果 HADR 当前在本地运行)

  3. Amazon EC2 主机名:db2-ec2

  4. 实例名称:db2inst1

  5. 数据库名称:SAMPLE

  6. HADR 端口:

    • db2-server1: 50010

    • db2-server2: 50011

    • db2-ec2: 50012

您可更改它们以适应您的环境。

数据库管理员
Task说明所需技能

设置 AWS CLI。

要下载并安装最新版本的 AWS CLI,请运行以下命令:

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install
Linx 管理员

设置 Db2 归档日志的本地目标。

大量更新批处理作业和网络速度减慢等情况可能会导致 HADR 备用服务器出现延迟。为了赶上进度,备用服务器需要来自主服务器的事务日志。请求日志位置顺序如下:

  • 主服务器上的活动日志目录

  • 备用服务器上的 LOGARCHMETH1LOGARCHMETH2 位置

  • 主服务器上的 LOGARCHMETH1LOGARCHMETH2 位置

在此设置中,/db2logsLOGARCHMETH2 在源上设置作为暂存区域。此目录中的存档日志将同步至 Amazon S3 中,并由 Amazon EC2 上的 Db2 访问。此模式使用 LOGARCHMETH2,因为 LOGARCHMETH1 可能已配置为使用 AWS CLI 命令无法访问的第三方供应商工具:

db2 connect to sample db2 update db cfg for SAMPLE using LOGARCHMETH2 disk:/db2logs
数据库管理员

运行在线数据库备份。

运行在线数据库备份,并将其保存至本地备份文件系统:

db2 backup db sample online to /backup
数据库管理员
Task说明所需技能

创建 S3 存储桶。

为本地服务器创建 S3 存储桶,以便将备份 Db2 映象和日志文件发送到 AWS 上。Amazon EC2 将访问此存储桶:

aws s3api create-bucket --bucket hadrmig-db2 --region us-east-1
AWS 管理员

创建一个 IAM 策略。

db2bucket.json 文件包含用于访问 S3 存储桶的 IAM 策略:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt", "s3:PutObject", "s3:GetObject", "s3:AbortMultipartUpload", "s3:ListBucket", "s3:DeleteObject", "s3:GetObjectVersion", "s3:ListMultipartUploadParts" ], "Resource": [ "arn:aws:s3:::hadrmig-db2/*", "arn:aws:s3:::hadrmig-db2" ] } ] }

要创建策略,请使用以下 AWS CLI 命令:

aws iam create-policy \ --policy-name db2s3hapolicy \ --policy-document file://db2bucket.json

JSON 输出显示策略的 Amazon 资源名称(ARN),其中 aws_account_id 代表您的账户 ID:

"Arn": "arn:aws:iam::aws_account_id:policy/db2s3hapolicy"
AWS 管理员、AWS 系统管理员

将 IAM 策略附加到 IAM 角色。

通常,运行 Db2 的 EC2 实例将具有系统管理员分配的 IAM 角色。如果未分配 IAM 角色,可以在 Amazon EC2 控制台上选择修改 IAM 角色

将 IAM 策略附加到与 EC2 实例关联的 IAM 角色。附加策略后,EC2 实例可以访问 S3 存储桶。

aws iam attach-role-policy --policy-arn "arn:aws:iam::aws_account_id:policy/db2s3hapolicy" --role-name db2s3harole
Task说明所需技能

在本地 Db2 服务器配置 AWS CLI。

使用之前生成的 Access Key IDSecret Access Key 配置 AWS CLI:

$ aws configure AWS Access Key ID [None]: ************* AWS Secret Access Key [None]: *************************** Default region name [None]: us-east-1 Default output format [None]: json
AWS 管理员、AWS 系统管理员

将备份映象发送到 Amazon S3。

早些时候,联机数据库备份已保存至 /backup 本地目录中。要将备份映象发送到 S3 存储桶,请运行以下命令:

aws s3 sync /backup s3://hadrmig-db2/SAMPLE_backup
AWS 管理员、AWS 系统管理员

将 Db2 存档日志发送至 Amazon S3。

将本地 Db2 存档日志与 Amazon EC2 上的目标 Db2 实例可以访问的 S3 存储桶同步:

aws s3 sync /db2logs s3://hadrmig-db2/SAMPLE_LOGS

使用 cron 或其他计划工具定期以运行此命令。频率取决于源数据库归档事务日志文件的频率。

Task说明所需技能

创建 PKCS12 密钥库。

Db2 使用公钥加密标准 (PKCS) 加密密钥库,保障 AWS 访问密钥的安全。创建密钥库并配置源 Db2,以进行使用:

gsk8capicmd_64 -keydb -create -db "/home/db2inst1/.keystore/db2s3.p12" -pw "<password>" -type pkcs12 -stash db2 "update dbm cfg using keystore_location /home/db2inst1/.keystore/db2s3.p12 keystore_type pkcs12"
数据库管理员

创建 Db2 存储访问别名。

Db2 使用存储访问别名通过 INGESTLOADBACKUP DATABASERESTORE DATABASE 命令直接访问 Amazon S3。

因为您为 EC2 实例分配了 IAM 角色,USERPASSWORD 并非必需:

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

例如,您的脚本可能如下所示:

db2 "catalog storage access alias DB2AWSS3 vendor S3 server s3.us-east-1.amazonaws.com container 'hadrmig-db2'"

数据库管理员

设置暂存区域。

我们建议使用 DB2_ENABLE_COS_SDK=ONDB2_OBJECT_STORAGE_SETTINGS=EnableStreamingRestoreawssdk 库链接,绕过 Amazon S3 暂存区进行数据库备份和恢复:

#By root: cp -rp /home/db2inst1/sqllib/lib64/awssdk/RHEL/7.6/* /home/db2inst1/sqllib/lib64/ #By db2 instance owner: db2set DB2_OBJECT_STORAGE_LOCAL_STAGING_PATH=/db2stage db2set DB2_ENABLE_COS_SDK=ON db2set DB2_OBJECT_STORAGE_LOCAL_STAGING_PATH=/db2stage db2stop db2start
数据库管理员

从备份映象恢复数据库。

从 S3 存储桶中的备份映象恢复 Amazon EC2 上的目标数据库:

db2 create db sample on /data1 db2 restore db sample from DB2REMOTE://DB2AWSS3/hadrmig-db2/SAMPLE_backup replace existing
数据库管理员
Task说明所需技能

配置本地 Db2 服务器为主服务器。

db2-server1(本地源)的 HADR 的数据库配置设置为主数据库。将 HADR_SYNCMODE 设置为 SUPERASYNC 模式,其事务响应时间最短:

db2 update db cfg for sample using HADR_LOCAL_HOST db2-server1 HADR_LOCAL_SVC 50010 HADR_REMOTE_HOST db2-ec2 HADR_REMOTE_SVC 50012 HADR_REMOTE_INST db2inst1 HADR_SYNCMODE SUPERASYNC DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully

本地数据中心与 AWS 之间预计会有一些网络延迟。(您可根据网络可靠性设置不同 HADR_SYNCMODE 值。有关更多信息,请参阅相关资源部分)。

数据库管理员

更改目标数据库日志归档目标。

更改目标数据库日志存档目标以匹配 Amazon EC2 环境:

db2 update db cfg for SAMPLE using LOGARCHMETH1 'DB2REMOTE://DB2AWSS3//SAMPLE_LOGS/' LOGARCHMETH2 OFF DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully
数据库管理员

在Amazon EC2 服务器上为 Db2 配置 HADR。

更新 db2-ec2 HADR 的数据库配置,使其处于待机状态:

db2 update db cfg for sample using HADR_LOCAL_HOST db2-ec2 HADR_LOCAL_SVC 50012 HADR_REMOTE_HOST db2-server1 HADR_REMOTE_SVC 50010 HADR_REMOTE_INST db2inst1 HADR_SYNCMODE SUPERASYNC DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully

数据库管理员

验证 HADR 设置。

验证源 Db2 服务器和目标 Db2 服务器上的 HADR 参数。

若要验证 db2-server1 上的设置,请运行以下命令:

db2 get db cfg for sample|grep HADR HADR database role = PRIMARY HADR local host name (HADR_LOCAL_HOST) = db2-server1 HADR local service name (HADR_LOCAL_SVC) = 50010 HADR remote host name (HADR_REMOTE_HOST) = db2-ec2 HADR remote service name (HADR_REMOTE_SVC) = 50012 HADR instance name of remote server (HADR_REMOTE_INST) = db2inst1 HADR timeout value (HADR_TIMEOUT) = 120 HADR target list (HADR_TARGET_LIST) = HADR log write synchronization mode (HADR_SYNCMODE) = NEARSYNC HADR spool log data limit (4KB) (HADR_SPOOL_LIMIT) = AUTOMATIC(52000) HADR log replay delay (seconds) (HADR_REPLAY_DELAY) = 0 HADR peer window duration (seconds) (HADR_PEER_WINDOW) = 0 HADR SSL certificate label (HADR_SSL_LABEL) = HADR SSL Hostname Validation (HADR_SSL_HOST_VAL) = OFF

若要验证 db2-ec2 上的设置,请运行以下命令:

db2 get db cfg for sample|grep HADR HADR database role = STANDBY HADR local host name (HADR_LOCAL_HOST) = db2-ec2 HADR local service name (HADR_LOCAL_SVC) = 50012 HADR remote host name (HADR_REMOTE_HOST) = db2-server1 HADR remote service name (HADR_REMOTE_SVC) = 50010 HADR instance name of remote server (HADR_REMOTE_INST) = db2inst1 HADR timeout value (HADR_TIMEOUT) = 120 HADR target list (HADR_TARGET_LIST) = HADR log write synchronization mode (HADR_SYNCMODE) = SUPERASYNC HADR spool log data limit (4KB) (HADR_SPOOL_LIMIT) = AUTOMATIC(52000) HADR log replay delay (seconds) (HADR_REPLAY_DELAY) = 0 HADR peer window duration (seconds) (HADR_PEER_WINDOW) = 0 HADR SSL certificate label (HADR_SSL_LABEL) = HADR SSL Hostname Validation (HADR_SSL_HOST_VAL) = OFF

HADR_LOCAL_HOSTHADR_LOCAL_SVCHADR_REMOTE_HOST、和 HADR_REMOTE_SVC 参数表示一个主 HADR 设置和一个备用 HADR 设置。

数据库管理员

启动 Db2 HADR 实例。

首先在备用服务器 db2-ec2 上启动 Db2 HADR 实例:

db2 start hadr on db sample as standby DB20000I The START HADR ON DATABASE command completed successfully.

在主(源)服务器 db2-server1 上启动 Db2 HADR:

db2 start hadr on db sample as primary DB20000I The START HADR ON DATABASE command completed successfully.

本地 Db2 和 Amazon EC2 上的 HADR 连接现已成功建立。Db2 主服务器 db2-server1 开始将事务日志记录实时传输至 db2-ec2

数据库管理员
Task说明所需技能

在 Amazon EC2 添加 Db2 作为辅助备用。

如果 HADR 正在本地 Db2 实例上运行,则可以通过在 db2-ec2 上运行以下命令,使用 HADR_TARGET_LIST 将 Amazon EC2 上的 Db2 添加为辅助备用实例:

db2 update db cfg for sample using HADR_LOCAL_HOST db2-ec2 HADR_LOCAL_SVC 50012 HADR_REMOTE_HOST db2-server1 HADR_REMOTE_SVC 50010 HADR_REMOTE_INST db2inst1 HADR_SYNCMODE SUPERASYNC DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully. db2 update db cfg for sample using HADR_TARGET_LIST "db2-server1:50010|db2-server2:50011" DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully.

数据库管理员

将辅助备用信息添加至本地服务器。

更新 HADR_TARGET_LIST 两台本地服务器(主服务器和备用服务器)。

db2-server1 上,运行以下代码:

db2 update db cfg for sample using HADR_TARGET_LIST "db2-server2:50011|db2-ec2:50012" DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully. SQL1363W One or more of the parameters submitted for immediate modification were not changed dynamically. For these configuration parameters, the database must be shutdown and reactivated before the configuration parameter changes become effective.

db2-server2 上,运行以下代码:

db2 update db cfg for sample using HADR_TARGET_LIST "db2-server1:50010|db2-ec2:50012" DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully. SQL1363W One or more of the parameters submitted for immediate modification were not changed dynamically. For these configuration parameters, the database must be shutdown and reactivated before the configuration parameter changes become effective.

数据库管理员

验证 HADR 设置。

验证源 Db2 服务器和目标 Db2 服务器上的 HADR 参数。

db2-server1 上,运行以下代码:

db2 get db cfg for sample|grep HADR HADR database role = PRIMARY HADR local host name (HADR_LOCAL_HOST) = db2-server1 HADR local service name (HADR_LOCAL_SVC) = 50010 HADR remote host name (HADR_REMOTE_HOST) = db2-server2 HADR remote service name (HADR_REMOTE_SVC) = 50011 HADR instance name of remote server (HADR_REMOTE_INST) = db2inst1 HADR timeout value (HADR_TIMEOUT) = 120 HADR target list (HADR_TARGET_LIST) = db2-server2:50011|db2-ec2:50012 HADR log write synchronization mode (HADR_SYNCMODE) = NEARSYNC HADR spool log data limit (4KB) (HADR_SPOOL_LIMIT) = AUTOMATIC(52000) HADR log replay delay (seconds) (HADR_REPLAY_DELAY) = 0 HADR peer window duration (seconds) (HADR_PEER_WINDOW) = 0 HADR SSL certificate label (HADR_SSL_LABEL) = HADR SSL Hostname Validation (HADR_SSL_HOST_VAL) = OFF

db2-server2 上,运行以下代码:

db2 get db cfg for sample|grep HADR HADR database role = STANDBY HADR local host name (HADR_LOCAL_HOST) = db2-server2 HADR local service name (HADR_LOCAL_SVC) = 50011 HADR remote host name (HADR_REMOTE_HOST) = db2-server1 HADR remote service name (HADR_REMOTE_SVC) = 50010 HADR instance name of remote server (HADR_REMOTE_INST) = db2inst1 HADR timeout value (HADR_TIMEOUT) = 120 HADR target list (HADR_TARGET_LIST) = db2-server1:50010|db2-ec2:50012 HADR log write synchronization mode (HADR_SYNCMODE) = NEARSYNC HADR spool log data limit (4KB) (HADR_SPOOL_LIMIT) = AUTOMATIC(52000) HADR log replay delay (seconds) (HADR_REPLAY_DELAY) = 0 HADR peer window duration (seconds) (HADR_PEER_WINDOW) = 0 HADR SSL certificate label (HADR_SSL_LABEL) = HADR SSL Hostname Validation (HADR_SSL_HOST_VAL) = OFF

db2-ec2 上,运行以下代码:

db2 get db cfg for sample|grep HADR HADR database role = STANDBY HADR local host name (HADR_LOCAL_HOST) = db2-ec2 HADR local service name (HADR_LOCAL_SVC) = 50012 HADR remote host name (HADR_REMOTE_HOST) = db2-server1 HADR remote service name (HADR_REMOTE_SVC) = 50010 HADR instance name of remote server (HADR_REMOTE_INST) = db2inst1 HADR timeout value (HADR_TIMEOUT) = 120 HADR target list (HADR_TARGET_LIST) = db2-server1:50010|db2-server2:50011 HADR log write synchronization mode (HADR_SYNCMODE) = SUPERASYNC HADR spool log data limit (4KB) (HADR_SPOOL_LIMIT) = AUTOMATIC(52000) HADR log replay delay (seconds) (HADR_REPLAY_DELAY) = 0 HADR peer window duration (seconds) (HADR_PEER_WINDOW) = 0 HADR SSL certificate label (HADR_SSL_LABEL) = HADR SSL Hostname Validation (HADR_SSL_HOST_VAL) = OFF

HADR_LOCAL_HOSTHADR_LOCAL_SVCHADR_REMOTE_HOSTHADR_REMOTE_SVCHADR_TARGET_LIST 参数表示一个主 HADR 设置和两个备用 HADR 设置。

停止和启动 Db2 HADR。

HADR_TARGET_LIST 现在已在所有三台服务器上进行设置。每个 Db2 服务器都了解其他两个。停止并重启 HADR(短暂停机)以利用新配置。

db2-server1 上,运行以下命令:

db2 stop hadr on db sample db2 deactivate db sample db2 activate db sample

db2-server2 上,运行以下命令:

db2 deactivate db sample db2 start hadr on db sample as standby SQL1766W The command completed successfully

db2-ec2 上,运行以下命令:

db2 start hadr on db sample as standby SQL1766W The command completed successfully

db2-server1 上,运行以下命令:

db2 start hadr on db sample as primary SQL1766W The command completed successfully

现在,本地 Db2 和 Amazon EC2 上的 HADR 连接已成功建立。Db2 主服务器 db2-server1 开始将事务日志记录实时流式传输至 db2-server2db2-ec2

数据库管理员
Task说明所需技能

确保备用服务器上无 HADR 延迟。

从主服务器 db2-server1 检查 HADR 状态。HADR_STATE 处于 REMOTE_CATCHUP 状态时不要惊慌,当 HADR_SYNCMODE 设置为 SUPERASYNC 时,这是正常的。PRIMARY_LOG_TIMESTANDBY_REPLAY_LOG_TIME 表示它们处于同步状态:

db2pd -hadr -db sample HADR_ROLE = PRIMARY REPLAY_TYPE = PHYSICAL HADR_SYNCMODE = SUPERASYNC STANDBY_ID = 2 LOG_STREAM_ID = 0 HADR_STATE = REMOTE_CATCHUP ..... PRIMARY_LOG_TIME = 10/26/2022 02:11:32.000000 (1666750292) STANDBY_LOG_TIME = 10/26/2022 02:11:32.000000 (1666750292) STANDBY_REPLAY_LOG_TIME = 10/26/2022 02:11:32.000000 (1666750292)
数据库管理员

运行 HADR 接管。

若要完成迁移,请运行 HADR takeover 命令创建 db2-ec2 主数据库。使用命令 db2pd 验证 HADR_ROLE 值:

db2 TAKEOVER HADR ON DATABASE sample DB20000I The TAKEOVER HADR ON DATABASE command completed successfully. db2pd -hadr -db sample Database Member 0 -- Database SAMPLE -- Active -- Up 0 days 00:03:25 -- Date 2022-10-26-02.46.45.048988 HADR_ROLE = PRIMARY REPLAY_TYPE = PHYSICAL

要完成向 AWS 的迁移,请将应用程序连接指向 Amazon EC2 的 Db2。

问题排查

问题解决方案

如果您出于防火墙和安全原因使用 NAT,则主机可能有两个 IP 地址(一个内部地址和一个外部地址),这可能会导致 HADR IP 地址检查失败。START HADR ON DATABASE 命令将返回以下消息:

HADR_LOCAL_HOST:HADR_LOCAL_SVC (-xx-xx-xx-xx.:50011 (xx.xx.xx.xx:50011)) on remote database is different from HADR_REMOTE_HOST:HADR_REMOTE_SVC (xx-xx-xx-xx.:50011 (x.x.x.x:50011)) on local database.

要在 NAT 环境中支持 HADR,您可使用内部地址和外部地址 HADR_LOCAL_HOST 进行配置。例如,如果 Db2 服务器有内部名称 host1 和外部名称 host1E,则 HADR_LOCAL_HOST 可以是 HADR_LOCAL_HOST: "host1 | host1E"

相关资源