附註:

使用 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

目標

必要條件

作業 1:安裝並設定 PostgreSQL

  1. 若要安裝 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
    
  2. 啟用 Linux 防火牆以接收連線。

    sudo firewall-cmd --zone=public --add-port=5432/tcp --permanent
    sudo firewall-cmd --reload
    
  3. 編輯 postgresql.conf (可在 xxxxx 找到) 檔案以允許連線並變更 wal 參數,如下所示。

    ...
    listen_addresses = '*'
    ...
    wal_level = logical
    wal_log_hints = on
    ...
    
  4. 連線至資料庫,然後建立複製使用者。

    sudo su postgres
    psql
    
    CREATE ROLE replica_user WITH REPLICATION LOGIN PASSWORD 'YourUserPassword';
    
  5. 將此使用者新增至 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
    
  6. 重新啟動 PostgreSQL 資料庫以套用變更。

    sudo systemctl restart postgresql
    
  7. 在第二部伺服器中重複此程序。

工作 2:複製 PostgreSQL 資料庫

在這項作業中,我們將設定原生 PostgreSQL 資料庫複寫。

  1. 連線至主要資料庫並建立複本插槽。

    sudo su postgres
    psql
    
    select pg_create_physical_replication_slot('replica_0');
    
  2. 連線至次要資料庫並執行下列命令以建立複寫。

    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
    
  3. 檢查主要資料庫上的複寫是否流動。

    select * from pg_stat_replication;
    

    您應該可以看到串流處理作業的一行。

作業 3:建立切換計劃

Task 3.1:建立及關聯災害復原保護群組 (DRPG)

  1. 在主要區域 (法蘭克福) 中,按一下「漢堡」功能表,瀏覽至移轉與災害復原災害復原災害復原保護群組以及建立災害復原保護群組

    在阿什本建立災害復原保護群組

  2. 在待命區域 (倫敦) 中,按一下「漢堡」功能表,瀏覽至移轉與災害復原災害復原災害復原保護群組以及建立災害復原保護群組

    在阿什本建立災害復原保護群組

  3. 在主要區域 (法蘭克福) 中,輸入下列資訊,然後按一下關聯

    • 角色:Primary
    • 對等區域:UK South (London)
    • 對等 DR 保護群組:postgresql-lon

    關聯主要與待命

工作 3.2:新增成員至主要和待命 DRPG

  1. 在主要 DRPG (postgresql-fra) 中,選取成員並新增運算 VM (postgresql01) 作為成員。

    新增主要成員

    注意:新增運算作為成員時,請在運算執行處理類型中選取非移動執行處理,因為 PostgreSQL 資料庫有主動 - 被動設定。

  2. 在待命 DRPG (postgresql-lon) 中,選取成員,然後新增運算 VM (postgresql02) 作為成員。

    新增待命成員

    注意:將運算新增為成員時,請在運算執行處理類型中選取非移動執行處理,因為我們有 PostgreSQL 資料庫的作用中被動設定。

工作 3.3:在待命 DRPG 中建立切換計畫 (倫敦)

切換計劃:一種 DR 計劃,可執行計劃的服務從主要 DRPG 轉換至待命 DRPG。

  1. 在待命 DRPG postgresql-lon 中建立切換計畫。

  2. 選取計畫,然後按一下建立計畫

  3. 輸入名稱作為 postgresql-switchover-frankfurt-london,然後選取計畫類型作為 Switchover (planned)

  4. 按一下建立

切換計畫

注意:請務必從待命 DRPG (倫敦) 建立切換計畫。

作業 3.4:自訂具有各種使用者定義之計畫群組的切換計畫

我們已將運算 (非移動執行處理) 新增為災害復原保護群組中的成員。我們需要使用其他使用者定義的計畫群組來自訂切換計畫。我們也需要建立下列 bash 命令檔並將其上傳至 OCI 物件儲存,以便在切換期間呼叫這些命令檔。

注意:這些命令檔應上傳至倫敦區域的儲存桶。

計畫群組

DR 切換的一般工作流程如下:

  1. 在法蘭克福區域停止 PostgreSQL 資料庫:計畫群組將有停止法蘭克福區域中 PostgreSQL 資料庫的步驟。

  2. 在倫敦地區推廣 PostgreSQL 資料庫:計劃群組將有在倫敦地區推廣 PostgreSQL 資料庫的步驟。

  3. 變更 PostgreSQL 資料庫複製方向:計畫群組將有變更 PostgreSQL 資料庫複製方向 (LON-FRA) 的步驟。

注意:請確定步驟的執行順序相同。

建立下列使用者定義的計畫群組

  1. 建立在法蘭克福區域停止 PostgreSQL 資料庫計畫群組。

    1. 計畫群組下,按一下新增群組以建立自訂計畫群組,以在法蘭克福區域中停止 PostgreSQL 資料庫。輸入群組名稱作為 Stop PostgreSQL Database at Frankfurt Region

      停止 FRA 中的 PostgreSQL 資料庫

    2. 按一下新增步驟並輸入下列資訊。我們會在計畫群組中新增一個步驟。

      • 請務必選擇 Region 作為 Frankfurt目標執行處理作為 postgresql01。選取執行物件儲存命令檔,命令檔的位置會選擇 OCI 物件儲存的儲存桶 posgres-dr-lon

      • 輸入命令檔 stop_postgresql.sh 詳細資訊與命令檔位置。命令檔將會關閉 FRA 區域中的 PostgreSQL 資料庫。

      • 按一下新增步驟並驗證新增的步驟。

      停止 PostgreSQL 資料庫步驟

  2. 建立 Promote PostgreSQL Database at London 區域計畫群組。

    1. 計畫群組下,按一下新增群組以建立自訂計畫群組,以便在倫敦促銷 PostgreSQL 資料庫。輸入群組名稱作為 Promote PostgreSQL Database at London Region

      在 LON 升級 PostgreSQL 資料庫

    2. 按一下新增步驟並輸入下列詳細資訊。我們會在計畫群組中新增一個步驟。

      • 請務必選擇 Region 作為 London目標執行處理postgresql02。選取執行物件儲存命令檔和命令檔的位置,選擇 OCI 物件儲存的儲存桶 posgres-dr-lon

      • 輸入命令檔 promote_postgresql.sh 詳細資訊與命令檔位置。命令檔將會關閉 FRA 區域中的 PostgreSQL 資料庫。

      • 按一下新增步驟並驗證新增的步驟。

      升級 PostgreSQL 資料庫步驟

  3. 建立變更 PostgreSQL 資料庫複製方向計畫群組。

    1. 計畫群組下,按一下新增群組以建立自訂計畫群組,以變更 PostgreSQL 資料庫複製方向。輸入群組名稱作為 Promote PostgreSQL Database at London Region

      變更 PostgreSQL 資料庫複製 directionN

    2. 按一下新增步驟並輸入下列資訊。我們會在計畫群組中新增一個步驟。

      • 請務必選擇 Region 作為 Frankfurt目標執行處理作為 postgresql01。選取執行物件儲存命令檔和命令檔的位置,選擇 OCI 物件儲存的儲存桶 posgres-dr-lon

      • 輸入命令檔 change_replication_direction.sh 詳細資訊與命令檔位置。命令檔將會關閉 FRA 區域中的 PostgreSQL 資料庫。

      • 按一下新增步驟並驗證新增的步驟。

      變更 PostgreSQL 資料庫複製方向步驟

倫敦計畫群組

作業 4:執行前置檢查並執行切換計畫

執行前置檢查選項會快速驗證 DR 計畫中的所有步驟,以及與步驟關聯的成員。

  1. 從切換計畫 postgresql-switchover-frankfurt-london 中,按一下執行前置檢查以執行前置檢查。

    切換前置檢查

    驗證是否順利完成。

    切換前置檢查狀態

  2. 從切換計畫 postgresql-switchover-frankfurt-london,按一下執行災害復原計畫來執行計畫。

    執行災害復原計畫

  3. 檢查計畫的狀態,並確保計畫中的所有步驟都成功。

    執行災害復原計畫狀態

  4. 切換計劃會以特定順序執行所有計劃群組。順利執行計畫之後,PostgreSQL 資料庫將會升級為倫敦區域中的主要資料庫。

  5. 自動變更 DRPG 中的角色。現在,倫敦將有主要角色,而法蘭克福將擁有待命角色。

  6. 驗證倫敦的 PostgreSQL 資料庫。

作業 5:在待命 DRPG (Frankfurt) 中建立切換計畫以切換

作業 5.1:在待命 DRPG 中建立切換計畫 (倫敦)

  1. 在待命 DRPG postgresql-fran 中建立切換計畫。

  2. 選取計畫,然後按一下建立計畫

  3. 輸入名稱作為 postgresql-switchover-london-frankfurt,然後選取計畫類型作為 Switchover (planned)

  4. 按一下建立

計畫群組

注意:請務必從待命 DRPG (Frankfurt) 建立切換計畫。

作業 5.2:自訂具有各種使用者定義之計畫群組的切換計畫

我們需要使用其他使用者定義的計畫群組來自訂切換計畫。我們也需要建立下列 bash 命令檔並上傳至 OCI 物件儲存,因此我們能夠在切換期間呼叫這些命令檔。

注意:這些命令檔應上傳至法蘭克福區域的儲存桶。

DR 切換的一般工作流程如下:

  1. 倒帶 PostgreSQL 資料庫:倒帶資料庫的計畫群組。法蘭克福將從倫敦資料庫同步內容。

  2. 重新建立 PostgreSQL 資料庫複寫至倫敦:計畫群組將有開始將 PostgreSQL 資料庫從法蘭克福複寫至倫敦區域的步驟。

注意:請確定步驟的執行順序相同。

建立下列兩個使用者定義的計畫群組

  1. 建立倒帶 PostgreSQL 資料庫計畫群組。

    1. 計畫群組下,按一下新增群組以建立自訂計畫群組,以便在法蘭克福區域中倒帶 PostgreSQL 資料庫。輸入群組名稱作為 Rewind PostgreSQL Databases at Frankfurt Region

      在 FRA 中倒帶 PostgreSQL 資料庫

    2. 按一下新增步驟並輸入下列資訊。我們會將一個步驟新增至計畫群組。

      • 請務必選擇 Region 作為 Frankfurt目標執行處理作為 postgresql01。選取執行物件儲存命令檔和命令檔的位置,選擇 OCI 物件儲存的儲存桶 posgres-dr-lon

      • 輸入命令檔 rewind_postgresql.sh 詳細資訊與命令檔位置。命令檔將會關閉 FRA 區域中的 PostgreSQL 資料庫。

      • 按一下新增步驟並驗證新增的步驟。

      「倒帶 PostgreSQL 資料庫」步驟

  2. 建立重新建立 PostgreSQL 資料庫複寫至 London 計畫群組。

    1. 計畫群組底下,按一下新增群組以建立自訂計畫群組,將 PostgreSQL 資料庫複寫重新建立到倫敦。輸入群組名稱作為 Promote PostgreSQL Database at London Region

      在 LON 重新建立 PostgreSQL 資料庫複寫

    2. 按一下新增步驟並輸入下列資訊。我們會在計畫群組中新增一個步驟。

      • 請務必選擇 Region 作為 London目標執行處理作為 postgresql02。選取執行物件儲存命令檔,命令檔的位置會選擇 OCI 物件儲存的儲存桶 posgres-dr-lon

      • 輸入命令檔 replicate_postgresql.sh 詳細資訊與命令檔位置。命令檔將會關閉 FRA 區域中的 PostgreSQL 資料庫。

      • 按一下新增步驟並驗證新增的步驟。

      重新建立 PostgreSQL 資料庫複製步驟

作業 6:執行前置檢查並執行切換計畫

執行前置檢查會快速驗證 DR 計畫中的所有步驟,以及與步驟關聯的成員。

  1. 從切換計畫 postgresql-switchover-london-frankfurt 中,按一下執行前置檢查以執行前置檢查。

    切換前置檢查

    驗證是否順利完成。

    切換前置檢查狀態

  2. 從切換計畫 postgresql-switchover-london-frankfurt,按一下執行災害復原計畫來執行計畫。

    執行災害復原計畫

  3. 檢查計畫的狀態,並確保計畫中的所有步驟都成功。

    執行災害復原計畫狀態

  4. 切換計劃會以特定順序執行所有計劃群組。順利執行計畫之後,PostgreSQL 資料庫將會升級為法蘭克福區域中的主要資料庫。

  5. 自動變更 DRPG 中的角色。現在,法蘭克福將具有主要角色,而倫敦將具有待命角色。

  6. 驗證 Frankfurt 中的 PostgreSQL 資料庫。

接下來的步驟

您已經瞭解如何使用 OCI Full Stack DR 自動執行 PostgreSQL 資料庫切換和切換回災害復原作業。如需詳細資訊,請參閱相關連結一節中的 OCI Full Stack DR 文件。

認可

其他學習資源

瀏覽 docs.oracle.com/learn 的其他實驗室,或前往 Oracle Learning YouTube 頻道存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。

如需產品文件,請造訪 Oracle Help Center