在使用RDS MySQL數據庫代理前,請了解本文介紹的注意事項,以便您能夠更加順利地使用數據庫代理服務。
關于RDS數據庫代理的使用問題和更多相關信息,歡迎加入用戶釘釘群(106730000316)進行咨詢、反饋和交流 。
通用版代理免費。獨享版代理、只讀實例和主實例均獨立收費,三者互不干擾。
未開通數據庫代理連接保持功能時,當主實例或只讀實例變更配置時可能會出現實例切換。實例切換的影響請參見實例切換的影響。
在代理地址上新增只讀實例,或者代理地址上的只讀實例發生重啟時,該代理地址上新連接和存量老連接的請求都會路由到新的只讀實例或重啟的只讀實例。
在代理地址上刪除只讀實例時,該只讀實例上正在執行的語句會報錯。如果需要在不影響使用的情況下下線單個只讀實例,需要將代理版本升級至2.8.41及以上,并確保代理的讀寫屬性設置為讀寫。詳細操作請參見升級數據庫代理內核小版本和設置讀寫屬性和讀權重。
數據庫代理地址暫不支持壓縮協議。
RDS MySQL 高可用系列的主實例與只讀實例的參數max_prepared_stmt_count需要一致。
數據庫代理的連接模型是1:N(即您的一個業務連接到達代理后,代理會連接到主實例和所有配置的只讀實例),數據庫代理本身并沒有最大連接數的限制,連接數的限制主要由后端數據庫中計算節點的規格決定。未開啟事務級連接池時,每條由客戶端發起的連接都需要在后端主節點和所有只讀節點上各創建一個對應的連接。建議開通數據庫代理后,主實例和只讀實例的連接數規格盡量一致,否則業務的連接數會受限于最小規格的實例連接數限制。
使用代理連接地址時,如果沒有啟用事務拆分,事務請求都會路由到主實例。
使用代理連接地址進行讀寫分離時,不保證非事務讀的一致性,業務上有讀一致性需求可以封裝到事務中,或者使用Hint語法。
使用代理連接地址時,
show processlist
會將所有節點的結果合并后返回。由于默認開啟設置連接池功能,
show processlist
可能會顯示閑置的用戶連接。如果執行了Multi-Statements或存儲過程,當前連接的后續請求會全部路由到主節點,需斷開當前連接并重新連接才能恢復讀寫分離。
如果使用MySQL命令行進行連接并使用Hint語句,需要在命令中增加-c選項,否則Hint會被MySQL命令行工具過濾。更多Hint語法說明,請參見使用Hint語法。
主實例被鎖定期間,代理不會被釋放,可繼續提供讀服務,但無法提供寫服務。
主實例若被釋放,數據庫代理自動跟隨主實例釋放,釋放后獨享型代理不再產生費用。
由于代理目前不支持切換VPC和VSwitch,對主實例修改VPC時,代理的VPC并不會隨之改變,代理還是能夠與主實例保持連通,但無法使用修改后的VPC訪問代理連接地址。
在使用高權限賬號單獨配置賬號的host范圍時,代理支持配置為
10.1.2.%
格式的網段。數據庫代理的IP白名單和RDS主實例的IP白名單保持一致。RDS主實例的IP白名單更新,數據庫代理的IP白名單也會同步更新。
在高延遲網絡環境下通過代理地址訂閱Binlog(Binlog Dump)時,Binlog Dump的網絡傳輸吞吐容易成為性能瓶頸,可能導致下游復制延遲堆積問題。建議通過配置直連數據庫節點(在應用程序或服務中直接設置數據庫連接信息)的方式拉取Binlog。
遷移可用區可能會導致就近訪問失效:
遷移可用區后,默認可就近訪問新可用區,原可用區的就近訪問失效。若修改了代理連接地址的目標可用區,使其與默認可用區不一致,則對應可用區的就近訪問失效。示例場景如下:
場景
原代理信息
目標代理信息
代理實例當前可用區
代理地址
就近訪問
代理實例目標可用區
代理地址默認可用區
代理地址目標可用區
就近訪問
場景1:
可用區A + 可用區B
遷移至可用區A + 可用區C
可用區A
代理地址a
可用區A
可用區A
可用區A
可用區A
可用區A
可用區C
失效
可用區B
代理地址b
可用區B
可用區C
可用區C
可用區C
可用區C
可用區D
失效
場景2:
可用區A + 可用區B
遷移至可用區C + 可用區D
可用區A
代理地址a
可用區A
可用區C
可用區C
可用區C
可用區C
可用區E
失效
可用區B
代理地址b
可用區B
可用區D
可用區D
可用區D
可用區D
可用區E
失效
就近訪問功能僅支持獨享型代理的部署形式1,若已開啟就近訪問功能,當要變更為通用型代理或其它部署形式,需要先關閉就近訪問功能,才可以變更配置。如何關閉就近訪問功能,請參見設置就近訪問。關于代理部署架構的信息,請參見代理部署架構。
暫不兼容將代理的網段配置為10.1.2.0/24
。