注意:

使用 OCI 主控台設定 PostgreSQL 主要和兩個待命資料庫,然後驗證資料複寫

簡介

PostgreSQL 是開放原始碼物件關聯式資料庫管理系統。它具有高擴充性、高擴展性,並且具有許多功能。PostgreSQL 支援跨多個資料中心進行資料複寫。

可以修改資料的伺服器稱為主要伺服器或主要伺服器。追蹤主要變更的伺服器稱為待命伺服器。在升級至主要伺服器之前,無法連線的待命伺服器稱為暖待命伺服器,可以接受連線並提供唯讀查詢的待命伺服器稱為熱待命伺服器。

資源管理程式是一項 Oracle Cloud Infrastructure (OCI) 服務,可讓您自動執行佈建 OCI 資源的處理作業。資源管理程式可使用 Terraform 透過「基礎架構即程式碼」模型,協助您安裝、設定及管理資源。

Oracle Cloud Infrastructure 專為需要一致高效能的工作負載所設計,包括與資料庫的狀態性連線、透過 CPU 或 GPU 的原始處理、數百萬個儲存 IOPS 及 GB/s 的傳輸量。它開始於零信任架構。在設計 Oracle Cloud 時,我們希望雲端對每個應用系統執行得更好,同時具備更高的性價比。

目標

在 OCI 資源管理程式中使用 Terraform Code 設定 1 個主要和 2 個熱待命伺服器。它將會部署在 3 個不同可用性網域中的 3 個運算執行處理上。

部署之後,我們將檢查從主要伺服器到待命伺服器的表格複寫,並將連線到熱門待命資料庫以查詢資料。

  1. 我們將使用 terraform 堆疊部署網路、PostgreSQL 主要和 2 個待命伺服器。

  2. 我們會在「主要」中建立範例表格,並在表格中插入一些記錄。

  3. 然後,我們會驗證是否已將這些範例表格和資料列複製到兩個待命伺服器。

作業 1:建立堆疊

  1. 在瀏覽器中開啟下列連結:部署至 Oracle Cloud

  2. 如果您尚未登入,請輸入租用戶和使用者證明資料。

  3. 選取您想要部署此堆疊的區域。

  4. 在「堆疊資訊 (Stack Information)」頁面上,選取我已複查並接受 Oracle 使用條款核取方塊。堆疊資訊區段會顯示詳細資訊。

  5. 按一下下一步

  6. 設定變數頁面中,設定下列設定值:

    注意:在本教學課程中,我們在公用子網路中部署 PostgreSQL 版本 12。

    變數:

    1. 請選擇您所需的可用性網域和 PostgreSQL 版本。

    2. 清除在專用子網路中建立核取方塊。

    3. 選取顯示進階選項核取方塊,並指定網路、運算、儲存、待命及其他設定值的詳細資訊。

      變數:

      Variables3:

    4. 指定必要的作業系統、備份原則和其他詳細資訊。

      變數:

    5. 指定必要的 OCPU 和記憶體值。

      1. 選擇您的「主要節點資源配置」和複本使用者。

        變數:

      2. 提供您 Hotstandby1 的詳細資訊 (選擇 AD-2)。

        變數:

      3. 提供 Hotstandby2 的詳細資訊 (選擇 AD-3)。

        變數:

    6. 按一下下一步

  7. 在「複查」頁面上驗證您的詳細資訊,並確定已選取執行套用核取方塊來立即佈建資源。

    堆疊複查

  8. 按一下建立

    工作日誌

  9. 請依照下列螢幕擷取畫面所示,監控堆疊工作日誌 (前往開發人員服務資源管理程式堆疊 )。

    堆疊瀏覽

    堆疊頁面

    堆疊工作狀態

    堆疊工作日誌

注意:對於本教學課程中使用的測試設定,已套用堆疊並在所選資源配置的 11 分鐘內順利設定這些資源。這會根據您選擇的組態設定值而有所不同。

堆疊工作成功

下列螢幕擷取畫面顯示已完成的「主要」和「待命」伺服器組態。

執行中 PG 運算

作業 2:確認連線和複寫

  1. 以 opc 使用者身分將 ssh 移到您的「主要」節點,然後執行下列命令:

    sudo su - postgres

    pgprimary 登入

  2. 在主要節點中建立表格 order_details

    CREATE TABLE order_details (order_detail_id integer CONSTRAINT order_details_pk PRIMARY KEY, order_id integer NOT NULL, order_date date, qty integer, ACCEPTED_QUANTITY integer);

  3. 描述建立的表格。

    \dt order_details

  4. 查詢資料,應該傳回 0 列:

    select * from order_details;

    主要表格

  5. 登入 standby1 伺服器並確認已複製 order_details 表格。

    pgstandby 表格

  6. 登入 standby2 伺服器並確認已複製 order_details 表格。

    pgstandby2 表格

  7. 在「主要資料庫」表格 order_details 中插入 2 個資料列。

    BEGIN; INSERT INTO order_details (order_detail_id,order_id,order_date,qty,ACCEPTED_QUANTITY) values (101,1,'2022-07-14',10,5); INSERT INTO order_details (order_detail_id,order_id,order_date,qty,ACCEPTED_QUANTITY) values (102,2,'2022-07-14',100,100); COMMIT;

    pgprimary 插入

  8. 驗證 standby1 伺服器中的資料列,應該已經複製。

    pgstandy1 驗證

  9. 驗證 standby2 伺服器中的資料列,它也應該在這裡複製。

    pgstandy2 確認:

確認

其他學習資源

探索 docs.oracle.com/learn 的其他實驗室,或者存取更多 Oracle Learning YouTube 頻道上的免費學習內容。此外,請瀏覽 education.oracle.com/learning-explorer 以成為 Oracle Learning 檔案總管。

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