如果您的主實例負載較高,或在發生主動切換類的運維動作時有防閃斷需求,可以使用RDS MySQL數據庫代理功能,通過讀寫分離對業務流量進行負載均衡,降低主實例CPU負載壓力,還可以通過連接保持(防止閃斷)和SSL加密功能提高實例的可用性和安全性。
RDS MySQL數據庫代理是位于數據庫服務端和應用服務端之間的網絡代理服務,用于代理應用服務端訪問數據庫時的所有請求。您可以連接數據庫代理訪問地址使用數據庫代理的各項功能,以簡化RDS MySQL數據庫實例的連接管理。RDS MySQL數據庫代理具有高可用、高性能、可運維、簡單易用等特點。
關于RDS數據庫代理的使用問題和更多相關信息,歡迎加入用戶釘釘群(106730000316)進行咨詢、反饋和交流 。
適用場景
有讀寫分離需求的業務場景。
發生主動切換類的運維動作時或故障場景下,有防閃斷需求的場景。
事務內有大量請求,導致主實例負載過高的場景。
連接數過多導致主實例負載過高的場景。
短連接為主的業務。
純只讀和有隔離需求的業務。
說明假設您購買了包含1個主實例和4個只讀實例的RDS實例,現在需要將A業務(純只讀)和B業務(可讀可寫)都連接至該實例。您可以將只讀實例1和只讀實例2組成代理終端A(只讀模式)提供給業務A,主實例、只讀實例3和只讀實例4組成代理終端B(讀寫模式)提供給業務B,以實現兩個業務在數據庫使用上的物理隔離,避免相互影響。
基本概念
代理連接地址(原代理終端)
代理連接地址(原代理終端)是數據庫代理的核心,支持自定義連接地址訪問策略、修改連接地址前綴和端口號等。通過數據庫代理連接地址連接RDS實例可以使用數據庫代理的高級功能。
開通數據庫代理后,每個RDS MySQL 實例最多支持7個代理連接地址(原代理終端),每個代理連接地址可以申請1個內網地址和1個外網地址,支持自定義配置每個代理連接地址的訪問策略,以滿足不同的業務場景,增強業務的靈活性。具體操作,請參見配置數據庫代理連接地址訪問策略、連接數據庫。
讀寫分離
讀寫分離指通過代理連接地址實現讀寫請求的自動轉發。
少寫多讀的應用場景可能會對主實例造成巨大的讀取壓力,進而影響到業務。讀寫分離功能可使寫請求自動轉發到主實例,讀請求自動轉發到各個只讀實例,實現讀寫請求的自動分流,減輕主實例的壓力。更多信息,請參見什么是讀寫分離。
連接保持
RDS MySQL代理的連接保持功能,即在發生實例切換類的操作時,能保持應用程序與代理的連接不斷開,用戶通過代理地址訪問數據庫的應用程序不會收到連接斷開的報錯。更多信息,請參見設置連接保持。
事務拆分
數據庫代理默認開啟事務拆分功能,能夠將事務內寫操作之前的讀請求轉發到只讀實例,降低主實例負載。更多信息,請參見設置事務拆分。
連接池
有效解決連接數過多或短連接業務(例如PHP)頻繁建立新連接導致實例負載過高的問題。更多信息,請參見設置連接池。
可用區
指代理節點和代理連接地址所在的可用區,建議數據庫代理可用區、代理連接地址可用區和RDS實例的可用區保持一致,以減少跨可用區訪問帶來的網絡延遲。開通代理后,支持遷移代理可用區。
就近訪問
數據庫代理多可用區部署時,開通就近訪問功能,支持用戶指定應用程序連接到同一可用區內的代理節點,實現應用程序、代理節點、只讀節點均在同一可用區,最大程度降低延遲。具體操作,請參見設置就近訪問。
SSL加密
對數據庫代理連接地址進行SSL加密,可以保證數據的傳輸安全。具體操作,請參見設置代理SSL加密。
代理部署架構
RDS MySQL數據庫代理支持單可用區部署和雙可用區部署。
單可用區部署:指所有代理節點位于同一可用區。
雙可用區部署:指代理節點位于兩個不同可用區,實現跨可用區容災,不額外收費。
部署形式
代理部署形式包含以下三種:
部署形式1
部署形式2
部署形式3
部署形式 | 可用區 | 代理節點總個數 | 規格限制 | 支持代理類型 |
部署形式1 | 雙可用區 | 4 | 同一可用區內,代理節點規格必須一致。 | 獨享型 |
部署形式2 | 雙可用區 | 2 | 兩個節點規格必須一致。 | 獨享型、通用型 |
部署形式3 | 單可用區 | 2 | 同一可用區內,代理節點規格必須一致。 | 獨享型、通用型 |
開通數據庫代理后支持變更代理部署架構,詳情請參見變更代理配置。
默認架構及可用區
代理默認架構及可用區遵循以下邏輯:
RDS實例部署形式 | 代理類型 | 默認代理部署形式 | 默認代理可用區 |
單可用區部署 | 獨享型 | 部署形式3 | 默認和RDS實例主節點的主可用區保持一致。 |
通用型 | 部署形式3 | ||
雙可用區部署 | 獨享型 | 部署形式1 |
|
通用型 | 部署形式2 |
代理容災機制
部署形式1
當發生代理節點級別故障時,故障節點不再承擔流量,流量將轉發到同一可用區內的其他未發生故障的代理節點。
當發生可用區級別故障時,由于多可用區部署,具備跨可用區容災的能力,業務流量將轉發到未發生故障的可用區代理節點。當故障可用區的代理節點恢復后,新增業務流量將轉發到恢復后的代理節點中,存量長連接路由保持不變,等待自動消亡。
說明如果開通了就近訪問功能,出于可用性高于訪問延遲的考慮,當發生可用區級別故障時就近訪問功能可能會失效,優先保障代理實例整體的可用性。
部署形式2
由于代理是雙可用區兩節點部署,代理節點級別的故障等同于可用區級別的故障,當發生故障時,業務流量將轉發到另一個未發生故障的可用區內的代理節點。
部署形式3
當發生代理節點級別故障時,故障節點不再承擔流量,業務流量將全部由同一可用區內的另一個未發生故障的代理節點承擔。
當發生可用區級別故障時,代理將無法提供服務,需要等可用區機房故障恢復,或手動變更代理到跨可用區部署形式。
代理類型介紹
RDS MySQL 數據庫代理提供兩種代理類型:通用型和獨享型。
通用型:共享CPU物理資源,不收取任何費用,更經濟。
獨享型:獨占CPU物理資源,按量計費,具有更好的性能穩定性。
兩種類型的差異和支持的功能如下表所示:
對比項 | 通用型 | 獨享型 |
計費類型 | 免費 | 按量計費,詳情請參見費用說明。 |
資源類型 | 共享CPU物理資源 | 獨占CPU物理資源,具有更好的性能穩定性。 |
代理單節點規格范圍 | 1~8核 | 1~16核 |
配套RDS MySQL實例 | 配套RDS MySQL高可用系列和集群系列的實例 | |
部署架構 | 支持部署形式2、3。詳情請參見代理部署架構。 | 支持部署形式1、2、3。詳情請參見代理部署架構。 |
單可用區部署 | 支持 | |
雙可用區部署 | 支持 | |
就近訪問 | 不支持 | 支持 |
讀寫分離 | 支持 | |
事務拆分 | 支持 | |
連接地址(原代理終端) | 單個RDS MySQL實例支持1~7個代理連接地址(每個代理連接地址支持申請1個內網地址和1個外網地址) | |
主動切換的連接保持 | 支持 | 支持 |
故障切換的連接保持 | 不支持 | 支持 |
連接池 | 支持 | |
SSL加密 | 支持 |
代理規格和代理單節點規格的關系:
代理規格 = 所有代理節點規格求和
。例如,獨享型雙可用區(可用區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
。
注意事項
請參見數據庫代理注意事項。
費用說明
請參見數據庫代理費用說明。
使用方法
請參見使用數據庫代理。