PolarDB數據庫代理是位于數據庫和應用程序之間的網絡代理服務,用于代理應用程序訪問數據庫時的所有請求,具有高可用、高性能、可運維、簡單易用等特點,支持自動讀寫分離、負載均衡、一致性級別、連接池、過載保護等高級功能。您可以連接PolarDB集群地址使用數據庫代理的各項功能。
PolarDB數據庫代理介紹
PolarDB集群版是一個由多節點構成的數據庫集群,包括一個主節點和多個只讀節點。對外默認提供兩個地址,分別為主地址和集群地址。其中,集群地址功能由PolarDB數據庫代理提供,集群地址分為可讀可寫(自動讀寫分離)和只讀兩種讀寫模式。
支持兩種數據庫代理版本
數據庫代理企業版提供兩種版本:企業通用版和企業獨享版。
企業通用版:配套集群子系列的通用規格,它可以共享CPU物理資源。數據庫代理的CPU資源不占用集群的CPU資源,其規格默認為對應集群中數據庫節點總核數的1/6。
企業獨享版:配套集群子系列的獨享規格,它可以獨占CPU物理資源,具有更好的性能穩定性。數據庫代理的CPU資源不占用集群的CPU資源,其規格默認為對應集群中數據庫節點總核數的1/4。
兩種版本的差異如下表所示:
對比項 | 企業通用版 | 企業獨享版 |
計費類型 | 免費 | |
資源類型 | 共享CPU物理資源,可根據業務負載,提供智能秒級資源彈性擴展能力 | 獨占物理資源,具有更好的性能穩定性 |
部署架構 | 高可用冗余架構 | |
實例規格 | 最低配置:2核 | |
連接數 | 無限制 | |
IOPS | 集群存儲最大IOPS相比歷史版本可提升50%,不同規格集群的最大IOPS可參見企業版計算節點規格 | |
只讀節點配置 | 只讀節點無需與主節點配置保持一致,可以根據業務負載降配從而節省成本 | |
只讀節點數量 | 支持1~15個只讀節點 | |
連接地址 | 1個主地址+7個集群地址 | |
熱備切換 | 連接/事務不中斷,短暫阻塞5~10秒 | |
一致性 |
| |
連接池 | 支持 | |
事務拆分 | 支持 | |
防閃斷(連接保持) | 支持 | |
數據脫敏(安全) | 支持 | |
變配業務無感 | 支持 | |
多主集群(庫表) | 支持 | |
計算節點秒級彈性擴展 | 支持 | 獨占資源,無需支持 |
Proxy限流保護(即將上線) | 支持 |
費用說明
數據庫代理企業版不收取相關費用,可免費使用。
數據庫代理企業版的切換策略如下:
系列 | 購買類型 | 切換策略 |
集群版 | 新購集群 | 在2021年12月9日后,新購集群僅提供數據庫代理企業版。 |
存量按量付費集群 | 對于存量的按量付費集群,數據庫代理于2021年12月9日已自動切換到數據庫代理企業版。 | |
存量包年包月集群 | 對于存量的包年包月集群,數據庫代理于2021年12月9日已自動切換到數據庫代理企業版。 |
使用限制
僅PolarDB集群版支持集群地址和數據庫代理相關功能。
注意事項
數據庫代理默認的集群地址和自定義的集群地址都不支持壓縮協議。
使用集群地址后,若未啟用事務拆分,事務內的所有請求都會路由到主節點。
使用集群地址后,當執行
SHOW PROCESSLIST
命令時,系統會將所有節點的結果合并后返回。若執行了多語句或調用了存儲過程,當前連接的后續請求會全部路由到主節點,需斷開當前連接并重新連接才能恢復讀寫分離功能。
PolarDB集群地址本身并沒有最大連接數的限制,連接數的限制主要由后端數據庫中計算節點的規格決定。對于讀寫模式的集群地址由于一個應用連接會與后端數據庫中每個計算節點各建立一個連接,所以應用能使用的最大連接數就是單個計算節點的最大連接數;對于只讀模式的集群地址由于一個應用連接只會與后端數據庫中的一個計算節點建立連接,所以應用能夠使用的最大連接數為該只讀集群地址下所有只讀節點的最大連接數之和。對于讀寫模式的集群地址可以通過事務級連接池功能來增加應用的最大可用連接。
新增只讀節點或重啟只讀節點之后新建的讀寫分離連接,會轉發請求到該只讀節點。新增只讀節點或重啟只讀節點之前建立的讀寫分離連接,不會轉發請求到新增的只讀節點或重啟后的只讀節點上,需要斷開該連接并重新建立連接,例如,重啟應用程序。
請勿在運行Multi Statements或調用存儲過程時修改環境變量,例如
set names utf8mb4;select * from t1;
,否則可能會導致請求路由到只讀節點和主節點查到的數據不一致。當您使用應用連接池建立URL鏈接時,為了防止連接池在網絡或其它非預期場景下丟包導致應用連接池hang住的問題,建議在URL鏈接中增加
connectTimeout
和socketTimeout
參數。參數說明請參見參數說明。示例如下:java url: jdbc:mysql://ip:port/db?connectTimeout=60000&socketTimeout=300000;
升級數據庫代理規格
數據庫代理企業版默認的規格可以滿足用戶絕大部分的應用場景。當客戶進行壓力測試或者業務吞吐量很高時,當前新版本的數據庫代理規格會自動隨著代理的負載實時升級,避免數據庫代理成為瓶頸。對于老版本的數據庫代理,您也可以手動升級其規格。
數據庫代理不占用集群的CPU核數資源,因此其規格升級不會導致集群可用CPU數減少。
數據庫代理企業版不收取費用,可免費使用。因此其規格升級也不會產生任何相關費用。
關于如何升級數據庫代理規格,請參見升級數據庫代理規格。
相關API
API | 描述 |
創建PolarDB集群的公網地址。 | |
創建PolarDB自定義集群地址。 | |
查詢PolarDB集群的地址信息。 | |
修改PolarDB集群地址屬性。 | |
修改PolarDB集群的連接地址(如自定義集群地址)。 | |
釋放PolarDB集群地址(除了自定義集群地址的私網地址)。 | |
釋放PolarDB自定義集群地址。 |