全部產品
Search
文件中心

PolarDB:資料庫代理常見問題

更新時間:Jan 31, 2026

本文匯總了PolarDB資料庫代理相關的常見問題。

為什麼剛插入的語句,立即查的時候查不到?

讀寫分離的架構下,主節點和唯讀節點之間複製會有延遲,但PolarDB支援會話一致性,即同一個會話內保證能讀到之前的更新,詳情請參見會話一致性

是否支援0毫秒延遲的讀取?

PolarDB叢集的主節點和唯讀節點在正常負載情況下,具有毫秒級的延遲,讀寫分離串連地址暫時不支援在資料寫入後0毫秒的讀取。如果要求0毫秒延遲的讀取,可使用主地址(動態指向PolarDB主節點)將讀寫請求發給主節點。如何查看主地址,請參見查看串連地址和連接埠

為什麼主節點負載很高?

主節點CPU負載高的原因有多種,常見的排查方法如下:

  • 如果業務直接存取主地址,可以檢查一下是否有業務配置使用主地址。

  • 業務的更新要求數量遠高於讀請求數量,導致主節點壓力大。

  • 如果Proxy 位址將主庫是否接受讀設定為,您可以將主庫是否接受讀修改為,以減少部分讀請求路由到主節點。

  • 檢查Proxy 位址事務拆分是否開啟。有些ORM預設將所有請求封裝在事務裡,導致所有請求都路由到主節點。可以開啟事務拆分,減少事務寫前讀請求路由到主節點。

若在Sysbench壓測中,您可以在0.5版本的Sysbench中加上--oltp-skip-trx=on或在1.0版本的Sysbench中加上--skip-trx=on去掉事務後再進行壓測。詳細的負載平衡策略及事務拆分請參見負載平衡

為什麼某個節點的請求數比別的節點多?

當前是根據負載來分發請求的,負載小的節點接收的請求數會更多。

新增的唯讀節點會自動加入到讀寫分離嗎?

是的。

資料庫一致性層級設定為全域一致性(強)相比最終一致性(弱)和會話一致性(中)是否有效能差異?

全域一致性(強)相比最終一致性(弱)和會話一致性(中)會有一定的效能損失。如果您的業務對並發數要求較高,請在業務低穀期進行層級變更設定。

資料庫代理企業版的企業通用版企業獨享版有什麼區別?

  • 企業通用版:對應叢集子系列的通用規格,它可以共用CPU實體資源,可根據業務負載,提供智能秒級資源彈性擴充能力。

  • 企業獨享版:對應叢集子系列的獨享規格,它可以獨佔CPU實體資源,具有更好的效能穩定性。

從叢集地址中刪除已選擇的唯讀節點對業務有影響嗎?

  • 如果刪除可讀可寫入模式的叢集地址下的唯讀節點,當刪除的唯讀節點上有正在執行中的請求、事務或暫存資料表時,該叢集地址上的Business Connectivity會直接斷連。否則,業務無感知。

  • 如果刪除唯讀模式的叢集地址下的唯讀節點,該叢集地址上的Business Connectivity會直接斷連。

刪除唯讀節點的具體影響請參見唯讀節點下線

PolarDB支援哪些讀寫入模式?

當前PolarDB的叢集和自訂地址支援兩種讀寫入模式:唯讀和可讀可寫(自動讀寫分離)。

  • 讀模式:所有請求僅會被路由到唯讀(RO)節點,寫入(RW)節點無法掛載到唯讀地址。如果業務請求嘗試串連到唯讀地址進行寫入,將會收到錯誤提示。此模式支援基於串連數和基於活躍請求數的負載平衡。

  • 可讀可寫入模式:系統自動支援讀寫分離,預設情況下會掛載寫入(RW)節點。該模式僅支援基於活躍請求數的負載平衡。

修改讀寫入模式僅對建立串連生效,已有的老串連保持原來的模式。詳細配置請參見:設定資料庫代理

Binlog dump 時報錯 "Connections-based load balancing policy does not support BINLOG_DUMP in non-block mode"?

目前基於串連數負載平衡的唯讀地址不支援在non-block模式下拉取Binlog檔案,請在控制台將唯讀地址的負載平衡策略切換為基於活躍請求數。

資料庫代理版本1.x.x和2.x.x是如何確定的?

當前PolarDB MySQL版資料庫代理包含1.x.x2.x.x兩大版本,兩個版本的區別如下:

  • 1.x.x

    2021年2月1日前建立的叢集下的資料代理版本,該版本不再進行新功能反覆式開發法,只進行問題修複。

  • 2.x.x

    2021年2月1日(包含)後新建立的叢集下的資料代理版本,該版本屬於當前的主流版本,所有的新增功能都在該版本上進行反覆式開發法。新增的功能包括串連保持、資料脫敏等。

在控制台中進行小版本升級,是否可以將資料庫代理版本從1.x.x升級到2.×.x?

不可以,1.x.x的資料庫代理版本只能升級到1.x.x的最新版本,不能直接升級到2.x.x。若您有相關需求,請參見資料庫代理版本可以從1.x.x升級到2.×.x

資料庫代理版本可以從1.x.x升級到2.×.x?

可以,但您的叢集需要滿足如下要求:

  • 叢集為PolarDB MySQL版8.0.2版本時,無核心版本要求。

  • 叢集為PolarDB MySQL版8.0.1版本時,修訂版本需為8.0.1.1.10以上。

  • 叢集為PolarDB MySQL版5.7版本時,修訂版本需為5.7.1.0.6以上。

  • 叢集為PolarDB MySQL版5.6版本時,修訂版本需為5.6.1.0.24以上。

若您的叢集滿足以上要求,可以聯絡我們為您處理。

在控制台中進行大版本升級時,資料庫代理版本是否會直接升級到2.×.x?

是的。大版本升級的時候,資料庫代理版本會自動升級2.x.x版本,且不支援指定到1.x.x版本。

為什麼在將叢集地址中的唯讀節點權重設定為0後,再移除該唯讀節點會導致串連錯誤?

  • 情境描述:需要將叢集地址中的唯讀節點移除。為避免對該節點上的串連造成影響,首先將該唯讀節點的讀寫分離權重設定為0。預期在權重設定為0後,後續的讀請求將不會被下發至該唯讀節點。在隨後將該節點移除叢集地址後,業務端出現串連錯誤。

  • 問題原因:叢集地址有兩種负载均衡策略,分別為基于活跃请求数负载均衡基于连接数负载均衡

    • 基于活跃请求数负载均衡:將唯讀節點的權重降低至0後,後續請求將不再路由至該節點。

    • 基于连接数负载均衡:僅在建立串連階段進行負載平衡。如果之前已建立的串連,串連至唯讀節點,則後續該串連的請求將始終發送到該唯讀節點。

  • 解決方案

    1. 將叢集地址中的负载均衡策略切換至基于活跃请求数负载均衡

    2. 將目標唯讀節點的讀寫分離權重設定為0。

    3. 移除該唯讀節點。