

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 將 LUW 的 Db2 遷移至具有高可用性災難復原的 Amazon EC2
<a name="migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery"></a>

*Feng Cai、Aruna Gangireddy 和 Venkatesan Govindan，Amazon Web Services*

## 摘要
<a name="migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery-summary"></a>

當客戶將 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 資料庫。

## 先決條件和限制
<a name="migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery-prereqs"></a>

**先決條件 **
+ 作用中的 AWS 帳戶
+ 在符合內部部署檔案系統配置的 Amazon EC2 執行個體上執行的 Db2 執行個體 Amazon EC2 
+ EC2 執行個體可存取的 Amazon Simple Storage Service (Amazon S3) 儲存貯體
+ AWS Identity and Access Management (IAM) 政策和角色，用於對 Amazon S3 進行程式設計呼叫
+ Amazon EC2 和內部部署伺服器上的同步時區和系統時鐘
+ 透過 AWS [ Site-to-Site VPN 或 AWS](https://aws.amazon.com/vpn/) [Direct Connect 連線至 AWS](https://aws.amazon.com/directconnect/) 的內部部署網路
+ HADR 連接埠上的內部部署伺服器與 Amazon EC2 之間的通訊

**限制 **
+ Db2 內部部署執行個體和 Amazon EC2 必須位於相同的[平台系列](https://www.ibm.com/docs/en/db2/11.1?topic=dbrs-backup-restore-operations-between-different-operating-systems-hardware-platforms)。
+ 分割的資料庫環境中不支援 HADR。
+ HADR 不支援對資料庫日誌檔案使用原始 I/O （直接磁碟存取）。
+ HADR 不支援無限記錄。
+ `LOGINDEXBUILD` 必須設定為 `YES`，這會增加重建索引的日誌用量。
+ 必須記錄 Db2 內部部署工作負載。在資料庫組態`blocknonlogged=yes`中設定 ，以封鎖任何未記錄的交易。

**產品版本**
+ Db2 for LUW 11.5.9 版及更新版本

## Architecture
<a name="migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery-architecture"></a>

**來源技術堆疊**
+ Linux** **x86\$164 上的 Db2 

**目標技術堆疊**
+ 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 的工作流程。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/2db43e4b-f0ea-4a92-96da-4cafb7d3368b/images/5295420e-3cd8-4127-9a18-ade971c36339.png)


1. 日誌會從主要現場部署資料庫串流到待命現場部署資料庫。

1. 使用 Db2 HADR，日誌會透過 Site-to-Site VPN 從主要現場部署資料庫串流至 Amazon EC2 上的 Db2。 Amazon EC2

1. Db2 備份和封存日誌會從主要現場部署資料庫傳送至 AWS 上的 S3 儲存貯體。

## 工具
<a name="migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery-tools"></a>

**AWS 服務**
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) 是一種開放原始碼工具，可協助您透過命令列 shell 中的命令與 AWS 服務互動。
+ [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) 透過標準乙太網路光纖纜線，將您的內部網路連結至 Direct Connect 位置。透過此連線，您可以直接建立與公有 AWS 服務的虛擬介面，同時略過網路路徑中的網際網路服務供應商。
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) 在 AWS 雲端中提供可擴展的運算容量。您可以視需要啟動任意數量的虛擬伺服器，，並快速進行擴展或縮減。
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 可透過控制已驗證並獲授權使用的人員，協助您安全地管理對 AWS 資源的存取。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) 是一種雲端型物件儲存服務，可協助您儲存、保護和擷取任何數量的資料。
+ [AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) 可協助您在 AWS 上啟動的執行個體與您自己的遠端網路之間傳遞流量。

**其他工具**
+ [db2cli](https://www.ibm.com/docs/en/db2/11.5?topic=commands-db2cli-db2-interactive-cli) 是 Db2 互動式 CLI 命令。

## 最佳實務
<a name="migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery-best-practices"></a>
+ 在目標資料庫上，使用 [Amazon S3 的閘道端點](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html)來存取 Amazon S3 中的資料庫備份映像和日誌檔案。
+ 在來源資料庫上，使用適用於 [Amazon S3 的 AWS PrivateLink ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html) 將資料庫備份映像和日誌檔案傳送至 Amazon S3。

## 史詩
<a name="migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery-epics"></a>

### 設定環境變數
<a name="set-environment-variables"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 設定環境變數。 | 此模式使用以下名稱和連接埠：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery.html)您可以變更它們以符合您的環境。 | DBA | 

### 設定內部部署 Db2 伺服器
<a name="configure-the-on-premises-db2-server"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 設定 AWS CLI。 | 若要下載並安裝最新版本的 AWS CLI，請執行下列命令：<pre>$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"<br />unzip awscliv2.zip<br />sudo ./aws/install</pre> | Linux 管理員 | 
| 設定 Db2 封存日誌的本機目的地。 | 大量更新批次任務和網路變慢等條件可能會導致 HADR 待命伺服器延遲。若要趕上進度，待命伺服器需要來自主要伺服器的交易日誌。請求日誌的位置順序如下：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery.html)在此設定中， `/db2logs`會在來源`LOGARCHMETH2`上由 設定為預備區域。此目錄中的封存日誌會同步至 Amazon S3，並由 Amazon EC2 上的 Db2 存取。模式使用 ，`LOGARCHMETH2`因為 `LOGARCHMETH1` 可能已設定為使用 AWS CLI 命令無法存取的第三方廠商工具：<pre>db2 connect to sample<br />db2 update db cfg for SAMPLE using LOGARCHMETH2 disk:/db2logs</pre> | DBA | 
| 執行線上資料庫備份。 | 執行線上資料庫備份，並將其儲存至本機備份檔案系統：<pre>db2 backup db sample online to /backup </pre> | DBA | 

### 設定 S3 儲存貯體和 IAM 政策
<a name="set-up-the-s3-bucket-and-iam-policy"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 S3 儲存貯體。 | 為現場部署伺服器建立 S3 儲存貯體，以在 AWS 上將備份 Db2 映像和日誌檔案傳送至 。儲存貯體將由 Amazon EC2 存取：<pre>aws s3api create-bucket --bucket hadrmig-db2 --region us-east-1 </pre> | AWS 管理員 | 
| 建立 IAM 政策。 | `db2bucket.json` 檔案包含用於存取 S3 儲存貯體的 IAM 政策：<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Effect": "Allow",<br />            "Action": [<br />                "kms:GenerateDataKey",<br />                "kms:Decrypt",<br />                "s3:PutObject",<br />                "s3:GetObject",<br />                "s3:AbortMultipartUpload",<br />                "s3:ListBucket",<br />                "s3:DeleteObject",<br />                "s3:GetObjectVersion",<br />                "s3:ListMultipartUploadParts"<br />            ],<br />            "Resource": [<br />                "arn:aws:s3:::hadrmig-db2/*",<br />                "arn:aws:s3:::hadrmig-db2"<br />            ]<br />        }<br />    ]<br />}</pre>若要建立政策，請使用下列 AWS CLI 命令：<pre>aws iam create-policy \<br />      --policy-name db2s3hapolicy \<br />      --policy-document file://db2bucket.json </pre>JSON 輸出會顯示政策的 Amazon Resource Name (ARN)，其中 `aws_account_id`代表您的帳戶 ID：<pre>"Arn": "arn:aws:iam::aws_account_id:policy/db2s3hapolicy"</pre> | AWS 管理員、AWS 系統管理員 | 
| 將 IAM 政策連接至 IAM 角色。 | 通常，執行 Db2 的 EC2 執行個體會有系統管理員指派的 IAM 角色。 Db2 如果未指派 IAM 角色，您可以在 Amazon EC2 主控台上選擇**修改 IAM 角色**。將 IAM 政策連接至與 EC2 執行個體相關聯的 IAM 角色。連接政策後，EC2 執行個體可以存取 S3 儲存貯體：<pre>aws iam attach-role-policy --policy-arn "arn:aws:iam::aws_account_id:policy/db2s3hapolicy" --role-name db2s3harole   </pre> |  | 

### 將來源資料庫備份映像和日誌檔案傳送至 Amazon S3
<a name="send-the-source-database-backup-image-and-log-files-to-amazon-s3"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 在內部部署 Db2 伺服器上設定 AWS CLI。 | 使用`Secret Access Key`您先前產生的 `Access Key ID`和 設定 AWS CLI：<pre>$ aws configure <br />AWS Access Key ID [None]: *************<br />AWS Secret Access Key [None]: ***************************<br />Default region name [None]: us-east-1<br />Default output format [None]: json</pre> | AWS 管理員、AWS 系統管理員 | 
| 將備份映像傳送至 Amazon S3。 | 稍早，線上資料庫備份已儲存至`/backup`本機目錄。若要將備份映像傳送至 S3 儲存貯體，請執行下列命令：<pre>aws s3 sync /backup s3://hadrmig-db2/SAMPLE_backup</pre> | AWS 管理員、AWS 系統管理員 | 
| 將 Db2 封存日誌傳送至 Amazon S3。 | 將內部部署 Db2 封存日誌與 Amazon EC2 上的目標 Db2 執行個體可存取的 Amazon S3 儲存貯體同步： Db2 Amazon EC2<pre>aws s3 sync /db2logs s3://hadrmig-db2/SAMPLE_LOGS</pre>使用 cron 或其他排程工具定期執行此命令。頻率取決於來源資料庫封存交易日誌檔案的頻率。 |  | 

### 將 Amazon EC2 上的 Db2 連線至 Amazon S3，並啟動初始資料庫同步 Amazon EC2
<a name="connect-db2-on-amazon-ec2-to-amazon-s3-and-start-the-initial-database-sync"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 PKCS12 金鑰存放區。 | Db2 使用公有金鑰密碼編譯標準 (PKCS) 加密金鑰存放區來保護 AWS 存取金鑰的安全。建立金鑰存放區，並設定來源 Db2 以使用它：<pre>gsk8capicmd_64 -keydb -create -db "/home/db2inst1/.keystore/db2s3.p12" -pw "<password>" -type pkcs12 -stash <br /> <br />db2 "update dbm cfg using keystore_location /home/db2inst1/.keystore/db2s3.p12 keystore_type pkcs12"</pre> | DBA | 
| 建立 Db2 儲存體存取別名。 | Db2 使用儲存存取別名，透過 `INGEST`、`BACKUP DATABASE`、 `LOAD`或 `RESTORE DATABASE`命令直接存取 Amazon S3。由於您已將 IAM 角色指派給 EC2 執行個體，`USER``PASSWORD`因此不需要：`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'" ` | DBA | 
| 設定預備區域。 | 建議使用 `DB2_ENABLE_COS_SDK=ON`、 `DB2_OBJECT_STORAGE_SETTINGS=EnableStreamingRestore`和程式`awssdk`庫的連結，略過資料庫備份和還原的 Amazon S3 預備區域：<pre>#By root:<br />cp -rp /home/db2inst1/sqllib/lib64/awssdk/RHEL/7.6/* /home/db2inst1/sqllib/lib64/<br /><br />#By db2 instance owner:<br />db2set DB2_OBJECT_STORAGE_LOCAL_STAGING_PATH=/db2stage<br />db2set DB2_ENABLE_COS_SDK=ON<br />db2set DB2_OBJECT_STORAGE_LOCAL_STAGING_PATH=/db2stage<br />db2stop<br />db2start</pre> | DBA | 
| 從備份映像還原資料庫。 | 從 S3 儲存貯體中的備份映像還原 Amazon EC2 上的目標資料庫：<pre>db2 create db sample on /data1<br />db2 restore db sample from DB2REMOTE://DB2AWSS3/hadrmig-db2/SAMPLE_backup replace existing</pre> | DBA | 

### 在內部部署中設定沒有 HADR 的 HADR
<a name="set-up-hadr-with-no-hadr-on-premises"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 將內部部署 Db2 伺服器設定為主要伺服器。 | 將 HADR on `db2-server1`（內部部署來源） 的資料庫組態設定更新為主要伺服器。`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`值。 如需詳細資訊，請參閱[相關資源](#migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery-resources)一節）。 | DBA | 
| 變更目標資料庫日誌封存目的地。 | 變更目標資料庫日誌封存目的地以符合 Amazon EC2 環境：<pre>db2 update db cfg for SAMPLE using LOGARCHMETH1 'DB2REMOTE://DB2AWSS3//SAMPLE_LOGS/' LOGARCHMETH2 OFF<br />DB20000I  The UPDATE DATABASE CONFIGURATION command completed successfully</pre> | DBA | 
| 在 Amazon EC2 伺服器上設定 Db2 的 HADR。 Amazon EC2  | 將 上的 HADR 資料庫組態更新`db2-ec2`為待命：`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` | DBA | 
| 驗證 HADR 設定。 | 驗證來源和目標 Db2 伺服器上的 HADR 參數。若要驗證 上的設定`db2-server1`，請執行下列命令：<pre>db2 get db cfg for sample|grep HADR<br /> HADR database role                                      = PRIMARY<br /> HADR local host name                  (HADR_LOCAL_HOST) = db2-server1<br /> HADR local service name                (HADR_LOCAL_SVC) = 50010<br /> HADR remote host name                (HADR_REMOTE_HOST) = db2-ec2<br /> HADR remote service name              (HADR_REMOTE_SVC) = 50012<br /> HADR instance name of remote server  (HADR_REMOTE_INST) = db2inst1<br /> HADR timeout value                       (HADR_TIMEOUT) = 120<br /> HADR target list                     (HADR_TARGET_LIST) = <br /> HADR log write synchronization mode     (HADR_SYNCMODE) = NEARSYNC<br /> HADR spool log data limit (4KB)      (HADR_SPOOL_LIMIT) = AUTOMATIC(52000)<br /> HADR log replay delay (seconds)     (HADR_REPLAY_DELAY) = 0<br /> HADR peer window duration (seconds)  (HADR_PEER_WINDOW) = 0<br /> HADR SSL certificate label             (HADR_SSL_LABEL) =<br /> HADR SSL Hostname Validation        (HADR_SSL_HOST_VAL) = OFF</pre> 若要驗證 上的設定`db2-ec2`，請執行下列命令：<pre>db2 get db cfg for sample|grep HADR<br /> HADR database role                                      = STANDBY<br /> HADR local host name                  (HADR_LOCAL_HOST) = db2-ec2<br /> HADR local service name                (HADR_LOCAL_SVC) = 50012<br /> HADR remote host name                (HADR_REMOTE_HOST) = db2-server1<br /> HADR remote service name              (HADR_REMOTE_SVC) = 50010<br /> HADR instance name of remote server  (HADR_REMOTE_INST) = db2inst1<br /> HADR timeout value                       (HADR_TIMEOUT) = 120<br /> HADR target list                     (HADR_TARGET_LIST) = <br /> HADR log write synchronization mode     (HADR_SYNCMODE) = SUPERASYNC<br /> HADR spool log data limit (4KB)      (HADR_SPOOL_LIMIT) = AUTOMATIC(52000)<br /> HADR log replay delay (seconds)     (HADR_REPLAY_DELAY) = 0<br /> HADR peer window duration (seconds)  (HADR_PEER_WINDOW) = 0<br /> HADR SSL certificate label             (HADR_SSL_LABEL) =<br /> HADR SSL Hostname Validation        (HADR_SSL_HOST_VAL) = OFF</pre>`HADR_LOCAL_HOST`、`HADR_REMOTE_HOST`、 `HADR_LOCAL_SVC`和 `HADR_REMOTE_SVC` 參數指出一個主要和一個待命 HADR 設定。 | DBA | 
| 啟動 Db2 HADR 執行個體。 | 首先在待命伺服器上啟動 Db2 HADR 執行個體`db2-ec2`：<pre>db2 start hadr on db sample as standby<br />DB20000I  The START HADR ON DATABASE command completed successfully.</pre>在主要 （來源） 伺服器 上啟動 Db2 HADR`db2-server1`：<pre>db2 start hadr on db sample as primary<br />DB20000I  The START HADR ON DATABASE command completed successfully.</pre>Db2 on 內部部署和 Amazon EC2 之間的 HADR 連線現已成功建立。Db2 主要伺服器`db2-ec2`會即時`db2-server1`開始將交易日誌記錄串流至 。 | DBA | 

### 當內部部署存在 HADR 時設定 HADR
<a name="set-up-hadr-when-hadr-exists-on-premises"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 在 Amazon EC2 上新增 Db2 作為輔助待命。 Amazon EC2  | 如果 HADR 在內部部署 Db2 執行個體上執行，您可以在 上執行下列命令`HADR_TARGET_LIST`，使用 新增 Amazon EC2 上的 Db2 做為輔助待命`db2-ec2`： Amazon EC2 `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.` | DBA | 
| 將輔助待命資訊新增至內部部署伺服器。 | `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.` | DBA | 
| 驗證 HADR 設定。 | 驗證來源和目標 Db2 伺服器上的 HADR 參數。在 `db2-server1`上執行下列程式碼：<pre>db2 get db cfg for sample|grep HADR<br /> HADR database role                                      = PRIMARY<br /> HADR local host name                  (HADR_LOCAL_HOST) = db2-server1<br /> HADR local service name                (HADR_LOCAL_SVC) = 50010<br /> HADR remote host name                (HADR_REMOTE_HOST) = db2-server2<br /> HADR remote service name              (HADR_REMOTE_SVC) = 50011<br /> HADR instance name of remote server  (HADR_REMOTE_INST) = db2inst1<br /> HADR timeout value                       (HADR_TIMEOUT) = 120<br /> HADR target list                     (HADR_TARGET_LIST) = db2-server2:50011|db2-ec2:50012<br /> HADR log write synchronization mode     (HADR_SYNCMODE) = NEARSYNC<br /> HADR spool log data limit (4KB)      (HADR_SPOOL_LIMIT) = AUTOMATIC(52000)<br /> HADR log replay delay (seconds)     (HADR_REPLAY_DELAY) = 0<br /> HADR peer window duration (seconds)  (HADR_PEER_WINDOW) = 0<br /> HADR SSL certificate label             (HADR_SSL_LABEL) =<br /> HADR SSL Hostname Validation        (HADR_SSL_HOST_VAL) = OFF</pre>在 `db2-server2`上執行下列程式碼：<pre>db2 get db cfg for sample|grep HADR<br /> HADR database role                                      = STANDBY<br /> HADR local host name                  (HADR_LOCAL_HOST) = db2-server2<br /> HADR local service name                (HADR_LOCAL_SVC) = 50011<br /> HADR remote host name                (HADR_REMOTE_HOST) = db2-server1<br /> HADR remote service name              (HADR_REMOTE_SVC) = 50010<br /> HADR instance name of remote server  (HADR_REMOTE_INST) = db2inst1<br /> HADR timeout value                       (HADR_TIMEOUT) = 120<br /> HADR target list                     (HADR_TARGET_LIST) = db2-server1:50010|db2-ec2:50012<br /> HADR log write synchronization mode     (HADR_SYNCMODE) = NEARSYNC<br /> HADR spool log data limit (4KB)      (HADR_SPOOL_LIMIT) = AUTOMATIC(52000)<br /> HADR log replay delay (seconds)     (HADR_REPLAY_DELAY) = 0<br /> HADR peer window duration (seconds)  (HADR_PEER_WINDOW) = 0<br /> HADR SSL certificate label             (HADR_SSL_LABEL) =<br /> HADR SSL Hostname Validation        (HADR_SSL_HOST_VAL) = OFF</pre>在 `db2-ec2`上執行下列程式碼：<pre>db2 get db cfg for sample|grep HADR<br /> HADR database role                                      = STANDBY<br /> HADR local host name                  (HADR_LOCAL_HOST) = db2-ec2<br /> HADR local service name                (HADR_LOCAL_SVC) = 50012<br /> HADR remote host name                (HADR_REMOTE_HOST) = db2-server1<br /> HADR remote service name              (HADR_REMOTE_SVC) = 50010<br /> HADR instance name of remote server  (HADR_REMOTE_INST) = db2inst1<br /> HADR timeout value                       (HADR_TIMEOUT) = 120<br /> HADR target list                     (HADR_TARGET_LIST) = db2-server1:50010|db2-server2:50011<br /> HADR log write synchronization mode     (HADR_SYNCMODE) = SUPERASYNC<br /> HADR spool log data limit (4KB)      (HADR_SPOOL_LIMIT) = AUTOMATIC(52000)<br /> HADR log replay delay (seconds)     (HADR_REPLAY_DELAY) = 0<br /> HADR peer window duration (seconds)  (HADR_PEER_WINDOW) = 0<br /> HADR SSL certificate label             (HADR_SSL_LABEL) =<br /> HADR SSL Hostname Validation        (HADR_SSL_HOST_VAL) = OFF</pre>`HADR_LOCAL_HOST`、`HADR_LOCAL_SVC`、`HADR_REMOTE_HOST`、 `HADR_REMOTE_SVC`和 `HADR_TARGET_LIST` 參數指出一個主要和兩個待命 HADR 設定。 |  | 
| 停止和啟動 Db2 HADR。 | `HADR_TARGET_LIST` 現在已在所有三個伺服器上設定 。每個 Db2 伺服器都知道另外兩個伺服器。停止並重新啟動 HADR （短暫中斷），以利用新的組態。在 `db2-server1`上執行下列命令：<pre>db2 stop hadr on db sample<br />db2 deactivate db sample<br />db2 activate db sample</pre>在 `db2-server2`上執行下列命令：<pre>db2 deactivate db sample<br />db2 start hadr on db sample as standby<br />SQL1766W  The command completed successfully</pre>在 `db2-ec2`上執行下列命令：<pre>db2 start hadr on db sample as standby<br />SQL1766W  The command completed successfully</pre>在 `db2-server1`上執行下列命令：<pre>db2 start hadr on db sample as primary<br />SQL1766W  The command completed successfully</pre>Db2 on 內部部署和 Amazon EC2 之間的 HADR 連線現已成功建立。Db2 主要伺服器`db2-server1`會開始即時串流交易日誌記錄到 `db2-server2`和 `db2-ec2` 。 | DBA | 

### 在切換時段將 Amazon EC2 上的 Db2 設為主要 Amazon EC2
<a name="make-db2-on-amazon-ec2-as-primary-during-the-cutover-window"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 確定待命伺服器上沒有 HADR 延遲。 | 從主要伺服器 檢查 HADR 狀態`db2-server1`。當 `HADR_STATE` 處於 `REMOTE_CATCHUP` 狀態時，請勿發出警示，當 `HADR_SYNCMODE`設為 時，這是正常的`SUPERASYNC`。`PRIMARY_LOG_TIME` 和 `STANDBY_REPLAY_LOG_TIME`顯示它們處於同步狀態：<pre>db2pd -hadr -db sample<br />                            HADR_ROLE = PRIMARY<br />                          REPLAY_TYPE = PHYSICAL<br />                        HADR_SYNCMODE = SUPERASYNC<br />                           STANDBY_ID = 2<br />                        LOG_STREAM_ID = 0<br />                           HADR_STATE = REMOTE_CATCHUP<br />.....<br />                     PRIMARY_LOG_TIME = 10/26/2022 02:11:32.000000 (1666750292)<br />                     STANDBY_LOG_TIME = 10/26/2022 02:11:32.000000 (1666750292)<br />              STANDBY_REPLAY_LOG_TIME = 10/26/2022 02:11:32.000000 (1666750292)</pre> | DBA | 
| 執行 HADR 接管。 | 若要完成遷移，請執行 HADR 接管命令來建立`db2-ec2`主要資料庫。使用 命令`db2pd`來驗證`HADR_ROLE`值：<pre>db2 TAKEOVER HADR ON DATABASE sample<br />DB20000I  The TAKEOVER HADR ON DATABASE command completed successfully.<br /><br />db2pd -hadr -db sample<br />Database Member 0 -- Database SAMPLE -- Active -- Up 0 days 00:03:25 -- Date 2022-10-26-02.46.45.048988<br /><br />                            HADR_ROLE = PRIMARY<br />                          REPLAY_TYPE = PHYSICAL</pre>若要完成遷移至 AWS，請將應用程式連線指向 Amazon EC2 上的 Db2。 Amazon EC2 |  | 

## 疑難排解
<a name="migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery-troubleshooting"></a>


| 問題 | 解決方案 | 
| --- | --- | 
| 如果您因防火牆和安全原因而使用 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，](https://www.ibm.com/docs/en/db2/11.5?topic=support-hadr-nat)您可以使用內部和外部地址`HADR_LOCAL_HOST`來設定 。例如，如果 Db2 伺服器具有內部名稱 `host1`和外部名稱 `host1E`，則 `HADR_LOCAL_HOST` 可以是 `HADR_LOCAL_HOST: "host1 \| host1E"`。 | 

## 相關資源
<a name="migrate-db2-for-luw-to-amazon-ec2-with-high-availability-disaster-recovery-resources"></a>
+ [不同作業系統和硬體平台之間的 Db2 備份和還原操作](https://www.ibm.com/docs/en/db2/11.5?topic=dbrs-backup-restore-operations-between-different-operating-systems-hardware-platforms)
+ [設定 Db2 STORAGE ACCESS ALIAS 和 DB2REMOTE](https://www.ibm.com/docs/en/db2/11.5?topic=commands-catalog-storage-access)
+ [Db2 高可用性災難復原](https://www.ibm.com/docs/en/db2/11.5?topic=server-high-availability-disaster-recovery-hadr)
+ [hadr\$1syncmode - 用於對等狀態組態參數中日誌寫入的 HADR 同步模式](https://www.ibm.com/docs/en/db2/11.5?topic=dcp-hadr-syncmode-hadr-synchronization-mode-log-writes-in-peer-state)