使用 OCI Full Stack Disaster Recovery,使用 PostgreSQL 自動執行 OCI Database 的冷災害復原
簡介
Oracle Cloud Infrastructure Full Stack Disaster Recovery (OCI Full Stack DR) 只需按一下,即可協調全球 OCI 區域之間的運算、資料庫和應用程式轉換。客戶可以自動執行復原一或多個業務系統所需的步驟,無需重新設計或重新架構現有的基礎架構、資料庫或應用程式,也無需使用專門的管理或轉換伺服器。
OCI Database with PostgreSQL 是完全託管的 PostgreSQL 相容服務,具有智慧型大小、調整和高持久性。此服務會在建立和刪除資料庫表格時自動調整儲存體,讓您輕鬆管理並最佳化儲存體支出。資料在傳輸中和靜態都經過加密。OCI Database with PostgreSQL 可在可用性網域 (AD) 發生故障時提供持久性,以提供高可用性。
在本教學課程中,您將瞭解如何使用 PostgreSQL 將 OCI 資料庫的冷災復原自動化。它概述了使用 OCI Full Stack DR 服務來管理切換和容錯移轉程序的程序。
注意:這種類型的災害復原 (DR) 策略依賴備份和回復機制,因此最適合非關鍵應用程式,因為復原時間目標 (RTO) 和復原點目標 (RPO) 的業務需求並未過度要求。
架構描述
本教學課程中提供的架構展示了在 OCI 虛擬機器 (VM) 上執行的典型 Web 應用程式,並與 OCI 資料庫與 PostgreSQL 緊密整合。
OCI 負載平衡器部署在兩個區域的公用子網路內,以有效管理外部使用者連線。應用程式使用者會透過 DNS 流量操控,遞送至區域 X 中目前作用中的後端。
fsdr_psql_backup_restore_dr-Physical_Architecture.png 圖解描述
災害復原架構描述
此 Web 應用程式的 DR 策略涉及全方位的方法,包括將 VM 的開機磁碟區與磁碟區群組複製的完整複製。
對於含有 PostgreSQL 的 OCI 資料庫,會啟用備份複製,以定期將自動備份複製到遠端區域,以確保資料保護和災害復原就緒。
fsdr_psql_backup_restore_dr-Physical_DR_Architecture.png 圖解描述
此部署的復原解決方案需要 OCI Full Stack DR 在進行復原作業 (例如容錯移轉或切換) 時,執行一系列自訂的 Python 命令檔。
本教學課程中參照的命令檔由 EMEA 技術工程團隊提供,可於此取得: full-stack-disaster-recovery ,此為此 DR 解決方案量身打造。
本教學課程說明如何下載命令檔以及如何在稍後的工作中使用這些命令檔。
備註:針對一般指引提供下列指令檔。您可以使用自己的命令檔,或根據公司原則和安全需求自訂命令檔。
負載平衡器已在遠端區域預先佈建,確保在切換或容錯移轉期間將 Web 應用程式 VM 轉換至遠端區域時,能夠順暢地處理流量如下圖所示,DNS 操控原則保證負載平衡器的無縫切換,並將狀況檢查連附至目前可用負載平衡器後端集的路由。如需詳細資訊,請參閱 OCI 流量管理。
負載平衡器監聽器是在 80
(前端) 和 8000
(API) 連接埠上設定,而且預設組態中會分別遞送至 3000
和 8585
連接埠。
fsdr_psql_backup_restore_dr-Physical_Network_Architecture.png 圖解描述
下圖說明從主要區域自動備份複製到遠端區域的工作流程。
fsdr_psql_backup_restore_dr-Logical_Workflow_Auto_Copy_Backup_to_Remote.png 圖解描述
在此情況下,備份可以排定為每日執行,然後複製到遠端區域以進行額外的備援,進而產生 24 小時的復原點目標 (RPO)。
注意:
- 請務必啟用自動備份,並啟用備份複製至遠端區域。若無此步驟,回復處理作業可能會因次要區域中沒有備份而失敗。
- 在本教學課程中,我們將焦點放在自動化建立、傳輸至另一個區域以及從備份建立新資料庫系統等作業,您可以依照我們的 OCI 資料庫 (內含 PostgreSQL 文件) 手動執行這些非常相同的步驟。
如果使用案例需要較短的 RPO,則解決方案會排定較頻繁的備份,並使用提供的命令檔 (psql_create_bkp.py
和 psql_copy_bkp.py
) 手動觸發備份,然後根據業務需求將它們複製到遠端區域。此外,psql_copy_config.py
也可以用來將具有 PostgreSQL 組態的 OCI 資料庫複製到遠端區域,這是還原資料庫系統擴充功能和參數的必要條件。
fsdr_psql_backup_restore_dr-Logical_Workflow_Manual_Backup_Copy_to_Remote.png 圖解描述
所有指令碼皆可在 GitHub 上使用,且在下列各節中詳細說明。
備註:請務必根據您的業務需求排定此指令碼 (或類似的指令碼),以定期進行備份並將其複製到遠端區域。若無此步驟,回復處理作業可能會因次要區域中沒有備份而失敗。
復原如何運作?
執行計畫的切換之後,角色將會反轉:主要工作負載將在第 2 區執行,而待命資料庫則會在第 1 區運作。此架構的顯示方式如下:
fsdr_psql_backup_restore_dr-Physical_Switchover_Architecture.png 圖解描述
在目前的設定中,我們運用 OCI 專用 DNS 服務管理 DNS 記錄,以將流量導向至具有 PostgreSQL 端點的作用中 OCI 資料庫。在復原過程中,此 DNS 記錄會透過自訂命令檔 (psql_update_dns.py
) 進行更新,以反映新的 OCI 資料庫與 PostgreSQL,確保能夠順暢切換或容錯移轉及持續服務。
下圖說明還原待命區域中具有 PostgreSQL 備份之最新 OCI 資料庫的工作流程,此備份會變成新的主要區域。
fsdr_psql_backup_restore_dr-Logical_Workflow_Switchover_to_Remote.png 圖解描述
整個教學課程的定義和假設
-
區域:
-
第 1 區 (杜拜):杜拜一開始將作為主要區域。不過,此角色在切換處理作業期間會轉換成待命資料庫,這會在之後的作業中作為災害復原計畫的一部分執行。
-
區域 2 (阿布達比):阿布達比一開始將作為待命區域運作。此角色稍後會轉換成切換處理作業之後的主要角色,此切換處理作業會在災害復原程序的後續作業中執行。
-
-
區間:您可以免費將此部署和 OCI Full Stack DR 組織到符合 IT 治理標準的任何區間配置中。我們選擇在單一區間中組織此教學課程的所有 OCI 資源。
Web 應用程式虛擬機器
本教學課程中的 Web 應用程式主要展示端對端案例架構,單一部署命令檔 (deploy_application_demo.sh
) 將在 Web 應用程式 VM 中設定及部署應用程式堆疊。如需有關建置應用程式的進一步指示,請參閱儲存區域: link-to-web-app-sample 。
前端預覽:報表中可見的資料列會直接從 OCI Database 使用 PostgreSQL 取得。
webapp-frontend-preview.png 圖解描述
目標
本教學課程涵蓋下列工作:
- 工作 1:準備環境以進行災害復原。
- 工作 2:在兩個區域中建立 DR 保護群組 (DRPG)。
- 工作 3:新增成員至 DR 保護群組。
- 作業 4:在區域 2 中建立基本 DR 計畫。
- 作業 5:自訂區域 2 中的切換計畫。
- 工作 6:自訂區域 2 中的容錯移轉計畫。
- 作業 7:執行區域 2 中 DR 計畫的前置檢查。
- 作業 8:在區域 2 中執行切換計畫。
- 作業 9:在區域 1 中建立並自訂 DR 計畫。
- 作業 10:在區域 1 中執行容錯移轉計畫。
工作 1:準備災害復原的環境
作業 1.1:建立磁碟區群組並啟用複寫
在區域 1 中為範例 Web 應用程式 VM 建立磁碟區群組,並確保在區域 2 中複製該磁碟區群組。確定每個應用程式 VM 的開機磁碟區 (範例 WebApp) 是磁碟區群組的成員,且磁碟區群組會複製到區域 2。
下列影像顯示已建立的磁碟區群組 (包括 Web 應用程式 VM 的開機磁碟區),且已順利啟用複製至區域 2。如需詳細資訊,請參閱建立磁碟區群組。
psql-webapp-create-vol-grp.png 圖解描述
psql-webapp-create-vol-grp-2.png 圖解描述
psql-webapp-create-vol-grp-3.png 圖解描述
設定跨區域複製之後,請按下一步,直到移至摘要並按一下建立為止。
作業 1.2:準備用於自動部署的 Web 應用程式 VM
-
從此處下載 / 複製 GitHub 儲存區域:
/home/opc
資料夾中的 ( oci-postgressql-colddr)。 -
建立命令檔執行檔。
chmod +x deploy_application_demo.sh
-
將
deploy_application_demo.sh
命令檔更新為 Web 應用程式和 OCI 資料庫的必要詳細資訊 (兩個區域都有 PostgreSQL)。WEBAPP_HOME
:部署的根位置 (執行指令碼的位置)。例如,/home/opc
。WEBAPP_URL
:指向運算的 URL,API 為http://webapi.yoururl.eu:8000
。PRIMARY_REGION
: OCI 主要區域。格式為eu-frankfurt-1
。STANDBY_REGION
: OCI 待命區域。PRIMARY_SECRET_OCID
:主要區域 (ocid1.vaultsecret.oc1.me-dubai-1.xxxxxx
) 中包含 PostgreSQL 密碼的 OCI 保存庫加密密碼 OCID。STANDBY_SECRET_OCID
:在待命區域 (ocid1.vaultsecret.oc1.me-abudhabi-1.xxxxxx
) 中使用 PostgreSQL 密碼的 OCI 保存庫加密密碼 OCID。PG_USER
:用於載入範例資料的資料庫使用者 (postgresql_sample.sql
)。PG_DB
:用來載入範例資料的資料庫。預設值為postgres
。PG_HOST
:資料庫專用區域項目的 FQDN。
注意:
- 請確定已正確更新所有值。
- 使用預設組態時,其他參數可以保持不變。
-
執行
deploy_application_demo.sh
命令檔。./deploy_application_demo.sh
這將會部署前端、後端、設定服務和防火牆。
部署成功後,會顯示部署完成! 訊息。
在教學課程中,我們將使用此相同的 VM 來執行使用者定義命令檔。確定已將作為 DR 控制節點的 VM 設定為執行命令。如需詳細資訊,請參閱搭配 Oracle Cloud Infrastructure Full Stack Disaster Recovery 使用 run 命令呼叫自訂命令檔。
工作 1.3:建立 Web 操控原則
為了保證我們的應用程式永遠指向作用中的區域,可以利用容錯移轉流量管理操控原則。結合 OCI Health Checks 服務的操控原則會透過 HTTP 監督器每 60 秒 (預設 TTL) 驗證應用程式端點。
-
前往 OCI 主控台並瀏覽至網路。
-
按一下交通管理操控原則。
-
按一下建立交通管理操控原則。
psql-webapp-dns-create.png 圖解描述
-
選取容錯移轉作為原則類型。
- 輸入操控原則的名稱。
- 選取操控原則的區間。
- 根據您的需求選取 TTL。
-
設定解答集區 1 ,指向區域 1 中的負載平衡器。
- 輸入人才庫有意義的名稱。
- 選取記錄作為類型。
- 在區域 1 輸入 Web 應用程式負載平衡器的 IP。
-
設定解答集區 2 ,指向區域 2 中的負載平衡器。
- 輸入集區的名稱。
- 選取記錄作為類型。
- 在區域 2 輸入 Web 應用程式負載平衡器的 IP。
-
設定集區優先順序,此內容優先順序會指定給區域 1 。
-
按一下新增即可連附 OCI 狀況檢查原則。
- 選取要求類型作為 HTTP 。
- 輸入狀況檢查的名稱。
- 選取要進行狀況檢查的區間。
-
按一下進階選項,
- 輸入 Web 應用程式的連接埠,在此例中為
80
。 - 輸入 Web 應用程式路徑,在此例中為
/
。 - 選取 GET 作為方法。
- 選取要求的逾時。
- 輸入 Web 應用程式的連接埠,在此例中為
-
設定附加的網域。
- 輸入
webapi
端點的子網域。 - 選取包含此區域 (網域) 的區間。
- 選取適當的區域。
- 對
webapp
端點重複步驟 1 到 3。
- 輸入
-
檢查所有詳細資訊是否正確,然後按一下建立流量管理操控原則。一段時間後,建立作業應顯示為已完成。
-
您可以查看操控原則後續建立的總覽。頁面結尾可以看到附加的狀況檢查。
psql-webapp-dxb-dns-create-details.png 圖解描述
- 按一下已附加狀況檢查。
- 導覽至狀況檢查歷史記錄。
-
您可以在此處檢視目前可用的負載平衡器以及過去的可用性。
-
任務 1.4:為 OCI Full Stack DR 建立 Oracle Cloud Infrastructure Identity and Access Management 原則
若要設定 OCI Full Stack DR 所需的 OCI IAM 原則,請參閱:
作業 1.5:為 OCI Full Stack DR 管理的其他服務建立 OCI IAM 原則
OCI Full Stack DR 必須能夠控制和管理其他關鍵 OCI 服務,例如運算、網路、儲存和其他雜項服務。若要為其他服務設定必要的 OCI IAM 原則,請參閱 Full Stack Disaster Recovery 管理的其他服務原則和 OCI IAM 原則。
工作 2:在兩個區域中建立 DR 保護群組 (DRPG)
如果此應用程式堆疊的保護群組還不存在,請在區域 1 和區域 2 中建立 DR 保護群組。
工作 2.1:在區域 1 中建立保護群組
-
前往 OCI 主控台並瀏覽至 DR 保護群組。
- 確定 OCI 區域相關資訊環境設為區域 1 (杜拜)。
- 按一下移轉與災害復原。
- 按一下 DR 保護群組。
-
在區域 1 中建立基本 DR 保護群組 (DRPG)。將會在後續的步驟中指定對等、角色及成員。
- 選取要建立 DRPG 的區間。
- 按一下建立 DR 保護群組以開啟對話方塊。
- 輸入 DRPG 的名稱。
- 選取 OCI Full Stack DR 日誌的 OCI Object Storage 分組。
- 按一下建立。
任務 2.2:在區域 2 中建立保護群組
-
前往 OCI 主控台,瀏覽至 DR 保護群組。
- 確定 OCI 區域相關資訊環境設為 Region 2 (Abu Dhabi)。
- 按一下移轉與災害復原。
- 按一下 DR 保護群組。
-
在區域 2 中建立基本 DR 保護群組 (DRPG)。將會在後續的步驟中指定對等、角色及成員。
- 選取要建立 DRPG 的區間。
- 按一下建立 DR 保護群組以開啟對話方塊。
- 輸入 DRPG 的名稱。
- 選取 OCI Full Stack DR 日誌的 OCI Object Storage 分組。
- 按一下建立。
工作 2.3:關聯區域 1 和區域 2 中的保護群組
將每個區域中的 DRPG 關聯為彼此的同儕,並指派主要和待命的同儕角色。主要和待命資料庫的角色會由 OCI Full Stack DR 自動變更,作為任何 DR 作業 /DR 計畫執行的一部分;您無需隨時手動管理角色。
-
前往 DR 保護群組詳細資訊頁面。
- 確定 OCI 區域相關資訊環境設為區域 1 (杜拜)。
- 按一下關聯即可開始處理。
-
如下列影像所示,輸入參數。
- 角色:選取主要角色。OCI Full Stack DR 會自動將待命角色指派給 Region 2。
- 對等區域:選取建立其他 DRPG 的區域 2 (Abu Dhabi)。
- 對等 DR 保護群組:選取已建立的對等 DRPG。
- 按一下關聯。
關聯完成後,OCI Full Stack DR 將顯示如下圖所示的內容。
- 目前的主要對等 DRPG 是杜拜 (區域 1)。
- 目前的待命對等 DRPG 是阿布達比 (區域 2)。
psql-webapp-dxbauh-drpg-primary.png 圖解描述
每當相關資訊環境 / 視觀表是從全域觀點顯示所有 DR 保護群組時,都可以找到相同的資訊,如下圖所示。
- 目前的主要對等 DRPG 是杜拜 (區域 1)。
- 目前的待命對等 DRPG 是阿布達比 (區域 2)。
psql-webapp-dxbauh-drpg-standby.png 圖解描述
工作 3:新增成員至 DR 保護群組
在這項任務中,我們會將下列 OCI 資源新增至 Region 1 的主要 DRPG。
- 代管 Web 應用程式的運算執行處理將會新增為移動中的 VM。
- 包含 Web 應用程式運算節點開機磁碟區的磁碟區群組。
- 主要負載平衡器。
任務 3.1:將成員新增至區域 1 中的 DRPG
-
在區域 1 中選取 DRPG,如下圖所示。
- 確定 OCI 區域相關資訊環境為區域 1 (杜拜)。
- 選取區域 1 中的 DRPG。
- 選取成員。
- 按一下新增成員以開始程序。
-
新增 Web 應用程式 VM 的運算執行處理。
- 確認有關 DR 計畫的警告。
- 輸入運算作為成員資源類型。
- 選取代管 Web 應用程式的運算執行處理。
- 選取移動執行處理。
- 按一下新增 VNIC 對應,選取進行復原時要指定給區域 2 之 VNIC 的 VCN 和子網路。
- 按一下顯示進階選項,
- 在設定值中,選取保留容錯域。
- 確認詳細資訊,然後按一下新增。
psql-webapp-dxb-drpg-add-compute.png 圖解描述
psql-webapp-dxb-drpg-add-compute-vnic.png 圖解描述
psql-webapp-dxb-drpg-add-compute-vnic-details.png 圖解描述
-
新增包含 Web 應用程式 VM 之開機磁碟區的區塊磁碟區群組。
- 確認有關 DR 計畫的警告。
- 選取磁碟區群組作為資源類型成員。
- 請確定已選取包含磁碟區群組的正確區間,然後選取磁碟區群組。
- 確認詳細資訊,然後按一下新增。
-
在此範例中,我們將 OCI Load Balancer 新增為 Region 1 中 DRPG 的成員。
- 確認有關 DR 計畫的警告。
- 選取負載平衡器作為資源類型成員。
- 確定已為負載平衡器選取正確的區間,並且選取要新增的負載平衡器。
- 選取要在區域 2 中使用的目的地負載平衡器。
- 選取來源後端集,這是 Web 應用程式 VM 所使用的後端集。OCI 負載平衡器可以在多個應用程式之間共用,而且可能已設定多個後端集。在 DR 切換期間,只有在此處指定的後端集會將其組態移至待命區域。
- 選取目的地後端集,這是區域 2 中建立的空白後端集。
- 確認詳細資訊,然後按一下新增。
psql-webapp-dxb-drpg-add-lb.png 圖解描述
-
請確定「成員」區段包含負載平衡器、磁碟區群組以及運算執行處理。
任務 3.2:將成員新增至區域 2 中的 DRPG
-
在「區域 2」中選取 DRPG,如下圖所示。
- 確定 OCI 區域相關資訊環境是 Region 2 (Abu Dhabi)。
- 選取「區域 2」中的 DRPG。
- 選取成員。
- 按一下新增成員以開始程序。
-
在此範例中,我們將在 Region 2 中新增 OCI Load Balancer 作為 DRPG 的成員。
- 確認有關 DR 計畫的警告。
- 選取負載平衡器作為資源類型成員。
- 請確定為負載平衡器選取正確的區間,然後選取要新增的負載平衡器。
- 選取要在區域 1 中使用的目的地負載平衡器。
- 選取來源後端集,這是 Web 應用程式 VM 所使用的後端集。OCI 負載平衡器可以在多個應用程式之間共用,而且可能已設定多個後端集。在 DR 切換期間,只有在此處指定的後端集會將其組態移至待命區域。
- 選取目的地後端集,此後端集會在區域 2 中建立。
- 確認詳細資訊,然後按一下新增。
psql-webapp-aux-drpg-add-lb.png 圖解描述
-
請檢查成員區段是否包含負載平衡器。
作業 4:在區域 2 中建立基本 DR 計畫
在這項任務中,我們將在 Region 2 (Abu Dhabi) 中建立與待命 DR 保護群組相關的初始切換和容錯移轉計畫。
這些計畫的目的是將工作負載從主要區域 (區域 1) 順暢地轉換至待命區域 (區域 2)。在任何 DR 作業中,兩個區域中的 DR 保護群組角色都會自動回復:區域 1 中的保護群組會成為待命資料庫,而區域 2 中的保護群組則是容錯移轉或切換之後的主要角色。
OCI Full Stack DR 會使用衍生自先前任務期間新增之成員資源的內建步驟,預先植入這些計畫。這些計畫稍後將自訂為在復原過程中使用 PostgreSQL 管理 OCI 資料庫的特定作業。
切換計畫一律會在保留待命角色的保護群組內建立。由於第 2 區 (阿布達比) 目前是待命保護群組,因此我們將開始建立計畫。
作業 4.1:建立 DR 計畫
-
選取區域 2 (阿布達比) 中的 DRPG 來建立基本計劃
- 確定 OCI 區域相關資訊環境是 Region 2 (Abu Dhabi)。
- 選擇區域 2 的待命 DRPG。
- 選取方案。
- 按一下建立計畫以開始處理。
-
建立切換計畫。
- 輸入簡單但有意義的切換計畫名稱。這個名字應該盡量簡短,但很容易理解,以幫助減少危機期間的混淆與人為錯誤。
- 選取計畫類型作為切換 (計畫) 。
- 按一下建立。
-
建立容錯移轉計畫。依照相同的程序建立基本容錯移轉計畫,如下圖所示。
- 輸入容錯移轉計畫的名稱。
- 選取計畫類型作為容錯移轉 (非計畫性) 。
- 按一下建立。
區域 2 中的待命 DR 保護群組現在應該有兩個 DR 計畫,如下圖所示。這些將處理將工作負載從 Region 1 轉換成 Region 2。您將在「區域 1」建立類似的計畫,以便在稍後的工作中將工作負載從「區域 2」轉換回「區域 1」。
psql-webapp-auh-drpg-plans.png 圖解描述
作業 5:自訂區域 2 中的切換計畫
在任務 4 中建立的基本 DR 計畫包含預先植入的復原任務步驟,這些步驟內建於 OCI Full Stack DR 中,且不包含任何內容來管理 OCI Database with PostgreSQL 特定的復原任務。本工作說明如何新增自訂、使用者定義的 DR 計畫群組和步驟,以管理切換期間需要完成的任務:
- 在正常關閉 Web 應用程式 VM 之後建立資料庫備份,以確保資料的一致性。
- 將最新的資料庫備份傳輸至遠端 OCI Region 2,以進行備援和災害復原。
- 回復區域 2 中最新的資料庫備份,以準備環境進行切換。
- 更新專用資料庫 DNS 記錄,讓應用程式 VM 能夠順暢地連線至區域 2 中的資料庫。
- 使用區域 1 中的 PostgreSQL 資料庫終止來源 OCI 資料庫。
作業 5.1:選取切換計畫
瀏覽至「任務 4」中建立的切換計畫。在任務 5.3 中,您將新增群組。
psql-webapp-auh-drpg-create-switchover-add.png 圖解描述
作業 5.2:( 選擇性 ) 啟用終止構件的 DR 計畫群組
切換計畫中預設會停用三個計畫群組,如下圖所示。這些計畫群組會停用以在測試期間提供重新保證,確保不會刪除任何使用者自建物件,而且在測試階段發生問題時,可行的備份複本會維持不變。
不過,這三個計畫群組是設計來終止 (刪除) 未來 DR 作業不再需要的使用者自建物件。若未啟用這些計畫群組,未使用的使用者自建物件將會在您切換兩個區域時持續累積,這可能會導致混淆哪些運算執行處理和磁碟區群組應該處於作用中狀態。
您也可以選擇啟用這些計畫群組,避免在進入生產環境之前,手動清除不必要的使用者自建物件。這個主動步驟可以簡化轉換到生產的過程,並保持一個更乾淨、更易於管理的環境。
psql-webapp-auh-drpg-create-switchover-details-1.png 圖解描述
-
若要啟用計畫群組,請從計畫群組名稱右側的內容功能表中選取啟用所有步驟。
psql-webapp-auh-drpg-create-switchover-enable.png 圖解描述
psql-webapp-auh-drpg-create-switchover-enable-check.png 圖解描述
-
確認所有計畫群組都已啟用。
psql-webapp-auh-drpg-create-switchover-enable-complete.png 圖解描述
作業 5.3:建立執行自訂命令檔的計畫群組
首先,新增自訂的使用者定義 DR 計畫群組,以使用 PostgreSQL 備份 / 回復 DR 處理,根據 OCI 資料庫的特定需求量身打造 DR 工作流程。
這些計畫群組將會從區域 1 中的 Web 應用程式 VM 呼叫必要的命令檔。這樣可確保具有 PostgreSQL 的 OCI 資料庫在應用程式 VM 上線之前完全回復並運作。
應將下列自訂計畫新增至預先填入的切換計畫:PostgreSQL - 切換、PostgreSQL - 更新 DNS 和 PostgreSQL - 終止。
-
新增自訂計畫群組,以使用 PostgreSQL 執行 OCI 資料庫切換。這項作業需要備份「主要區域」中的資料庫、將資料庫組態複製到「待命」區域、將資料庫備份複製到「待命」區域,最後再回復「待命」區域中的資料庫。
- 按一下新增群組,
- 輸入簡單但描述性的計畫群組名稱。在此範例,我們將使用
PostgreSQL - Switchover
。 - 選取計畫群組將插入 DR 計畫的位置。在此範例中,選取之後新增,將使用者定義的計畫群組插入內建的運算執行處理 - 啟動計畫群組之後。
- 按一下新增步驟以開啟對話方塊,我們會在其中指定執行 PostgreSQL 切換的命令檔。
psql-webapp-auh-drpg-create-switchover-add-psql-so.png 圖解描述
在新增計畫群組步驟中,輸入下列資訊。
- 輸入步驟名稱。在此範例,我們將使用
PostgreSQL - Switchover
。與計畫群組名稱相同。 - 選取包含此步驟將執行之執行處理的區域。在此範例中,命令檔將在 Region 1 的 Web 應用程式 VM 上執行。
- 選取執行本機命令檔。
- 選取目標執行處理,此為區域 1 中的 Web 應用程式 VM。
- 在指令檔參數中,以參數輸入指令檔的完整路徑。例如:
/home/opc/full-stack-dr-scripts-main/oci-postgresql/backup-restore/psql_exec_cold_dr.py -c amo-psql-dbs.json -o switchover
。 - 在以使用者身分執行中,輸入
opc
。 - 按一下新增步驟。
psql-webapp-auh-drpg-create-switchover-add-psql-so-details.png 圖解描述
按一下新增。
psql-webapp-auh-drpg-create-switchover-add-psql-details.png 圖解描述
-
新增自訂計畫群組以更新 PostgreSQL 資料庫 DNS。
- 按一下新增群組,
- 輸入計畫群組名稱。在此範例中,我們將使用
PostgreSQL - Update DNS
。 - 選取計畫群組將插入 DR 計畫的位置。在此範例中,選取之後新增,將使用者定義的計畫群組插入內建的計畫群組 PostgreSQL - 切換之後。
- 按一下新增步驟,即可開啟對話方塊,供我們指定更新 PostgreSQL 資料庫 DNS 的命令檔。
psql-webapp-auh-drpg-create-switchover-add-psql-dns.png 圖解描述
在新增計畫群組步驟中,輸入下列資訊。
- 輸入步驟名稱。在此範例中,我們將使用
PostgreSQL - Update DNS
。與計畫群組名稱相同。 - 選取包含此步驟將執行之執行處理的區域。在此範例中,命令檔將在 Region 1 的 Web 應用程式 VM 上執行。
- 選取執行本機命令檔。
- 選取目標執行處理,這是區域 1 中的 Web 應用程式 VM。
- 在指令檔參數中,以參數輸入指令檔的完整路徑。例如:
/home/opc/full-stack-dr-scripts-main/oci-postgresql/backup-restore/psql_update_dns.py -c amo-psql-dbs.json -d amo-psql-dbs.amo.vcn01.internal -o switchover
。 - 在以使用者身分執行中,輸入
opc
。 - 按一下新增步驟。
psql-webapp-auh-drpg-create-switchover-add-psql-dns-details.png 圖解描述
按一下新增。
psql-webapp-auh-drpg-create-switchover-add-dns-details.png 圖解描述
-
新增自訂計畫群組以終止 PostgreSQL 來源資料庫。
- 按一下新增群組,
- 輸入計畫群組名稱。在此範例,我們將使用
PostgreSQL - Terminate
。 - 選取計畫群組將插入 DR 計畫的位置。在此範例中,選取之後新增,在內建的計畫群組磁碟區群組 - 從 DR 保護群組移除之後插入使用者定義的計畫群組。
- 按一下新增步驟以開啟對話方塊,我們會在其中指定終止 PostgreSQL 資料庫來源的命令檔。
psql-webapp-auh-drpg-create-switchover-add-psql-terminate.png 圖解描述
在新增計畫群組步驟中,輸入下列資訊。
- 輸入步驟名稱。在此範例,我們將使用
PostgreSQL - Terminate
。與計畫群組名稱相同。 - 選取包含此步驟將執行之執行處理的區域。在此範例中,命令檔將在 Region 1 的 Web 應用程式 VM 上執行。
- 選取執行本機命令檔。
- 選取目標執行處理,這是區域 1 中的 Web 應用程式 VM。
- 在指令檔參數中,以參數輸入指令檔的完整路徑。例如:
/home/opc/full-stack-dr-scripts-main/oci-postgresql/backup-restore/psql_exec_cold_dr.py -c amo-psql-dbs.json -o terminate
。 - 在以使用者身分執行中,輸入
opc
。 - 按一下新增步驟。
psql-webapp-auh-drpg-create-switchover-add-psql-terminate-details.png 圖解描述
按一下新增。
psql-webapp-auh-drpg-create-switchover-add-terminate-details.png 圖解描述
-
確認建立的自訂計畫群組顯示已啟用狀態。
已順利完成切換計畫的自訂。
工作 6:自訂區域 2 中的容錯移轉計畫
在這項任務中,新增自訂、使用者定義的 DR 計畫群組和步驟,以管理容錯移轉期間必須完成的任務。
-
回復區域 2 中最新的資料庫備份,以準備環境進行切換。
-
更新專用資料庫 DNS 記錄,讓應用程式 VM 能夠順暢地連線至區域 2 中的資料庫。
工作 6.1:選取容錯移轉計畫
瀏覽至在「工作 4」中建立的容錯移轉計畫。
psql-webapp-auh-drpg-create-failover-details-1.png 圖解描述
作業 6.2:建立計畫群組以在區域 2 中執行自訂命令檔
首先,新增自訂的使用者定義 DR 計畫群組,以使用 PostgreSQL Backup/Restore DR 處理作業根據 OCI 資料庫的特定需求量身打造 DR 工作流程。
這些計畫群組將會從 Web 應用程式 VM 呼叫必要的命令檔。
應將下列自訂計畫新增至預先填入的容錯移轉計畫:PostgreSQL - 容錯移轉和 PostgreSQL - 更新 DNS 。
-
新增自訂計畫群組以執行 PostgreSQL 容錯移轉命令檔。
- 按一下新增群組,
- 輸入計畫群組名稱。在此範例,我們將使用
PostgreSQL - Failover
。 - 選取計畫群組將插入 DR 計畫的位置。在此範例中,選取之後新增,將使用者定義的計畫群組插入內建的運算執行處理 - 啟動計畫群組之後。
- 按一下新增步驟以開啟對話方塊,我們會在其中指定容錯移轉 PostgreSQL 資料庫的命令檔。
psql-webapp-auh-drpg-create-failover-add-psql.png 圖解描述
在新增計畫群組步驟中,輸入下列資訊。
- 輸入步驟名稱。在此範例,我們將使用
PostgreSQL - Failover
。與計畫群組名稱相同。 - 選取包含此步驟將執行之執行處理的區域。在此範例中,命令檔將在 Region 1 的 Web 應用程式 VM 上執行。
- 選取執行本機命令檔。
- 選取目標執行處理,這是區域 1 中的 Web 應用程式 VM。
- 在指令檔參數中,以參數輸入指令檔的完整路徑。例如:
/home/opc/full-stack-dr-scripts-main/oci-postgresql/backup-restore/psql_exec_cold_dr.py -c amo-psql-dbs.json -o failover
。 - 在以使用者身分執行中,輸入
opc
。 - 按一下新增步驟。
psql-webapp-auh-drpg-create-failover-add-psql-fo-details.png 圖解描述
請按一下新增。
psql-webapp-auh-drpg-create-failover-add-psql-details.png 圖解描述
-
新增自訂計畫群組以更新 PostgreSQL 資料庫 DNS。
- 按一下新增群組,
- 輸入計畫群組名稱。在此範例中,我們將使用
PostgreSQL - Update DNS
。 - 選取計畫群組將插入 DR 計畫的位置。在此範例中,選取之後新增,在內建的計畫群組 PostgreSQL - 容錯移轉之後插入使用者定義的計畫群組。
- 按一下新增步驟,即可開啟對話方塊,供我們指定更新 PostgreSQL 資料庫 DNS 的命令檔。
psql-webapp-auh-drpg-create-failover-add-dns.png 圖解描述
在新增計畫群組步驟中,輸入下列資訊。
- 輸入步驟名稱。在此範例中,我們將使用
PostgreSQL - Update DNS
。與計畫群組名稱相同。 - 選取包含此步驟將執行之執行處理的區域。在此範例中,命令檔將在 Region 1 的 Web 應用程式 VM 上執行。
- 選取執行本機命令檔。
- 選取目標執行處理,這是區域 1 中的 Web 應用程式 VM。
- 在指令檔參數中,以參數輸入指令檔的完整路徑。例如:
/home/opc/full-stack-dr-scripts-main/oci-postgresql/backup-restore/psql_update_dns.py -c amo-psql-dbs.json -d xxx-psql-dbs.xxx.vcn01.internal -o failover
。 - 在以使用者身分執行中,輸入
opc
。 - 按一下新增步驟。
psql-webapp-auh-drpg-create-failover-add-dns-fo-details.png 圖解描述
按一下新增。
psql-webapp-auh-drpg-create-failover-add-dns-details.png 圖解描述
-
確認建立的自訂計畫群組顯示已啟用狀態。
已順利完成自訂容錯移轉計畫。
作業 7:在區域 2 中執行前置檢查
已順利在待命區域 2 中建立切換和容錯移轉 DR 計畫。這些計畫可讓 OCI Full Stack DR 將工作負載從 Region 1 轉換成 Region 2。後續工作包括執行切換和容錯移轉計畫的前置檢查,以確保整備度和驗證轉換處理作業。
作業 7.1:切換計畫的開始前置檢查
執行切換 DR 計畫的前置檢查。
-
請確定區域相關資訊環境設為待命區域 2。
-
請確定在「區域 2」中選取正確的 DR 保護群組,這必須是待命角色。
-
按一下切換計畫名稱。
-
按一下動作。
-
按一下執行前置檢查。
-
按一下執行前置檢查。
psql-webapp-auh-drpg-create-switchover-precheck-run.png 圖解描述
-
檢查是否順利完成所有前置檢查。
psql-webapp-auh-drpg-create-switchover-precheck-details-2.png 圖解描述
作業 7.2:開始容錯移轉計畫的前置檢查
執行容錯移轉 DR 計畫的前置檢查。
-
確定區域相關資訊環境設為待命區域 2。
-
請確定在「區域 2」中選取正確的 DR 保護群組,這必須是待命角色。
-
按一下容錯移轉計畫名稱。
-
按一下動作。
-
按一下執行前置檢查。
-
按一下執行前置檢查。
-
檢查是否順利完成所有前置檢查。
psql-webapp-auh-drpg-create-failover-precheck-details-2.png 圖解描述
作業 8:在區域 2 中執行切換計畫
執行切換 DR 計畫,開始使用 OCI 資料庫將 Web 應用程式從區域 1 轉換為區域 2 的 PostgreSQL。
-
請確定區域相關資訊環境設為待命區域 2。
-
請確定在「區域 2」中選取正確的 DR 保護群組,這必須是待命角色。
-
按一下切換計畫名稱。
-
按一下動作
-
按一下執行計畫 (Execute plan) 。
此作業會執行 「區域 2」中的切換計畫。
- 取消選取啟用前置檢查,因為它們已經在「工作 7」中執行。
- 按一下執行計畫 (Execute plan) 。
psql-webapp-auh-drpg-create-switchover-execute-run.png 圖解描述
監控切換計畫,直到完整的工作負載完全從區域 1 轉換成區域 2 為止。
切換計畫的執行已順利在大約 39 分鐘內完成。
psql-webapp-auh-drpg-create-switchover-execute-details-1.png 圖解描述
psql-webapp-auh-drpg-create-switchover-execute-details-2.png 圖解描述
切換之後:在「區域 2」中,Web 應用程式將使用與之前相同的 URL 再次存取。
webapp-frontend-preview.png 圖解描述
作業 9:在區域 1 中建立並自訂 DR 計畫
在 OCI Full Stack DR 成功完成切換之後,第 2 區現在擔任主要區域的角色,而第 1 區則轉變為備用區域。
依照作業 1 到 8 中詳述的相同方法,繼續在 Region 1 的 DR 保護群組內建立和自訂切換和容錯移轉計畫,現在可作為待命對等區域。
psql-webapp-dxb-drpg-plan-create.png 圖解描述
注意:下列螢幕擷取畫面中不會顯示
PostgreSQL - Terminate
。
psql-webapp-dxb-drpg-create-switchover-details-1.png 圖解描述
psql-webapp-dxb-drpg-create-failover-details-1.png 圖解描述
作業 10:在區域 1 中執行容錯移轉計畫
執行容錯移轉計畫的目的是為了進行測試,我們會在其中模擬災害案例,以驗證災害復原策略的有效性。在此模擬中,會透過刻意停止 Region 2 中的虛擬機器 (VM) 來模擬災難。
為了從此模擬失敗中復原,我們會執行容錯移轉 DR 計畫,此計畫會起始容錯移轉程序,其中 Web 應用程式 VM 會啟動區域 1 中還原具有 PostgreSQL 之 OCI 資料庫的最新可用備份。
注意:容錯移轉 DR 計畫只能在災難性非計畫性事件期間使用。在容錯移轉處理作業期間可能會遺失資料。
- 確定區域相關資訊環境設為待命區域 1。
- 確定在「區域 1」中選取正確的 DR 保護群組,它必須是待命角色。
- 按一下容錯移轉計畫名稱。
- 按一下動作。
- 按一下執行計畫 (Execute plan) 。
psql-webapp-dxb-drpg-failover-execute.png 圖解描述
此作業執行 「區域 1」中的 「容錯移轉」計畫。
- 維持未勾選啟用前置檢查,因為這是實際的容錯移轉練習。
- 按一下執行計畫以開始。
psql-webapp-dxb-drpg-failover-execute-run.png 圖解描述
監控容錯移轉計畫,直到完整的工作負載完全從區域 2 轉換成區域 1 為止。
容錯移轉計畫的執行已順利在大約 10 分鐘內完成。
psql-webapp-dxb-drpg-create-failover-execute-details-1.png 圖解描述
psql-webapp-dxb-drpg-create-failover-execute-details-2.png 圖解描述
相關連結
確認
-
作者 - Antoun Moubarak (技術長辦公室架構師)、Piotr Kurzynoga (開放原始碼資料黑帶)
-
貢獻者 - Suraj Ramesh (OCI Full Stack DR 產品經理)
其他學習資源
在 docs.oracle.com/learn 上探索其他實驗室,或在 Oracle Learning YouTube 頻道上存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Automate Cold Disaster Recovery for OCI Database with PostgreSQL using OCI Full Stack Disaster Recovery
G38687-02
Copyright ©2025, Oracle and/or its affiliates.