使用 OCI Full Stack DR 和自訂指令碼,自動變更 OCI 資料庫服務中手動設定的 Oracle Data Guard 的資料庫角色
簡介
Oracle Cloud Infrastructure Full Stack Disaster Recovery (OCI Full Stack DR) 只需按一下,即可協調來自全球各地 Oracle Cloud Infrastructure (OCI) 區域之間的運算、資料庫和應用程式轉換。客戶可以自動執行復原一或多個業務系統所需的步驟,無需重新設計或重新架構現有的基礎架構、資料庫或應用程式,也無需使用專門的管理或轉換伺服器。
OCI Full Stack DR 為 OCI 上的各種 Oracle Database 服務提供完全整合的支援。這些資料庫可新增為 OCI Full Stack DR 保護群組的成員,以啟用協調式災害復原作業。
對於 OCI 中的 Oracle 資料庫託管服務,強烈建議使用 OCI 主控台、Oracle Cloud Infrastructure 命令行介面 (OCI CLI) 或 OCI SDK 設定 Oracle Data Guard。這麼做可確保 OCI Full Stack DR 可以自動偵測 Data Guard 組態,並產生內建的計畫群組,以作為 DR 計畫的一部分進行角色轉換。
不過,在某些情況下,會因為特定的技術或作業需求而需要手動設定 Oracle Data Guard (在 OCI 的原生介面之外),例如:
- 應用程式特定的限制條件。
- 串接的待命組態。
- 因應用程式相容性而使用較舊的資料庫版本。
在這種情況下,雖然 OCI 資料庫服務控制層無法辨識 Oracle Data Guard 設定,但 OCI Full Stack DR 仍提供彈性。您可以建立自訂指令碼,並將其整合至 DR 計畫內的使用者定義計畫群組,來處理角色轉換。
請注意,此解決方案與透過 OCI 主控台、SDK 或 API 管理資料保全組態的 Oracle Database Cloud 服務不相容。
在本教學課程中,我們將逐步介紹使用自訂資料庫處理程式命令檔來管理 Oracle Data Guard 角色轉換的標準化方法,這些命令檔用於手動設定 Oracle Data Guard 的 OCI 資料庫服務。
注意:此自訂命令檔解決方案適用於下列 OCI 資料庫服務:
- Oracle Base Database Service
- 專用基礎架構上的 Oracle Exadata Database Service
- Oracle Exadata Database Service on Exascale Infrastructure
- Oracle Exadata Database Service 客戶私有雲
架構描述
在本教學課程中,我們將使用 Oracle Base Database Service ,搭配部署在兩個 OCI 區域的兩個資料庫系統,其中已手動設定 Oracle Data Guard。
圖 A:使用 Oracle Base Database Service 的自訂資料保全組態
整個教學課程的定義和假設
-
區域:
-
區域 1 (阿什本):阿什本一開始將作為主要區域。
-
區域 2 (鳳凰城):鳳凰城最初將作為待命區域。
-
-
區間:您可以免費將此部署和 OCI Full Stack DR 組織到符合 IT 治理標準的任何區間配置中。我們選擇在單一區間中組織此教學課程的所有 OCI 資源。
目標
本教學課程涵蓋下列工作:
- 工作 1:驗證 Oracle Data Guard 組態並更新標記。
- 作業 2:建立與關聯 DR 保護群組。
- 工作 3:新增成員至 DR 保護群組。
- 作業 4:在「區域 2」中建立並自訂 DR 計劃。
- 作業 5:執行區域 2 中 DR 計畫的前置檢查。
- 作業 6:在「區域 2」中執行切換計劃。
- 作業 7:在「區域 2」中建立並自訂 DR 計劃。
必備條件
我們將使用下列資源從教學課程開始。
| 資源 | 區域 1 - 阿什本 | 區域 2 - 鳳凰城 |
|---|---|---|
| 區間 | app - 應用程式 | app - 應用程式 |
| 資料庫系統 | 加固醇 -12345 | 加固醇 -12345 |
| 資料庫名稱 | 加固醇 | 加固醇 |
| 資料庫唯一名稱 | 加固醇 site0 | 加固醇 site1 |
| DB 角色 | 主要 | 待命 |
| 運算 VM | 腳本 iad | 文稿 -phx |
| 儲存桶 | IAD | PHX |
注意:請先完成所有必要的先決條件,再繼續進行。這些步驟奠定了順利進行 OCI Full Stack DR 設定的基礎。
-
管理存取或必要的 Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) 政策。
請確定您具備管理員權限,或將必要的 OCI IAM 原則和動態群組設定為使用 OCI Full Stack DR。在此解決方案中,資料庫處理程式命令檔會在內部啟動 OCI 容器執行處理,因此您必須相應地新增原則。
注意:請以實際的 OCI 區間 OCID 和名稱取代所有出現的
<compartment_ocid>和<compartment_name>。-
建立動態群組:使用範例名稱 (
FullStackDR_Database_DG) 建立動態群組,然後新增下列比對規則:Any {instance.compartment.id = '<compartment_ocid>'} Any {resource.type = 'instance', resource.compartment.id = '<compartment_ocid>'} Any {resource.type = 'computecontainerinstance', resource.compartment.id = '<compartment_ocid>'} Any {resource.type = 'drprotectiongroup', resource.compartment.id = '<compartment_ocid>'} -
建立 OCI IAM 原則: 使用範例名稱 (
FullStackDR_Database_Group_Policies) 建立原則,然後新增下列允許敘述句:Allow dynamic-group FullStackDR_Database_DG to read secret-family in compartment <compartment_name> Allow dynamic-group FullStackDR_Database_DG to manage virtual-network-family in compartment <compartment_name> Allow dynamic-group FullStackDR_Database_DG to manage instance-agent-command-family in compartment <compartment_name> Allow dynamic-group FullStackDR_Database_DG to manage instance-agent-command-execution-family in compartment <compartment_name> Allow dynamic-group FullStackDR_Database_DG to manage objects in compartment <compartment_name> Allow dynamic-group FullStackDR_Database_DG to manage database-family in compartment <compartment_name> Allow dynamic-group FullStackDR_Database_DG to manage compute-container-family in compartment <compartment_name>
如需詳細資訊,請參閱 OCI 災難復原原則 - 官方文件和設定 IAM 原則 (Oracle 部落格) 。
-
-
在兩個區域中佈建 OCI Compute 執行處理:在每個區域中建立 OCI Compute 執行處理,作為代管和執行 scripts.For 詳細步驟的 Jumphost,請參閱建立 OCI 執行處理。為求簡化,我們將在 tutorial.If 中將此 OCI Compute 執行處理視為 Jumphost 執行處理,而您已有可作為 Jumphost 運作的現有 OCI Compute 執行處理,則可略過此步驟。確定 Jumphost 有 Oracle Cloud 代理程式在執行中,並且啟用執行命令 Plugin。如需詳細資訊,請參閱 Oracle Cloud 代理程式。
-
存取在 OCI Compute 執行處理上執行命令:請確定已在 jumphost 中設定執行命令先決條件,因為我們在 DR 作業期間使用使用者定義的計畫群組執行命令檔。如需詳細資訊,請參閱在執行處理上執行命令。
-
在兩個區域的 jumphost 中安裝 OCI CLI:根據 jumphost 的作業系統,在兩個區域上安裝 OCI CLI,並確定可以在命令檔中使用執行處理主體呼叫 OCI CLI 命令。如需更多資訊,請參閱 OCI CLI Installation 。
-
使用遠端 VCN 對等互連在兩個區域中設定 VCN:在主要和待命區域中建立 VCN,並設定遠端 VCN 對等互連。這是設定跨區域 Oracle Data Guard 所需的選項。如需詳細資訊,請參閱 OCI Base DB 網路組態。
-
手動 Oracle Data Guard 組態:根據 Oracle Data Guard 中介的需求,手動設定 Oracle Data Guard 設定。如需詳細資訊,請參閱 Oracle Data Guard Broker and Oracle Clusterware 。
-
下載 Jumphost 中的資料庫處理程式命令檔:命令檔應該下載並保留在兩個區域的 jumphost 中。
-
從下列儲存區域下載 Oracle Data Guard 資料庫處理程式命令檔:資料保全資料庫處理程式命令檔。
-
將命令檔複製到兩個區域之 jumphost 的
/home/opc/目錄 (或任何其他偏好的路徑)。 -
確定命令檔檔案具有執行檔權限。
-
full_stack_dr_non_std_db_handler.py是負責處理 Oracle Data Guard 角色 transitions.The 關聯 bash 命令檔的 Python 命令檔,可作為樣板提供,並可根據您的特定需求進行修改。請勿修改 Python 角色變更指令碼本身。
-
-
建立 OCI 保存庫和加密密碼:您必須建立 OCI 保存庫,並將資料庫證明資料儲存為兩個區域中的加密密碼。
- 使用 OCI 主控台或 CLI 在每個區域中建立 OCI 保存庫。
- 在保存庫內建立加密密碼,以儲存資料庫的
SYS使用者密碼。
如需詳細資訊,請參閱 OCI Vault 。
-
來自 Jumphost 的連線檢查:確保可從運算執行處理存取 OCI 資料庫服務、OCI Vault 服務和 OCI 容器執行處理服務。這是必要的,因為 OCI Full Stack DR 命令檔會執行自我檢查,以從主要和待命區域擷取資料庫詳細資訊。
-
連線必須從 jumphost 運作。從 jumphost 執行下列命令。
# Primary Region curl -v telnet://database.<primary_region>.oraclecloud.com:443 curl -v telnet://secrets.vaults.<primary_region>.oci.oraclecloud.com:443 curl -v telnet://iaas.<primary_region>.oraclecloud.com:443 curl -v telnet://compute-containers.<primary_region>.oci.oraclecloud.com:443 # Standby Region curl -v telnet://database.<standby_region>.oraclecloud.com:443 curl -v telnet://secrets.vaults.<standby_region>.oci.oraclecloud.com:443 curl -v telnet://iaas.<standby_region>.oraclecloud.com:443 curl -v telnet://compute-containers.<standby_region>.oci.oraclecloud.com:443注意:請以實際的 OCI 區域 ID 取代
<primary_region>和<standby_region>。
舉例而言:us-ashburn-1阿什本- 鳳凰城適用的
us-phoenix-1
如需完整清單,請參閱 OCI 區域識別碼。
預期的輸出:每個命令都應該傳回類似
Connected to ...的訊息。如果任何連線失敗,請檢查 jumphost 之 VCN/ 子網路的安全清單、路由表以及服務閘道組態。
-
-
建立物件儲存的儲存桶:在主要和待命區域中建立 OCI 物件儲存的儲存桶,以儲存進行復原作業時由 OCI Full Stack DR 產生的日誌,如下所述:準備作業日誌的日誌位置。
-
資料庫處理程式命令檔使用狀況和自訂:您可以從提及的 GitHub 儲存區域下載資料庫處理程式命令檔。以下是資料庫處理程式命令檔使用狀況和必要的參數。
圖 B:資料庫處理程式命令檔使用狀況支援的
--db_operation選項有:- 切換
- SWITCHOVER_PRECHECK
- 容錯移轉
- FAILOVER_PRECHECK
- CONVERT_PHYSICAL_TO_SNAPSHOT_STANDBY
- CONVERT_PHYSICAL_TO_SNAPSHOT_STANDBY_PRECHECK
- REVERT_SNAPSHOT_TO_PHYSICAL_STANDBY_PRECHECK
- REVERT_SNAPSHOT_TO_PHYSICAL_STANDBY
OCI Full Stack DR 預期在執行資料庫處理程式命令檔時,會傳送所有必要的參數。為了獲得更好的使用性和可重複性,建議您建立以下的包裝函式 bash 命令檔:
- 提供必要的參數。
- 啟用稽核與疑難排解的記錄。
範例範例:資料庫切換命令檔 (
db-switchover-iad-phx.sh)。#!/bin/bash # Define log file with date and time LOG_FILE="db-switchover-iad-phx-$(date +%Y%m%d_%H%M%S).log" # Define Python script and argument PYTHON_SCRIPT="full_stack_dr_non_std_db_handler.py" ARGUMENT="--database_ocid="ocid1.database.oc1.phx.xxxxxxxx" --vault_ocid="ocid1.vaultsecr et.oc1.phx.xxxxx" --region="us-phoenix-1" --primary_db_unique_name="adghol_site0" --st andby_db_unique_name="adghol_site1" --drpg_ocid="ocid1.drprotectiongroup.oc1.phx.axxxxxxax " --db_operation="SWITCHOVER" --auth_type=INSTANCE_PRINCIPAL" # Execute Python script and log output echo "Executing Python script: $PYTHON_SCRIPT with argument: $ARGUMENT" | tee -a $LOG_FILE /usr/bin/python3 $PYTHON_SCRIPT $ARGUMENT 2>&1 | tee -a $LOG_FILE echo "Execution completed. Logs saved in $LOG_FILE"注意:將此包裝函式命令檔儲存在與資料庫處理程式命令檔相同的位置,並確定其為可執行檔。OCID 在命令檔中會被匿名化。
chmod +x db-switchover-wrapper.sh區域 1 (阿什本) 中執行的資料庫為「主要」且區域 2 (鳳凰城) 為「待命」的 DR 計畫指令碼對應
DR 計畫類型 目標執行處理 命令檔名稱 註解 Switchoverscript-phxdb-prechk-switchover-iad-phx.sh預先檢查資料庫從 IAD 切換至 PHX Switchoverscript-phxdb-switchover-iad-phx.sh資料庫從 IAD 切換至 PHX Failoverscript-phxdb-prechk-failover-iad-phx.sh從 IAD 到 PHX 的 Prechk 資料庫容錯移轉 Failoverscript-phxdb-failover-iad-phx.sh從 IAD 到 PHX 的資料庫容錯移轉 Start drillscript-phxdb-prechk-startdrill-phx.sh預先檢查開始 DR 追溯 PHX Start drillscript-phxdb-startdrill-phx.sh開始 PHX 中的 DR 追溯 Stop drillscript-phxdb-prechk-stopdrill-phx.sh預先檢查停止 DR 追溯 PHX Stop drillscript-phxdb-stopdrill-phx.sh停止 PHX 中的 DR 鑽研 區域 2 (鳳凰城) 中執行的資料庫為主要資料庫,且區域 2 (阿什本) 為待命資料庫的 DR 計畫命令檔對應
DR 計畫類型 目標執行處理 命令檔名稱 註解 Switchoverscript-iaddb-prechk-switchover-phx-iad.sh預先檢查資料庫從 PHX 切換至 IAD Switchoverscript-iaddb-switchover-phx-iad.sh資料庫從 PHX 切換至 IAD Failoverscript-iaddb-prechk-failover-phx-iad.sh從 PHX 到 IAD 的 Prechk DB 容錯移轉 Failoverscript-iaddb-failover-phx-iad.sh從 PHX 到 IAD 的資料庫容錯移轉 Start drillscript-iaddb-prechk-startdrill-iad.sh預先檢查開始追溯追溯 IAD Start drillscript-iaddb-startdrill-iad.sh開始在 IAD 中展開 DR Stop drillscript-iaddb-prechk-stopdrill-iad.sh預先檢查停止 DR 追溯 IAD Stop drillscript-iaddb-stopdrill-iad.sh停止 IAD 中的 DR 鑽研
備註:為了更加清晰與可用性,我們建立了多個為特定 DR 計畫類型與區域量身打造的 bash 包裝函式指令碼。這些程序檔使用共用的 Python 程序檔進行資料庫角色轉換,您可以自訂這些程序檔以符合自己的需求和環境。
工作 1:驗證 Oracle Data Guard 組態並更新標記
在這項任務中,我們將使用 Oracle Base Database Service 驗證 Oracle Data Guard 手動組態。我們會在資料庫上建立一個 * 標記 **,以指示設定非標準的 Oracle Data Guard。這可讓 OCI Full Stack DR 建立 DR 計畫,而不需要依賴任何內建的計畫群組。
-
登入 OCI 主控台並導覽至 Oracle Database ,然後按一下 Oracle Base Database Service 。
-
確定 OCI 區域相關資訊環境設為區域 1 (阿什本) 。
-
在我們的範例中,選取資料庫系統為
adghol0-12345。
圖 1.1:區域 1 中的資料庫系統 -
瀏覽至資料庫頁籤,然後選取資料庫
adghol。
圖 1.2:區域 1 中的資料庫 -
請確定資料保全狀態為未啟用,這會確認未使用 OCI 主控台設定 Oracle Data Guard。
圖 1.3:區域 1 中的「資料保全」控制層狀態 -
導覽至標記頁籤,並建立任意格式標記。您必須根據設定來取代
Peer DB OCID的值。在此範例中,您必須新增 Phoenix 區域的資料庫 OCID。標記鍵值 數值 FsdrNonStandardDataGuardPeerDatabaseIdPeer DB OCIDFsdrNonStandardDataGuardFlagTrue
圖 1.4:區域 1 中的資料庫標記 -
前往資料庫系統,然後選取節點。
圖 1.5:區域 1 中的資料庫節點注意:這是非 RAC 設定,因此您會看到單一資料庫節點。如果這是 Oracle Real Application Clusters 設定,您會看到兩個節點。
-
連線至資料庫節點並切換至
oracle使用者。使用 Oracle Data Guard 中介來驗證角色。dgmgrl show configuration
圖 1.6:區域 1 中的「資料保全」狀態預期的輸出:
adghol_site0應該顯示為主要資料庫。adghol_site1應顯示為實體待命資料庫。Configuration Status應顯示成功。
如果發生錯誤且資料庫角色不如預期,您必須使用 Oracle Data Guard 文件來修正錯誤。
-
登入 OCI 主控台並導覽至 Oracle Database ,然後按一下 Oracle Base Database Service 。
-
確保 OCI 區域內容已設為區域 2 (鳳凰城) 。
-
在我們的範例中,選取 DB 系統為
adghol1-12345
圖 1.7:區域 2 中的資料庫系統 -
瀏覽至資料庫頁籤,然後選取資料庫
adghol。
圖 1.8:區域 2 中的資料庫 -
請確定資料保全狀態為未啟用,這會確認未使用 OCI 主控台設定 Oracle Data Guard。
圖 1.9:區域 2 中的「資料保全」控制層狀態 -
導覽至標記頁籤,並建立任意格式標記。您必須根據設定來取代
Peer DB OCID的值。在此範例中,您必須新增 Ashburn 區域的資料庫 OCID。標記鍵值 數值 FsdrNonStandardDataGuardPeerDatabaseIdPeer DB OCIDFsdrNonStandardDataGuardFlagTrue
圖 1.10:區域 2 中的資料庫標記 -
重複步驟 7 和步驟 8,但這次連線到「區域 2」(待命區域) 中的資料庫節點。
- 請確定您是以「區域 2」資料庫節點上的
oracle使用者身分登入。 - 使用
dgmgrl驗證 Oracle Data Guard 角色,就像步驟 8 一樣。
- 請確定您是以「區域 2」資料庫節點上的
工作 2:建立並關聯 DR 保護群組
如果此應用程式堆疊的保護群組還不存在,請在區域 1 和區域 2 中建立 DR 保護群組。
工作 2.1:在區域 1 中建立保護群組
-
前往 OCI 主控台並瀏覽至 DR 保護群組,如圖 2.1 所示。
- 確定 OCI 區域相關資訊環境設為區域 1 (阿什本)。
- 按一下移轉與災害復原。
- 按一下 DR 保護群組。
圖 2.1:瀏覽至 DR 保護群組 -
在區域 1 中建立基本 DR 保護群組,如圖 2.2 所示。將會在後續的步驟中指定對等、角色及成員。
- 選取要建立 DR 保護群組的區間。
- 按一下建立災害復原保護群組。
- 請為 DR 保護群組使用有意義的名稱。
- 選取 OCI Full Stack DR 日誌的 OCI Object Storage 分組。
- 按一下建立。
圖 2.2:在區域 1 中建立 DR 保護群組所需的參數
任務 2.2:在區域 2 中建立保護群組
-
前往 OCI 主控台,瀏覽至 DR 保護群組 (如圖 2.3 所示)。
- 確定 OCI 區域相關資訊環境設為區域 2 (鳳凰城)。
- 按一下移轉與災害復原。
- 按一下 DR 保護群組。
圖 2.3:瀏覽至 DR 保護群組 -
在區域 2 中建立基本 DR 保護群組,如圖 2.4 所示。將會在後續的步驟中指定對等、角色及成員。
- 選取要建立 DR 保護群組的區間。
- 按一下建立災害復原保護群組。
- 使用有意義的 DRPG 名稱。
- 選取 OCI Full Stack DR 日誌的 OCI Object Storage 分組。
- 按一下建立。
圖 2.4:在區域 2 中建立 DR 保護群組所需的參數
工作 2.3:關聯區域 1 和區域 2 中的保護群組
將每個區域中的 DRPG 關聯為彼此的同儕,並指派主要和待命的同儕角色。主要和待命資料庫的角色會由 OCI Full Stack DR 自動變更,作為任何 DR 作業 /DR 計畫執行的一部分;您無需隨時手動管理角色。
-
前往 DR 保護群組詳細資訊頁面。
- 確定 OCI 區域相關資訊環境設為區域 1 (阿什本)。
- 按一下動作下拉式功能表,然後按一下關聯以開始程序。
圖 2.5:開始 DRPG 關聯 -
請輸入下列資訊。
- 角色:選取主要角色。OCI Full Stack DR 會自動將待命角色指派給 Region 2。
- 對等區域:選取建立其他 DR 保護群組的區域 2 (鳳凰城)。
- 對等災害復原保護群組:選取已建立的對等災害復原保護群組。
- 按一下關聯。
圖 2.6:與 DRPG 關聯所需的參數
關聯完成後,OCI Full Stack DR 將顯示如下圖所示的內容。
- 目前的主要對等 DRPG 是阿什本 (區域 1)。
- 目前的待命對等 DRPG 是鳳凰城 (區域 2)。
圖 2.7:顯示個別 DRPG 觀點的對等關係
每當相關資訊環境 / 視觀表是從全域觀點顯示所有 DR 保護群組時,都可以找到相同的資訊,如下圖所示。
- 目前的主要對等 DRPG 是阿什本 (區域 1)。
- 目前的待命對等 DRPG 是鳳凰城 (區域 2)。
圖 2.8:從全域 DRPG 觀點顯示對等關係
工作 3:將成員新增至 DR 保護群組
在這項任務中,我們會將下列 OCI 資源新增至 Region 1 的主要 DR 保護群組。
- 代管資料庫處理程式命令檔的 OCI Compute 執行處理將會新增為非移動的 VM。
- 主要 DB 系統。
工作 3.1:將成員新增至區域 1 中的 DR 保護群組
-
選取區域 1 中的 DR 保護群組,如下圖所示。
- 確定 OCI 區域相關資訊環境為區域 1 (阿什本)。
- 選取區域 1 中的 DR 保護群組。
- 瀏覽至成員頁籤。
- 按一下管理成員。
圖 3.1:如何開始將成員新增至區域 1 中的 DR 保護群組 -
新增資料庫處理程式命令檔的運算執行處理。
- 選取新增成員
- 選取運算底下的執行處理作為成員資源類型。
- 選取代管資料庫處理程式命令檔的運算執行處理。
- 選取非移動執行處理。
- 按一下新增。
圖 3.2:將運算執行處理新增至區域 1 中的 DRPG請檢查新增的運算執行處理。
圖 3.2:已將運算執行處理新增至區域 1 中的 DRPG -
新增主要資料庫。按一下加入成員
- 選取新增成員
- 選取 Oracle Database -> Database (Base DB,ExaDB-D,ExaCC,ExaXS) 作為成員資源類型。
- 選取 Oracle 基本資料庫作為資料庫類型。
- 選取資料庫系統。
- 選取資料庫本位目錄。
- 選取資料庫。
- 選取資料庫密碼密碼密碼
- 請按一下新增。
圖 3.3:新增主要資料庫所需的參數驗證新增的主要資料庫,並發布這兩個成員。
圖 3.4:主要資料庫已新增至區域 1 中的 DRPG
圖 3.5:將成員發佈至區域 1 中的 DRPG在幾分鐘之後,成員底下應該有成員可用。
圖 3.6:新增至區域 1 中 DRPG 的成員
任務 3.2:將成員新增至區域 2 中的 DR 保護群組
-
選取第 2 區中的 DR 保護群組,如下圖所示。
- 確保 OCI 區域內容為區域 2 (鳳凰城)。
- 選取區域 2 中的 DR 保護群組。
- 瀏覽至成員頁籤。
- 按一下管理成員。
圖 3.7:如何開始將成員新增至區域 2 中的 DR 保護群組 -
新增資料庫處理程式命令檔的運算執行處理。
- 選取新增成員
- 選取運算底下的執行處理作為成員資源類型。
- 選取代管資料庫處理程式命令檔的運算執行處理。
- 選取非移動執行處理。
- 按一下新增。
圖 3.8:將運算執行處理新增至區域 2 中的 DRPG請檢查新增的運算執行處理。
圖 3.9:已將運算執行處理新增至區域 2 中的 DRPG -
新增待命資料庫。按一下加入成員
- 選取新增成員
- 選取 Oracle Database -> Database (Base DB,ExaDB-D,ExaCC,ExaXS) 作為成員資源類型。
- 選取 Oracle 基本資料庫作為資料庫類型。
- 選取資料庫系統。
- 選取資料庫本位目錄。
- 選取資料庫。
- 選取資料庫密碼密碼密碼
- 請按一下新增。
圖 3.10:新增待命資料庫所需的參數驗證新增的待命資料庫並發布這兩個成員。
圖 3.11:待命資料庫已新增至區域 2 中的 DRPG
圖 3.12:將成員發佈至區域 2 中的 DRPG在幾分鐘之後,成員底下應該有成員可用。
圖 3.13:新增至區域 2 中的 DRPG 成員
作業 4:在區域 2 中建立並自訂 DR 計畫
在這項任務中,我們將建立與區域 2 (鳳凰城) 中待命 DR 保護群組關聯的初始切換、容錯移轉和開始展開計畫。
這些計畫旨在將工作負載從主要區域 (第 1 區) 順暢轉換至待命區域 (第 2 區)。
- OCI Full Stack DR 會根據先前新增的成員資源,以內建的步驟預先填入這些計畫。
- 不過,在此教學課程中,由於 Oracle Data Guard 是手動設定的 (在資料庫控制層之外),因此 Oracle 資料庫角色轉換沒有內建的計畫群組。
- 因此,我們將:
- 使用使用者定義的計畫群組自訂 DR 計畫。
- 新增用於處理每個計畫類型 (切換、容錯移轉、展開) 期間角色轉換的資料庫處理程式命令檔。
DR 計畫一律會建立在保留待命角色的保護群組中。
由於第 2 區 (鳳凰城) 目前是待命,因此我們將在該處建立所有初始災害復原計畫。
作業 4.1:建立 DR 計畫
-
在區域 2 (鳳凰城) 中選取 DRPG 來建立 DR 計畫
- 確保 OCI 區域內容為區域 2 (鳳凰城)。
- 選取區域 2 的待命 DRPG。
- 瀏覽至方案頁籤。
- 按一下建立計畫。
圖 4.1:如何在區域 2 中開始建立基本 DR 計畫 -
建立切換計畫。
- 輸入簡單但有意義的切換計畫名稱。這個名字應該盡量簡短,但很容易理解,以幫助減少危機期間的混淆與人為錯誤。
- 選取計畫類型作為切換 (計畫) 。
圖 4.2:建立 DR 切換計畫所需的參數 -
建立容錯移轉計畫。
依照相同的程序建立基本容錯移轉計畫,如下圖所示。
- 輸入簡單但有意義之容錯移轉計畫的名稱。
- 選取計畫類型作為容錯移轉 (非計畫性) 。
圖 4.3:建立 DR 容錯移轉計畫所需的參數 -
建立開始展開計畫。
依照相同的程序建立基本容錯移轉計畫,如下圖所示。
- 輸入開始鑽研計畫簡易但有意義的名稱。
- 選取計畫類型作為容錯移轉 (非計畫性) 。
圖 4.4:建立 DR 開始展開計畫所需的參數區域 2 中的待命 DR 保護群組現在應該有三個 DR 計畫,如下圖所示。這些將處理將工作負載從 Region 1 轉換成 Region 2。您將在「區域 1」建立類似的計畫,以便在稍後的工作中將工作負載從「區域 2」轉換回「區域 1」。
圖 4.5:顯示區域 2 中必須存在的三個 DR 計畫,再繼續進行任何作業。
注意: OCI Full Stack DR 僅允許您在順利執行開始展開計畫之後,以及 DR 保護群組處於非作用中 (展開進行中) 狀態之後,才建立停止展開計畫。
作業 4.2:使用使用者定義的計畫群組自訂 DR 計畫
在 Task 4.1 中建立的 DR 計畫不會為 Oracle 資料庫角色轉換產生任何內建的計畫群組,因為 Oracle Data Guard 設定是以手動方式完成。
在這項任務中,您將:
- 瞭解如何新增自訂、使用者定義的 DR 計畫群組。
- 定義管理 Oracle Data Guard 角色轉換所需的步驟。
這可確保 DR 計畫能完全處理與手動設定之 Data Guard 環境有關的容錯移轉、切換和鑽研案例。
-
導覽至在任務 4.1 中建立的切換計畫,然後選取計畫群組。
圖 4.6:如何開始自訂區域 2 中的切換計畫 -
首先,新增自訂的使用者定義的 DR 計畫群組,以根據 Oracle 資料庫角色變更的特定需求量身打造 DR 工作流程。此計畫群組將會從「區域 1」中的 jumphost
script-iad呼叫必要的指令碼。 -
將使用者定義的計畫群組新增至 DB Switchover 。
- 按一下新增群組,
- 輸入簡單但描述性的計畫群組名稱。在此範例,我們將使用
DB Switchover。 -
按一下新增步驟即可開啟對話方塊,供我們指定執行資料庫角色變更的命令檔。
圖 4.7:建立執行資料庫角色變更之計畫群組的參數在新增計畫群組步驟中,輸入下列資訊。
- 輸入簡單但描述性的步驟名稱。在此範例中,我們將使用
DB Switchover from IAD to PHX。 - 選取執行處理區域,其中包含將執行此步驟的執行處理。在此範例中,命令檔將在 Region 2 的 jumphost 上執行,因此選取
Phoenix。 - 選取執行本機命令檔。
- 選取目標執行處理,這是「區域 2」中的 jumphost
script-phx。 - 在指令檔參數中,以參數輸入指令檔的完整路徑。例如:
/home/opc/db-switchover-iad-phx.sh。 - 在以使用者身分執行中,輸入
opc。 -
按一下新增步驟。
圖 4.8:新增資料庫角色變更步驟的參數 -
驗證新增的步驟。
圖 4.9:已新增資料庫角色變更 -
按一下新增。
圖 4.10:新增資料庫角色變更群組現在將提供計畫群組。
圖 4.11:資料庫切換計畫群組
-
新增使用者定義的前置檢查步驟至切換 DR 計畫。使用者定義的前置檢查將會與內建的前置檢查步驟一起執行。
-
前往計畫群組,按一下 Prechecks-Built 前面的 …,然後選取新增使用者定義的前置檢查。
圖 4.12:新增資料庫切換的自訂前置檢查 - 輸入簡單但描述性的步驟名稱。在此範例中,我們將使用
DB Switchover precheck from IAD to PHX。 - 選取執行處理區域,其中包含將執行此步驟的執行處理。在此範例中,命令檔將在 Region 2 的 jumphost 上執行,因此選取
Phoenix。 - 選取執行本機命令檔。
- 選取目標執行處理,這是 Region 中的 jumphost
script-phx。 - 在指令檔參數中,以參數輸入指令檔的完整路徑。例如:
/home/opc/db-prechk-switchover-iad-phx.sh。 - 在以使用者身分執行中,輸入
opc。 -
按一下新增步驟。
圖 4.13:新增資料庫角色變更之自訂前置檢查步驟的參數 -
驗證新增的步驟。
圖 4.14:新增資料庫角色變更的自訂前置檢查步驟已順利完成切換計畫的自訂。
圖 4.15:最終切換計畫
-
-
同樣地,自訂容錯移轉、開始展開計畫,使用正確的目標執行處理、命令檔 (使用「先決條件」中的表格式詳細資訊):資料庫處理程式命令檔使用狀況和自訂。
-
新增使用者定義的計畫群組和自訂前置檢查步驟之後,容錯移轉和開始展開計畫的外觀如下。
圖 4.16:最終容錯移轉計畫
圖 4.17:最終開始展開計劃
作業 5:執行區域 2 中 DR 計畫的前置檢查
使用切換功能時,已順利在待命區域 2 中建立容錯移轉啟動展開 DR 計畫。這些計畫可讓 OCI Full Stack DR 將工作負載從 Region 1 轉換成 Region 2 或執行 DR 展開。後續任務涉及執行 DR 計畫的前置檢查,以確保整備度並驗證轉換程序。
作業 5.1:開始切換計畫的前置檢查
執行切換 DR 計畫的前置檢查。
- 請確定區域相關資訊環境設為待命區域 2。
- 請確定在「區域 2」中選取正確的 DR 保護群組,這必須是待命角色。
- 按一下動作下拉式功能表。
- 按一下執行前置檢查。
- 選取從 IAD 切換至 PHX 的資料庫計畫。
- 輸入計畫執行名稱 (如果不是,則會自動產生)。
-
按一下執行前置檢查。
圖 5.1:顯示如何執行切換計畫的前置檢查 -
從計畫執行項目頁籤中驗證成功狀態。
圖 5.2:顯示切換計畫的已完成前置檢查
作業 5.2:開始容錯移轉計畫的前置檢查
執行容錯移轉 DR 計畫的前置檢查。
- 請確定區域相關資訊環境設為待命區域 2。
- 請確定在「區域 2」中選取正確的 DR 保護群組,這必須是待命角色。
- 按一下動作下拉式功能表。
- 按一下執行前置檢查。
- 選取從 IAD 到 PHX 的資料庫容錯移轉計畫。
- 輸入計畫執行名稱 (如果不是,則會自動產生)。
-
按一下執行前置檢查。
圖 5.3:顯示如何執行容錯移轉計畫的前置檢查 -
從計畫執行項目頁籤中驗證成功狀態。
圖 5.4:顯示容錯移轉計畫的「已完成」前置檢查
作業 5.3:開始展開計畫的前置檢查
執行開始展開 DR 計畫的前置檢查。
- 請確定區域相關資訊環境設為待命區域 2。
- 請確定在「區域 2」中選取正確的 DR 保護群組,這必須是待命角色。
- 按一下動作下拉式功能表。
- 按一下執行前置檢查。
- 選取開始展開 PHX 計畫。
- 輸入計畫執行名稱 (如果不是,則會自動產生)。
-
按一下執行前置檢查。
圖 5.5:顯示如何執行開始展開計畫的前置檢查 -
從計畫執行項目頁籤中驗證成功狀態。
圖 5.6:顯示容錯移轉計畫的「已完成」前置檢查
作業 6:在區域 2 中執行切換計畫
執行切換 DR 計畫以起始 Oracle 資料庫角色從「區域 1 (主要)」轉換至「區域 2 (待命)」。
- 請確定區域相關資訊環境設為待命區域 2。
- 請確定在「區域 2」中選取正確的 DR 保護群組,這必須是待命角色。
- 按一下動作下拉式功能表。
-
按一下執行計畫。
圖 6.1:顯示如何執行切換計畫 - 選取從 IAD 切換至 PHX 的資料庫計畫。
- 此作業會執行 「區域 2」中的切換計畫。
- 取消選取啟用前置檢查,因為已經在「工作 5」中執行前置檢查。如果想要再次執行,您可以啟用它。
- 輸入計畫執行名稱 (如果不是,則會自動產生)。
-
按一下執行計畫 (Execute plan) 。
圖 6.2:顯示如何執行切換計畫 -
瀏覽至計畫執行項目頁籤,然後選取切換計畫執行項目。
圖 6.3:顯示切換計畫進行中 -
監控切換計畫,直到完整的工作負載完全從區域 1 轉換成區域 2 為止。切換計畫的執行已順利在大約 8 分鐘內完成。
圖 6.4:顯示「已完成」的切換計畫執行。 -
您可以使用作業 1.8 中提供的詳細資訊來驗證資料庫角色狀態。
圖 6.5:切換之後的「資料保全」狀態預期的輸出:
adghol_site1應該顯示為主要資料庫。adghol_site0應顯示為實體待命資料庫。Configuration Status應顯示成功。
-
將會交換 DR 保護群組中的角色,區域 2 會顯示為主要,而區域 1 則會顯示為待命。
圖 6.6:切換之後的 DR 保護角色變更
作業 7:在區域 1 中建立並自訂 DR 計畫
在成功執行從區域 1 切換至區域 2 的切換 DR 計畫後,區域 2 現在已擔任主要角色,而區域 1 則已轉換為待命角色。
遵循任務 4 中詳述的相同方法,在 Region 1 的 DR 保護群組內建立和自訂切換、容錯移轉和 DR 鑽研計畫,現在可作為待命對等區域。
以使用者定義的計畫群組和自訂預先檢查步驟建立和更新這些計畫之後,這些計畫看起來會像下列影像。
圖 7.1:在區域 1 中建立 DR 計畫
圖 7.2:區域 1 中的切換計畫
圖 7.3:區域 1 中的容錯移轉計畫
圖 7.4:開始區域 1 中的展開計畫
如有需要,您可以執行切換計劃,將區域 1 中的資料庫升級回主要角色,而區域 2 中的資料庫則變成待命。
同樣地,您可以執行開始鑽研計畫來模擬災害復原事件,然後建立並執行停止鑽研計畫,將系統回復為原始狀態。
-
在開始展開計畫期間,資料庫會從實體待命轉換成快照待命。這可讓應用程式暫時存取待命資料庫並與其互動,以供測試之用。
-
在停止鑽研計畫期間,資料庫會從快照待命轉換回實體待命,確保資料庫與主要資料庫重新同步。
接下來的步驟
如需詳細資訊,請參閱 相關連結一節中的 OCI Full Stack DR、Oracle Base Database Service 和 Oracle Data Guard 文件。
相關連結
-
Oracle Cloud Infrastructure (OCI) Full Stack Disaster Recovery 文件
-
Oracle Live Labs:使用 Full Stack Disaster Recovery 自動化 OCI 上的災害復原
-
加入 #full-stack-dr slack 通道
確認
- 作者 - Suraj Ramesh (OCI Full Stack DR 資深首席產品經理)
- 貢獻者 - Santhosh Shankaramanchi (OCI Full Stack DR 技術人員諮詢成員)
其他學習資源
在 docs.oracle.com/learn 上探索其他實驗室,或在 Oracle Learning YouTube 頻道上存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Automate Role Changes for Manually Configured Oracle Data Guard in OCI Database Services Using OCI Full Stack DR and Custom Scripts
G45731-03