建立唯讀備用資源

選取說明文件版本:

如要提高讀取總處理量和可用性,可以為現有的 AlloyDB Omni 伺服器建立 AlloyDB Omni 副本伺服器。備用伺服器會提供主要資料庫伺服器的唯讀副本。並持續更新自身資料,以反映主伺服器資料的變更。

以下各節提供相關步驟,說明如何設定 AlloyDB Omni 主要伺服器以進行複製、設定副本伺服器,以及驗證主要伺服器上的複製狀態。

事前準備

請先使用 RPM 套件安裝及設定 AlloyDB Omni,詳情請參閱「使用 RPM 安裝 AlloyDB Omni」。

設定主要伺服器以進行複製

  1. 更新主要伺服器主機的網路或防火牆設定,允許從副本伺服器主機透過主要伺服器的 Postgres 連接埠傳入流量。

  2. 建立複製使用者:

    psql -h localhost -U postgres -c "create user REPLICA_USER with replication password 'PASSWORD';
    grant pg_read_all_settings to REPLICA_USER;"
  3. 在主要伺服器的 /DATA_DIR/pg_hba.conf 檔案中,於檔案中現有的 host all all all scram-sha-256 之前新增下列幾行:

    host alloydbmetadata    alloydbmetadata   IP_RANGE trust
    host replication        REPLICA_USER    IP_RANGE scram-sha-256
    

    更改下列內容:

    • IP_RANGE:以 CIDR 標記法表示的 IP 範圍,也就是副本機所在的子網路。例如:203.0.113.0/24
    • DATA_DIR:主要伺服器的資料目錄路徑。
  4. 重新啟動主要伺服器:

    sudo systemctl restart alloydbomni18

建立及設定副本伺服器

如要建立及設定 AlloyDB Omni 副本伺服器,請完成下列步驟:

  1. 確認副本已連上主要伺服器的網路:

    ping SOURCE_IP

    SOURCE_IP 替換為要從中複製資料的 AlloyDB Omni 主要執行個體 IP 位址。

  2. 確認副本可以連線至主要伺服器:

    psql "host=SOURCE_IP user=REPLICA_USER replication=1" -c "IDENTIFY_SYSTEM;"

    輸出內容應如下所示:

           systemid       | timeline |  xlogpos  | dbname
     ---------------------+----------+-----------+--------
      7376500460465963036 |        1 | 0/454B670 |
      (1 row)
    
  3. 副本必須在磁碟上具有永久儲存空間:

    pg_basebackup \
      --pgdata=DATA_DIR \
      --checkpoint=fast \
      --host="SOURCE_IP" \
      --port="SOURCE_PORT" \
      --username=REPLICA_USER \
      --create-slot \
      --write-recovery-conf \
      --slot="SLOT_NAME"

    更改下列內容:

    • SOURCE_PORT:要從中複製資料的主要 AlloyDB Omni 執行個體 TCP 通訊埠。如未提供這個值,AlloyDB Omni 會套用預設值 5432
    • SLOT_NAME:複製運算單元名稱的標籤。
    • DATA_DIR:副本伺服器的資料目錄路徑。
  4. 啟動備用資源執行個體:

    sudo systemctl start alloydbomni18

在主要伺服器上驗證複製狀態

如要確認複寫設定是否正確,請在主要伺服器的主機上執行下列指令:

psql -h localhost -U postgres -c "select * from pg_stat_replication"

輸出資料表中的每個資料列,都代表一個連線至主要資料庫伺服器的副本。

設定複寫後,主要資料庫伺服器中所有插入、更新及刪除的資料列,都會在幾秒內顯示在副本中。