本文提供逐步指引,教你如何為 Azure Database for PostgreSQL 彈性伺服器彈性叢集執行水平擴展操作。
Azure Database for PostgreSQL 彈性叢集透過增加更多工作節點來提供水平擴展。 當你擴展 PostgreSQL 彈性叢集時,可以透過給資料庫更多資源或更多節點來處理平行查詢來應對成長。 你可以在最小的停機時間和內建的分片管理下,獲得所有這些好處。
擴展方法
根據你的工作流程和自動化需求,使用多種方法之一加入工作節點到你的彈性叢集——包括 Azure 入口網站、Azure CLI 或透過 ARM 範本和 API 的自動化。 以下章節提供入口網站與 CLI 的逐步說明,並解釋擴縮後的再平衡。
使用 Azure 入口網站:
開啟資源:在 Azure 入口網站中,導覽至 PostgreSQL 的 Azure 資料庫 – 彈性伺服器彈性叢集。
前往 Compute + Storage:在設定區塊中選擇 Compute + storage。 此頁面顯示您叢集節點的當前配置。
調整節點數量:找到節點數量欄位。 將節點數增加到理想的總節點數(大多數 GA 叢集介於 2 到 20 間)。 例如,要將四個節點叢集加倍為八個節點,將滑桿調高到 8。 Azure 會額外配置工作節點以達到這個計數。
套用變更:選擇儲存。 在提示時確認縮放作業。 Azure 開始向你的叢集新增節點。 此操作在線上執行,通常不會中斷現有連線或查詢。 部署可能需要幾分鐘的時間。 你可以透過入口網站通知來監控進度。 完成後,叢集的節點數會反映新的數值。
備註
你必須明確觸發分片重新平衡背景流程,允許現有資料重新分配到所有節點。 此操作不涉及讀取與寫入的停機時間。
再平衡
在叢集新增節點後,任何新增的資料修改或新增的分散式資料表都會使用所有可用的節點。 現有的資料分片會保持原位,直到重新分配。 線上重新平衡可確保資料在移動過程中,應用程式的讀取和寫入操作能以最小的中斷持續進行。
當你擴展彈性叢集時,重新平衡叢集可以確保現有資料完全分散,資料庫也使用所有可用節點。 使用 citus_rebalance_start 函數開始再平衡流程。 此操作將現有資料均勻分配至所有節點。
SELECT citus_rebalance_start();
平行再平衡
預設的再平衡操作會依序執行多個分片移動。 在某些情況下,你可能會寧願更快重新平衡,但會犧牲更多資源,例如運算、記憶體和網路頻寬。 在這些情況下,您可以設定重新平衡作業,以平行執行多個分區移動。
citus.max_background_task_executors_per_node 參數允許像是分片重新平衡這類任務能平行運作。 你可以依照需求增加預設值 (1) 來提升平行性。
ALTER SYSTEM SET citus.max_background_task_executors_per_node = 2;
SELECT pg_reload_conf();
此外,你可以設定 citus_rebalance_start 函式,根據不同策略重新平衡分片,以最適合你的資料庫工作負載。 既然你新增了額外的背景任務執行者,這裡有一個用平行工作者重新平衡分片的範例:
SELECT citus_rebalance_start(parallel_transfer_colocated_shards := true, parallel_transfer_reference_tables := true);
考慮事項
擴展後監控叢集:請在 Azure 入口網站的監控圖表中檢查 CPU 利用率、記憶體使用率及 IO 消耗,針對你的彈性叢集進行監控。 在擴展操作後,確認新增節點是否反映吞吐量和回應時間的指標提升,視你的工作負載而定。 必要時再調整。
彈性叢集的擴縮會隨著資源的變動而成正比地影響成本。 新增節點會使運算與儲存成本乘以節點數量。 舉例來說,一個由四個節點組成的叢集,每個節點有兩個 vCore,成本大約是單一雙 vCore 伺服器的四倍,因為你正在運行四台伺服器。 務必檢視入口網站中的價格影響。 當你在儲存前更改設定時,Azure 入口網站會更新預估成本,以確保符合預算。
高可用性:若叢集啟用區域冗餘高可用性,擴展作業也會為新節點配置備用資源。 Azure 服務會自動處理這部分。 預期擴展會稍微慢一點,因為它會為每個新增節點設置 HA 副本。 此流程與停機特性幾乎保持不變,但會對主要與待命配對成倍計算。
讀取副本:如果您的叢集設定使用讀取副本,新增節點時必須遵循特定的操作順序。 首先,將節點數量加入你的主要叢集並儲存變更。 完成後,對你的讀取複本環境進行相應的變更並儲存這些變更。 你主叢集上的新節點只有在主副本和讀取複本環境都更新並同步之前,才有資格進行叢集操作。
備註
目前還沒有從彈性叢集中移除節點(擴展)的功能。
透過上述擴展技術,Azure Database for PostgreSQL 彈性叢集讓你能從小規模開始,隨著需求增加無縫擴展資料庫。 你可以享受單一端點的簡單性,同時又能享受分散式 Postgres 基礎架構的強大功能。 請持續關注 Azure 文件,了解 Elastic Clusters 最新功能及擴展最佳實務。