全部產品
Search
文件中心

PolarDB:讀寫分離

更新時間:Nov 19, 2024

PolarDB PostgreSQL版叢集內建讀寫分離功能,通過一個叢集地址(讀寫分離地址)實現讀寫請求的自動轉寄。

背景資訊

在對資料庫有少量寫請求,但有大量讀請求的應用情境下,單個節點可能無法承受讀取壓力,甚至對業務產生影響。使用叢集地址(讀寫分離地址),就可以使寫請求自動轉寄到主節點,讀請求自動轉寄到各個唯讀節點。從而實現讀取能力的彈性擴充,滿足大量的資料庫讀取需求。

功能優勢

  • 統一讀寫分離地址,方便維護。

    您未使用叢集地址(讀寫分離地址)時,需要在應用程式中分別配置主節點和每個唯讀節點的串連地址,才能實現將寫請求發往主節點而將讀請求發往唯讀節點。PolarDB提供一個叢集地址(讀寫分離地址),您串連該地址後即可對主節點和唯讀節點進行讀寫操作,讀寫請求被自動轉寄到對應節點,可降低維護成本。同時,您只需添加唯讀節點的個數,即可不斷擴充系統的處理能力,應用程式無需做任何修改。

  • Session層級的讀一致性。

    當用戶端通過讀寫分離建立與後端的串連後,讀寫分離中介軟體會自動與主節點和各個唯讀節點建立串連。在同一個串連內(同一個session內),讀寫分離中介軟體會根據各個資料庫節點的資料同步程度,來選擇合適的節點,在保證資料正確的基礎上(寫操作之後的讀有正確的結果),實現讀寫請求的負載平衡。

  • 擴充查詢(prepare語句或命令)的負載平衡。

    含寫操作的prepare語句只發到主庫,相應的execute也只發到主庫;純讀操作的prepare語句廣播到所有節點,相應的execute根據負載平衡進行路由,從而實現查詢請求的負載平衡。

  • 支援原生高安全鏈路,提升效能。

    如果您在雲上自行搭建代理層實現讀寫分離,資料在到達資料庫之前需要經歷多個組件的語句解析和轉寄,對響應延遲有較大的影響。而PolarDB讀寫分離中介軟體隸屬於叢集組件,相比外部組件而言,能夠有效降低延遲,提升處理速度。

  • 節點健全狀態檢查,提升資料庫系統的可用性。

    讀寫分離模組將自動對主節點和唯讀節點進行健全狀態檢查,當發現某個節點出現宕機或者延遲超過閾值時,將不再分配讀請求給該節點,讀寫請求在剩餘的健康節點間進行分配。以此確保單個唯讀節點發生故障時,不會影響應用的正常訪問。當節點被修複後,該節點會自動被加入請求分配體系內。

功能限制

  • 暫不支援如下命令或功能:

    • 不支援Replication-mode方式進行建連,即不支援通過讀寫分離地址自行搭建主備複製叢集。如需自行搭建主備複製叢集,請使用主節點的串連地址。

    • 不支援暫存資料表的ROWTYPE。

      create temp table fullname (first text, last text);
      select '(Joe,von Blow)'::fullname, '(Joe,d''Blow)'::fullname;
    • 不支援函數中建立臨時資源。

      • 函數中建立暫存資料表,然後再執行對暫存資料表的查詢SQL可能會收到表不存在的錯誤資訊。

      • 函數中帶有prepare語句,後續execute時可能會收到statement name不存在的錯誤資訊。

  • 路由相關限制 :

    • 事務中的請求都路由到主節點,事務退出後,恢複負載平衡。

    • 所有使用函數(除彙總函式,例如,count、sum)的語句,會路由到主節點。

建立或修改叢集地址

進階選項-事務拆分

詳情請參見事務拆分

進階選項-一致性層級

詳情請參見一致性層級

自訂路由-Hint

在SQL語句前加上/*FORCE_MASTER*//*FORCE_SLAVE*/可以強制指定這條SQL的路由方向。例如select * from test預設會路由到唯讀節點,改為/*FORCE_MASTER*/ select * from test就會路由到主節點。

下一步

串連資料庫叢集

說明

申請叢集地址後,您只需在應用中配置該叢集地址,即可實現自動讀寫分離。

相關API

API

描述

CreateDBEndpointAddress

建立PolarDB叢集的公網地址。

DescribeDBClusterEndpoints

查詢PolarDB叢集的地址資訊。

ModifyDBClusterEndpoint

修改PolarDB叢集地址屬性。

ModifyDBEndpointAddress

修改PolarDB叢集預設訪問地址首碼。

DeleteDBEndpointAddress

釋放PolarDB叢集地址(除了自訂叢集地址的私網地址)。