全部產品
Search
文件中心

ApsaraDB RDS:資料庫代理常見問題

更新時間:Oct 26, 2024

如果您在使用RDS MySQL資料庫代理過程中存在疑問或遇到問題,可以參考本文查看解決方案。

目錄

什麼是資料庫代理?

資料庫代理是位於資料庫服務端和應用服務端之間的網路代理程式服務,用於轉寄應用服務端訪問資料庫時的所有請求,提供自動讀寫分離、事務拆分、串連池、串連保持等進階功能,具有高可用、高效能、可營運、簡單易用等特點。

通用型代理和獨享型代理有什麼區別?

  • 通用型共用CPU實體資源,代理規格最高為16核(代理個數8),不收取任何費用,更經濟。

  • 獨享型獨佔CPU實體資源,代理規格最高為64核(代理個數32),隨用隨付,具有更好的效能穩定性。

更多資訊,請參見通用型代理和獨享型代理代理個數和代理規格的關係資料庫代理費用說明

資料庫代理是否佔用主執行個體的QPS或者TPS?

不會。

資料庫Proxy 位址和常規地址是否是一個地址?

不是。

  • 常規地址:正常的業務讀寫地址,通過該地址發送的所有請求只會路由到該執行個體。

  • 資料庫Proxy 位址:可根據使用者的SQL請求,自動判斷讀請求或寫請求,並分發到主執行個體或唯讀執行個體,實現讀寫分離,減輕主執行個體的壓力。

開通資料庫代理後,執行個體原來的地址和唯讀執行個體的地址是否會被收回?

不會收回。

資料庫代理的內網網路類型是否和主執行個體相同?

資料庫代理的內網網路類型統一為專用網路。

資料庫代理是什麼架構?有故障切換機制嗎?

資料庫代理採用雙主節點的高可用架構,流量串連按照1:1比例分發到兩個節點當中,如果其中一個節點發生故障,將由另一個節點承擔全部流量,並會自動觸發故障節點重搭恢複任務,以確保資料庫服務的高可用性。

資料庫代理部署架構,請參見代理部署架構

代理規格與代理節點規格是什麼關係?

代理規格 = 所有代理節點規格的總和。

例如,獨享型雙可用性區域(可用性區域A + 可用性區域B)部署代理程式,可用性區域A的單節點代理規格CPU為1核,節點個數為2;可用性區域B的單節點代理規格CPU為2核,節點個數為2,則代理規格 = 可用性區域A的代理規格 + 可用性區域B的代理規格=1核 x 2 + 2核 x 2 = 2核 + 4核 = 6核。

代理個數和代理規格是什麼關係?

代理個數 = 代理規格 / 單位代理規格,其中, 單位代理規格固定為2核 CPU。

例如,代理執行個體的代理規格為6核 ,則代理個數 = 6核 / 2核 = 3。

代理節點規格的限制有哪些?

  • 代理單節點規格範圍:通用型為1~8核,獨享型為1~16核。

  • 同一可用性區域的代理節點規格必須相同。

  • 雙可用性區域2節點部署時,兩個節點規格必須一致。

  • 不同可用性區域代理節點規格可以不同。建議通用型代理不同可用性區域代理節點規格相同。

代理個數和Proxy 位址個數有關係嗎?

沒有。

每個RDS執行個體在開通資料庫代理後,都可以申請1~7個Proxy 位址,每個Proxy 位址都可以申請1個內網串連地址和外網串連地址,更多資訊,請參見新增代理串連地址

資料庫代理的效能會隨著Proxy 位址的增多而提升嗎?

不會。

如果您的RDS MySQL執行個體為高可用系列,則資料庫代理的效能與唯讀執行個體個數、代理個數(代理規格)相關;如果您的RDS MySQL執行個體為叢集系列,則資料庫代理的效能與備節點個數、代理個數(代理規格)相關:

  • 增加高可用系列的唯讀執行個體個數或叢集系列的備節點個數,可以提升資料庫代理的讀請求處理能力。

  • 增加代理個數(代理規格),可以提升資料庫代理的效能。

資料庫代理對使用者的串連數有限制嗎?

資料庫代理本身並沒有最大串連數的限制,串連數的限制還是由資料庫中計算節點的規格決定。

使用資料庫Proxy 位址串連時報逾時錯誤怎麼辦?

建議您將wait_timeout參數調大後再次嘗試串連。如何調整執行個體參數,請參見設定執行個體參數

資料庫Proxy 位址(讀寫分離地址)可以修改嗎?

可以。

資料庫Proxy 位址(讀寫分離地址)可以修改,具體操作,請參見設定資料庫代理串連地址

主執行個體寫的頻率不高,能不能讓讀請求也發送給主執行個體?

能。

設定讀權重分配時,為主執行個體設定權重即可。如何為主執行個體設定權重,請參見開通資料庫代理

讀寫分離支援hint語句嗎?

您可以通過hint語句強制轉寄請求到主執行個體上執行。關於RDS讀寫分離支援的hint格式,請參見文檔系統預設讀權重分配規則中的通過hint指定SQL發往主執行個體或唯讀執行個體部分。

為什麼修改後的讀權重沒有生效?

修改讀權重後,建立的串連才會根據新權重進行分配,已存在的串連不會斷開重連。

為什麼各節點的負載不符合配置的讀權重?

若各節點的負載與配置的讀權重不同,主要檢查如下兩個方面:

  • 請求語句是否包含了事務。包含了事務的所有請求只會路由到主執行個體,開啟設定事務拆分可以降低主執行個體負載。

  • 是否只用了資料庫Proxy 位址串連資料庫。如果您未使用資料庫代理串連地址串連資料庫,而是使用了主執行個體地址或者唯讀執行個體地址,這些地址收到的請求不會按權重分配。

沒有開通資料庫代理服務,可以配置唯讀執行個體的業務分配權重嗎?

沒有開通資料庫代理服務,無法配置唯讀執行個體的業務分配權重,但是您可以在不同的應用程式中配置不同的串連地址(唯讀執行個體或主執行個體串連地址),實現讀寫分離和負載平衡。

唯讀執行個體不可用時,新串連會串連到正常的唯讀執行個體上,那已串連到故障唯讀執行個體的串連會自動切換到正常唯讀執行個體上嗎?

不會自動切換,需要等待逾時後重新串連到正常唯讀執行個體上。

開通資料庫代理服務後,如何驗證讀寫分離?

讀寫分離的驗證方法,請參見驗證讀寫分離

購買唯讀執行個體做讀寫分離後,主執行個體的歷史資料是否會自動同步到唯讀執行個體?

開通資料庫代理服務並完成讀寫分離的相關資料配置後,主執行個體的歷史資料會自動同步到唯讀執行個體,無需手動同步。

資料庫代理中的串連池與應用程式中的串連池有什麼區別,應該如何結合使用?

RDS MySQL資料庫代理的串連池功能是指代理的串連池功能,不影響用戶端的串連池功能。如果您的用戶端已經支援串連池,則可以不使用Proxy的串連池功能。RDS MySQL資料庫代理的串連池功能詳情,請參見設定串連池

為什麼查詢時會出現亂碼?

通過如下命令檢查主執行個體和唯讀執行個體使用的字元集是否一致。

select 
@@global.character_set_results, 
@@global.character_set_client, 
@@global.character_set_connection, 
@@global.character_set_server;

如果不一致可能會出現亂碼,您可以修改主執行個體或唯讀執行個體的字元集,確保兩個執行個體使用的字元集一致。如何修改執行個體字元集,請參見RDS for MySQL字元集相關說明

DDL操作是否會自動從主庫同步到從庫?

所有DDL操作(建立表或庫、刪除表或庫、變更表結構、許可權等)會自動從主庫同步到從庫。

如何查看專用網路類型的內網Proxy 位址的VpcId和vSwitch Id?

在執行個體的資料庫代理頁面的串連資訊地區,將滑鼠移至上方於連接埠右側的表徵圖,如下圖所示,即可查看。

image.png

遷移代理可用性區域會對主執行個體串連有影響嗎?

遷移代理可用性區域只會影響使用資料庫代理串連地址的Business Connectivity,通過主執行個體串連地址、唯讀執行個體串連地址或者叢集讀寫地址、叢集唯讀地址、節點直連地址的業務不受影響。建議將業務切換到不受影響的串連地址中,並在業務低峰期進行可用性區域遷移。

遷移代理可用性區域的影響是什嗎?

遷移代理可用性區域時,資料庫代理串連會出現約30秒的閃斷。影響時間長度跟業務實際使用有關,建議將業務切換到不受影響的串連地址中,並在業務低峰期進行可用性區域遷移。具體影響,請參見遷移代理可用性區域

遷移代理可用性區域,就近訪問功能會失效嗎?

可能會失效。

遷移可用性區域後,預設可就近訪問新可用性區域,原可用性區域的就近訪問失效。若修改了代理串連地址的目標可用性區域,使其與預設可用性區域不一致,則對應可用性區域的就近訪問失效。樣本情境如下:

情境

原代理資訊

目標代理資訊

代理執行個體當前可用性區域

Proxy 位址

就近訪問

代理執行個體目標可用性區域

Proxy 位址預設可用性區域

Proxy 位址目標可用性區域

就近訪問

情境1:

可用性區域A + 可用性區域B遷移至可用性區域A + 可用性區域C

可用性區域A

Proxy 位址a

可用性區域A

可用性區域A

可用性區域A

可用性區域A

可用性區域A

可用性區域C

失效

可用性區域B

Proxy 位址b

可用性區域B

可用性區域C

可用性區域C

可用性區域C

可用性區域C

可用性區域D

失效

情境2:

可用性區域A + 可用性區域B遷移至可用性區域C + 可用性區域D

可用性區域A

Proxy 位址a

可用性區域A

可用性區域C

可用性區域C

可用性區域C

可用性區域C

可用性區域E

失效

可用性區域B

Proxy 位址b

可用性區域B

可用性區域D

可用性區域D

可用性區域D

可用性區域D

可用性區域E

失效

變更代理配置時,支援變更可用性區域嗎?

不支援。

如果需要遷移可用性區域,請參見遷移代理可用性區域

如何解決雙可用性區域部署變更為單可用性區域部署時,報錯:所有串連地址的vSwitchId必須在目標可用性區域?

雙可用性區域部署(如可用性區域1+可用性區域2)變更為單可用性區域部署(如可用性區域1)時,需要先刪除可用性區域2的代理串連地址。具體操作,請參見設定資料庫代理串連地址