附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱開始使用 Oracle Cloud Infrastructure Free Tier 。
- 它使用 Oracle Cloud Infrastructure 憑證、租用戶及區間的範例值。完成實驗室時,請將這些值取代為您雲端環境特有的值。
使用 Oracle Cloud Infrastructure Full Stack Disaster Recovery 自動切換及容錯移轉 PostgreSQL 資料庫
簡介
Oracle Cloud Infrastructure Full Stack Disaster Recovery (OCI Full Stack DR) 只要按一下,即可協調來自全球 Oracle Cloud Infrastructure (OCI) 區域之間的運算、資料庫和應用程式轉換。客戶可以自動執行復原一或多個業務系統所需的步驟,無需重新設計或重新架構現有的基礎架構、資料庫或應用程式,也無需使用專門的管理或轉換伺服器。
OCI Full Stack DR 是一項高度彈性的服務,我們可以利用災害復原 (DR) 計畫中使用者定義的計畫群組來處理 OCI 物件儲存的儲存桶 DR 作業。
部署架構
注意:主要區域為 Frankfurt ,DR 區域為 London 。
目標
- 使用 OCI Full Stack DR 自動切換和容錯移轉 PostgreSQL 資料庫。
必要條件
-
管理員權限或設定 OCI Full Stack DR 所需的 Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) 原則。如需詳細資訊,請參閱設定身分識別與存取管理 (IAM) 原則以使用 OCI Full Stack DR 和 OCI Full Stack DR 的原則。
-
您必須在主要和待命資料庫中啟用「運算執行處理執行命令」Plugin,因為 OCI Full Stack DR 將會在切換期間執行
sudo
命令來掛載及卸載命令。如需有關在 OCI Compute 執行處理上執行命令的詳細資訊,請參閱在 OCI Compute 執行處理上執行命令。 -
搭配 OCI Full Stack DR 使用執行命令。如需詳細資訊,請參閱使用搭配 Oracle Cloud Infrastructure Full Stack Disaster Recovery 的執行命令呼叫自訂命令檔。
-
在位於相同租用戶的兩個動態路由閘道 (DRG) 之間建立遠端對等互連連線 (RPC)。如需詳細資訊,請參閱透過升級的 DRG 遠端 VCN 對等互連。
-
請確定這兩部機器都可以在 PostgreSQL 連接埠
5432
上進行資料庫複製、設定個別的安全清單或網路安全群組。 -
使用「堡壘主機即服務」或「堡壘主機」連線至 PostegreSQL 伺服器。
-
OCI 物件儲存的儲存桶 (每個區域一個)。
作業 1:安裝並設定 PostgreSQL
-
若要安裝 PostgreSQL,請使用您常用的 SSH 從屬端連線至主機,然後執行下列命令。
sudo dnf install -y postgresql postgresql-server postgresql-contrib sudo /usr/bin/postgresql-setup initdb sudo systemctl enable postgresql sudo systemctl start postgresql
-
啟用 Linux 防火牆以接收連線。
sudo firewall-cmd --zone=public --add-port=5432/tcp --permanent sudo firewall-cmd --reload
-
編輯
postgresql.conf
(可在 xxxxx 找到) 檔案以允許連線並變更wal
參數,如下所示。... listen_addresses = '*' ... wal_level = logical wal_log_hints = on ...
-
連線至資料庫,然後建立複製使用者。
sudo su postgres psql
CREATE ROLE replica_user WITH REPLICATION LOGIN PASSWORD 'YourUserPassword';
-
將此使用者新增至
pg_hba.conf
(位於 xxxxx) 檔案。host all all all md5 host replication replica_user <IP Host 1> md5 host replication replica_user <IP Host 2> md5
-
重新啟動 PostgreSQL 資料庫以套用變更。
sudo systemctl restart postgresql
-
在第二部伺服器中重複此程序。
工作 2:複製 PostgreSQL 資料庫
在這項作業中,我們將設定原生 PostgreSQL 資料庫複寫。
-
連線至主要資料庫並建立複本插槽。
sudo su postgres psql
select pg_create_physical_replication_slot('replica_0');
-
連線至次要資料庫並執行下列命令以建立複寫。
sudo systemctl stop postgresql sudo rm -rv /var/lib/pgsql/data/ sudo pg_basebackup -d "host=<IP Host 1> port=5432 user=replica_user password=YourUserPassword" -w -X stream -S replica_0 -v -R -W -D /var/lib/pgsql/data/ --no-password sudo chown postgres -R /var/lib/pgsql/data/ sudo systemctl start postgresql
-
檢查主要資料庫上的複寫是否流動。
select * from pg_stat_replication;
您應該可以看到串流處理作業的一行。
作業 3:建立切換計劃
Task 3.1:建立及關聯災害復原保護群組 (DRPG)
-
在主要區域 (法蘭克福) 中,按一下「漢堡」功能表,瀏覽至移轉與災害復原、災害復原、災害復原保護群組以及建立災害復原保護群組。
-
在待命區域 (倫敦) 中,按一下「漢堡」功能表,瀏覽至移轉與災害復原、災害復原、災害復原保護群組以及建立災害復原保護群組。
-
在主要區域 (法蘭克福) 中,輸入下列資訊,然後按一下關聯。
- 角色:
Primary
。 - 對等區域:
UK South (London)
。 - 對等 DR 保護群組:
postgresql-lon
。
- 角色:
工作 3.2:新增成員至主要和待命 DRPG
-
在主要 DRPG (
postgresql-fra
) 中,選取成員並新增運算 VM (postgresql01
) 作為成員。注意:新增運算作為成員時,請在運算執行處理類型中選取非移動執行處理,因為 PostgreSQL 資料庫有主動 - 被動設定。
-
在待命 DRPG (
postgresql-lon
) 中,選取成員,然後新增運算 VM (postgresql02
) 作為成員。注意:將運算新增為成員時,請在運算執行處理類型中選取非移動執行處理,因為我們有 PostgreSQL 資料庫的作用中被動設定。
工作 3.3:在待命 DRPG 中建立切換計畫 (倫敦)
切換計劃:一種 DR 計劃,可執行計劃的服務從主要 DRPG 轉換至待命 DRPG。
-
在待命 DRPG
postgresql-lon
中建立切換計畫。 -
選取計畫,然後按一下建立計畫。
-
輸入名稱作為
postgresql-switchover-frankfurt-london
,然後選取計畫類型作為Switchover (planned)
。 -
按一下建立。
注意:請務必從待命 DRPG (倫敦) 建立切換計畫。
作業 3.4:自訂具有各種使用者定義之計畫群組的切換計畫
我們已將運算 (非移動執行處理) 新增為災害復原保護群組中的成員。我們需要使用其他使用者定義的計畫群組來自訂切換計畫。我們也需要建立下列 bash 命令檔並將其上傳至 OCI 物件儲存,以便在切換期間呼叫這些命令檔。
-
stop_postgresql.sh
.#!/bin/bash sudo systemctl stop postgresql
-
promote_postgresql.sh
.#!/bin/bash sudo -u postgres /usr/bin/pg_ctl promote -D /var/lib/pgsql/data/ sudo -u postgres psql -c "select pg_create_physical_replication_slot('replica_1');"
-
change_replication_direction.sh
.#!/bin/bash sudo rm -rv /var/lib/pgsql/data/ sudo sudo pg_basebackup -d "host=<IP Host 2> port=5432 user=replica_user password=YourUserPassword" -w -X stream -S replica_1 -v -R -W -D /var/lib/pgsql/data/ --no-password sudo chown postgres -R /var/lib/pgsql/data/ sudo systemctl start postgresql sudo -u postgres psql -c "select pg_create_physical_replication_slot('replica_0');"
注意:這些命令檔應上傳至倫敦區域的儲存桶。
DR 切換的一般工作流程如下:
-
在法蘭克福區域停止 PostgreSQL 資料庫:計畫群組將有停止法蘭克福區域中 PostgreSQL 資料庫的步驟。
-
在倫敦地區推廣 PostgreSQL 資料庫:計劃群組將有在倫敦地區推廣 PostgreSQL 資料庫的步驟。
-
變更 PostgreSQL 資料庫複製方向:計畫群組將有變更 PostgreSQL 資料庫複製方向 (LON-FRA) 的步驟。
注意:請確定步驟的執行順序相同。
建立下列使用者定義的計畫群組。
-
建立在法蘭克福區域停止 PostgreSQL 資料庫計畫群組。
-
在計畫群組下,按一下新增群組以建立自訂計畫群組,以在法蘭克福區域中停止 PostgreSQL 資料庫。輸入群組名稱作為
Stop PostgreSQL Database at Frankfurt Region
。 -
按一下新增步驟並輸入下列資訊。我們會在計畫群組中新增一個步驟。
-
請務必選擇 Region 作為
Frankfurt
,目標執行處理作為postgresql01
。選取執行物件儲存命令檔,命令檔的位置會選擇 OCI 物件儲存的儲存桶posgres-dr-lon
。 -
輸入命令檔
stop_postgresql.sh
詳細資訊與命令檔位置。命令檔將會關閉 FRA 區域中的 PostgreSQL 資料庫。 -
按一下新增步驟並驗證新增的步驟。
-
-
-
建立 Promote PostgreSQL Database at London 區域計畫群組。
-
在計畫群組下,按一下新增群組以建立自訂計畫群組,以便在倫敦促銷 PostgreSQL 資料庫。輸入群組名稱作為
Promote PostgreSQL Database at London Region
。 -
按一下新增步驟並輸入下列詳細資訊。我們會在計畫群組中新增一個步驟。
-
請務必選擇 Region 作為
London
,目標執行處理為postgresql02
。選取執行物件儲存命令檔和命令檔的位置,選擇 OCI 物件儲存的儲存桶posgres-dr-lon
。 -
輸入命令檔
promote_postgresql.sh
詳細資訊與命令檔位置。命令檔將會關閉 FRA 區域中的 PostgreSQL 資料庫。 -
按一下新增步驟並驗證新增的步驟。
-
-
-
建立變更 PostgreSQL 資料庫複製方向計畫群組。
-
在計畫群組下,按一下新增群組以建立自訂計畫群組,以變更 PostgreSQL 資料庫複製方向。輸入群組名稱作為
Promote PostgreSQL Database at London Region
。 -
按一下新增步驟並輸入下列資訊。我們會在計畫群組中新增一個步驟。
-
請務必選擇 Region 作為
Frankfurt
,目標執行處理作為postgresql01
。選取執行物件儲存命令檔和命令檔的位置,選擇 OCI 物件儲存的儲存桶posgres-dr-lon
。 -
輸入命令檔
change_replication_direction.sh
詳細資訊與命令檔位置。命令檔將會關閉 FRA 區域中的 PostgreSQL 資料庫。 -
按一下新增步驟並驗證新增的步驟。
-
-
作業 4:執行前置檢查並執行切換計畫
執行前置檢查選項會快速驗證 DR 計畫中的所有步驟,以及與步驟關聯的成員。
-
從切換計畫
postgresql-switchover-frankfurt-london
中,按一下執行前置檢查以執行前置檢查。驗證是否順利完成。
-
從切換計畫
postgresql-switchover-frankfurt-london
,按一下執行災害復原計畫來執行計畫。 -
檢查計畫的狀態,並確保計畫中的所有步驟都成功。
-
切換計劃會以特定順序執行所有計劃群組。順利執行計畫之後,PostgreSQL 資料庫將會升級為倫敦區域中的主要資料庫。
-
自動變更 DRPG 中的角色。現在,倫敦將有主要角色,而法蘭克福將擁有待命角色。
-
驗證倫敦的 PostgreSQL 資料庫。
作業 5:在待命 DRPG (Frankfurt) 中建立切換計畫以切換
作業 5.1:在待命 DRPG 中建立切換計畫 (倫敦)
-
在待命 DRPG
postgresql-fran
中建立切換計畫。 -
選取計畫,然後按一下建立計畫。
-
輸入名稱作為
postgresql-switchover-london-frankfurt
,然後選取計畫類型作為Switchover (planned)
。 -
按一下建立。
注意:請務必從待命 DRPG (Frankfurt) 建立切換計畫。
作業 5.2:自訂具有各種使用者定義之計畫群組的切換計畫
我們需要使用其他使用者定義的計畫群組來自訂切換計畫。我們也需要建立下列 bash 命令檔並上傳至 OCI 物件儲存,因此我們能夠在切換期間呼叫這些命令檔。
-
rewind_postgresql.sh
.#!/bin/bash sudo systemctl stop postgresql sudo rm -rv /var/lib/pgsql/data/ sudo -u postgres pg_basebackup -d "host=<IP Host 2> port=5432 user=replica_user password=YourUserPassword" -v -R -D /var/lib/pgsql/data/ --no-password sudo chown postgres -R /var/lib/pgsql/data/ sudo systemctl start postgresql sudo -u postgres /usr/bin/pg_ctl promote -D /var/lib/pgsql/data/ sudo -u postgres psql -c "select pg_create_physical_replication_slot('replica_0');"
-
replicate_postgresql.sh
.#!/bin/bash sudo systemctl stop postgresql sudo rm -rv /var/lib/pgsql/data/ sudo pg_basebackup -d "host=<IP Host 2> port=5432 user=replica_user password=YourUserPassword" -w -X stream -S replica_0 -v -R -W -D /var/lib/pgsql/data/ --no-password sudo chown postgres -R /var/lib/pgsql/data/ sudo systemctl start postgresql
注意:這些命令檔應上傳至法蘭克福區域的儲存桶。
DR 切換的一般工作流程如下:
-
倒帶 PostgreSQL 資料庫:倒帶資料庫的計畫群組。法蘭克福將從倫敦資料庫同步內容。
-
重新建立 PostgreSQL 資料庫複寫至倫敦:計畫群組將有開始將 PostgreSQL 資料庫從法蘭克福複寫至倫敦區域的步驟。
注意:請確定步驟的執行順序相同。
建立下列兩個使用者定義的計畫群組
-
建立倒帶 PostgreSQL 資料庫計畫群組。
-
在計畫群組下,按一下新增群組以建立自訂計畫群組,以便在法蘭克福區域中倒帶 PostgreSQL 資料庫。輸入群組名稱作為
Rewind PostgreSQL Databases at Frankfurt Region
。 -
按一下新增步驟並輸入下列資訊。我們會將一個步驟新增至計畫群組。
-
請務必選擇 Region 作為
Frankfurt
,目標執行處理作為postgresql01
。選取執行物件儲存命令檔和命令檔的位置,選擇 OCI 物件儲存的儲存桶posgres-dr-lon
。 -
輸入命令檔
rewind_postgresql.sh
詳細資訊與命令檔位置。命令檔將會關閉 FRA 區域中的 PostgreSQL 資料庫。 -
按一下新增步驟並驗證新增的步驟。
-
-
-
建立重新建立 PostgreSQL 資料庫複寫至 London 計畫群組。
-
在計畫群組底下,按一下新增群組以建立自訂計畫群組,將 PostgreSQL 資料庫複寫重新建立到倫敦。輸入群組名稱作為
Promote PostgreSQL Database at London Region
。 -
按一下新增步驟並輸入下列資訊。我們會在計畫群組中新增一個步驟。
-
請務必選擇 Region 作為
London
,目標執行處理作為postgresql02
。選取執行物件儲存命令檔,命令檔的位置會選擇 OCI 物件儲存的儲存桶posgres-dr-lon
。 -
輸入命令檔
replicate_postgresql.sh
詳細資訊與命令檔位置。命令檔將會關閉 FRA 區域中的 PostgreSQL 資料庫。 -
按一下新增步驟並驗證新增的步驟。
-
-
作業 6:執行前置檢查並執行切換計畫
執行前置檢查會快速驗證 DR 計畫中的所有步驟,以及與步驟關聯的成員。
-
從切換計畫
postgresql-switchover-london-frankfurt
中,按一下執行前置檢查以執行前置檢查。驗證是否順利完成。
-
從切換計畫
postgresql-switchover-london-frankfurt
,按一下執行災害復原計畫來執行計畫。 -
檢查計畫的狀態,並確保計畫中的所有步驟都成功。
-
切換計劃會以特定順序執行所有計劃群組。順利執行計畫之後,PostgreSQL 資料庫將會升級為法蘭克福區域中的主要資料庫。
-
自動變更 DRPG 中的角色。現在,法蘭克福將具有主要角色,而倫敦將具有待命角色。
-
驗證 Frankfurt 中的 PostgreSQL 資料庫。
接下來的步驟
您已經瞭解如何使用 OCI Full Stack DR 自動執行 PostgreSQL 資料庫切換和切換回災害復原作業。如需詳細資訊,請參閱相關連結一節中的 OCI Full Stack DR 文件。
相關連結
-
Oracle Cloud Infrastructure (OCI) Full Stack Disaster Recovery
-
使用搭配 Oracle Cloud Infrastructure Full Stack Disaster Recovery 的 run 命令呼叫自訂命令檔
認可
-
作者 - Raphael Teixeira (FSDR 技術人員主要成員)
-
貢獻者 - Ricardo Malhado (OCI 專家的超大規模擴展程式)、Suraj Ramesh (MAA 的主要產品經理)
其他學習資源
瀏覽 docs.oracle.com/learn 的其他實驗室,或前往 Oracle Learning YouTube 頻道存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Automate Switchover and Failover for PostgreSQL Database with Oracle Cloud Infrastructure Full Stack Disaster Recovery
F96169-01
April 2024