全部產品
Search
文件中心

PolarDB:PolarDB分布式配置讀寫分離

更新時間:Apr 28, 2025

本文將介紹執行個體的串連地址及設定項,通過對設定項的配置,可使用讀寫分離功能。

版本限制

僅企業版執行個體支援配置讀寫分離功能。

背景資訊

當您只購買了主執行個體時,只會有一個串連地址,也叫叢集地址(Cluster Endpoint),主要面向線上通用業務情境。 在主執行個體頁面上,如果添加了唯讀執行個體,每個唯讀執行個體頁面上會提供一個唯讀地址(Read Only Endpoint),專註離線拖數、跑批等資源鏈路隔離情境,確保唯讀資源可被獨享。在HTAP情境下,購買了主執行個體和唯讀執行個體,您可以使用叢集地址(Cluster Endpoint)和唯讀地址(Read Only Endpoint),通過叢集地址的配置項,可使用讀寫分離功能。

配置叢集地址和讀寫分離

  1. 登入PolarDB分布式版控制台

  2. 在頁面左上方選擇目標執行個體所在地區。

  3. 執行個體列表頁,單擊PolarDB-X 2.0頁簽。

  4. 找到目標執行個體,單擊執行個體ID。

  5. 串連資訊地區單擊組態管理,查看叢集地址配置項。

    配置項說明:

    參數

    說明

    資源配置

    若已成功購買唯讀執行個體,可以選擇將需要分擔讀流量的唯讀執行個體加入到主執行個體資源集區中,未加入的將不分擔主執行個體的流量。

    唯讀執行個體自動加入

    控制新購的唯讀執行個體是否加入到主執行個體資源集區,預設開啟。

    智能讀寫分離

    此功能預設為開啟,會自動將AP流量路由給多個唯讀執行個體去計算,並做MPP並行加速,詳細資料請參見讀寫分離

    唯讀流量佔比

    將原本路由給主執行個體儲存的讀查詢按一定的比例規則路由給唯讀執行個體儲存。

    資料讀一致性

    • 強一致性:路由到唯讀執行個體的請求,保證一定能夠查詢到讀請求執行前在主執行個體上已完成更新的資料,提供外部強一致性;

    • 弱一致性:路由到唯讀執行個體的請求,讀請求僅訪問唯讀執行個體上當前的最新資料,會因為主從非同步複製的架構產生資料讀取延遲。

    說明

    在主從複寫延遲的條件下,強一致性讀會等待直到讀取到已完成更新的資料,預設的等待逾時是3s。

    唯讀執行個體延遲閾值

    唯讀執行個體延遲超過閾值後,唯讀流量會發送給其他延遲正常的唯讀執行個體,或者根據唯讀執行個體可用性決定是否切回主庫。

    唯讀流量切回主執行個體

    當所有隻讀執行個體的延遲超過閾值或者出現HA狀態,則認為當前所有隻讀執行個體處於停用狀態,判斷是否將唯讀流量回切主庫(建議唯讀執行個體個數≥2來提升可用性)。

    說明
    • 已購買唯讀執行個體後,預設自動將唯讀執行個體加入到主執行個體資源集區,自動開啟智能讀寫分離;但是預設不會將TP讀流量路由給唯讀執行個體,需要使用者顯式配置讀寫分離權重(唯讀流量佔比)。

    • 在強一致性讀下的等待逾時是3s,您可以在參數設定介面調整loose_replica_read_timeout參數控制等待逾時時間。

    • 讀寫分離功能要求PolarDB-X版本需為5.4.13-16415631及以上。

配置唯讀執行個體的唯讀地址

  1. 登入PolarDB分布式版控制台

  2. 在頁面左上方選擇目標執行個體所在地區。

  3. 執行個體列表頁,單擊PolarDB-X 2.0頁簽。

  4. 找到目標執行個體,單擊執行個體ID。

  5. 串連資訊地區,單擊組態管理,查看唯讀地址配置項。

    說明

    配置項:

    • 強一致性:通過唯讀地址可以查看到主執行個體上提交的最新資料,滿足全域資料查詢一致性。如果主備延遲過大,提交的查詢會等待。

    • 弱一致性:通過唯讀地址可以查看到當前唯讀執行個體上最新資料,如果在主執行個體和唯讀執行個體間資料同步有延遲的話,不會等待,查詢到資料立即返回。

常見問題

  • Q:購買了唯讀執行個體,為什麼在唯讀執行個體的DN節點上沒有任何流量?

    A:您的讀流量可能是TP類的讀流量,已成功購買唯讀執行個體後,需要在叢集地址的配置介面,配置唯讀流量佔比。

  • Q:購買了唯讀執行個體,配置的讀流量佔比是0,為什麼在唯讀執行個體上有流量?

    A:您的流量可能是AP類型的流量,已成功購買唯讀執行個體後,智能讀寫分離功能預設是開啟的,會自動將AP類型的流量轉寄給唯讀執行個體。您可以關閉智能讀寫分離功能,AP流量將不會被轉寄給唯讀執行個體。

  • Q:購買了唯讀執行個體,配置了讀流量佔比,為什麼在唯讀執行個體的DN節點上沒有任何流量?

    A:主執行個體只會把流量按照配置的比例轉寄給加入主執行個體資源集區的唯讀執行個體,已購買成功的唯讀執行個體可能從主執行個體的資源集區中被移除了。

  • Q:是否支援不使用PolarDB-X提供的透明讀寫分離功能,在應用上通過使用不同的串連串來做讀寫分離?

    A:支援。如無需使用PolarDB-X的讀寫分離功能,您可以將指定的唯讀執行個體從主執行個體資源集區移除。

  • Q:是否必須要開啟強一致性讀能力?

    A:如果業務沒有強一致性讀的需求,建議關閉強一致性讀,此時效能更優。否則是有必要開啟強一致性讀功能的,開啟後主備延遲大的時候(例如在做DDL),容易觸發查詢逾時。

  • Q:如何關閉強一致性讀?

    A:如果應用串連了主執行個體,在主執行個體叢集地址的配置項對話方塊中,選擇弱一致性讀;如果應用串連了唯讀執行個體,在唯讀執行個體串連地址的配置項對話方塊中,選擇弱一致性讀。

  • Q:使用PolarDB-X提供的讀寫分離,經常遇到查詢逾時,如何處理?

    A:開啟強一致性讀後,查詢逾時可能是備庫延遲導致的,備庫延遲的原因可能有:

    • 主庫做DDL或者大批量的資料匯入,導致備庫延遲;

    • 購買的唯讀執行個體規格比較小,遠小於主執行個體的規格。