如果您需要修改資料庫代理串連地址的讀寫屬性,或者不希望使用系統預設的讀權重策略,可以參考本文,RDS PostgreSQL支援調整資料庫代理串連地址的讀寫屬性,並且支援自訂各唯讀執行個體的讀權重比例。
前提條件
已開通資料庫代理服務,具體請參見開通資料庫代理。
您需要已經建立唯讀執行個體 ,才可以設定讀寫屬性,使用讀寫分離功能。建立方法,請參見建立PostgreSQL唯讀執行個體。
讀寫屬性說明
資料庫代理的IP白名單和RDS主執行個體的IP白名單是保持一致的。RDS主執行個體的IP白名單更新,資料庫代理的IP白名單也會同步更新。
讀寫屬性支援設定為讀寫或唯讀。
讀寫:用來支援讀寫分離功能實現業務線性擴充。
該模式下代理串連地址(原代理終端)存取原則中需要至少包含一個主執行個體和一個唯讀執行個體,寫請求都只會發往主執行個體。
唯讀:用來支援唯讀業務,比如報表查詢。
該模式下代理串連地址存取原則中需要至少配置一個唯讀執行個體,主執行個體不會參與路由。
當代理串連地址存取原則的讀寫屬性設定為唯讀時,RDS會根據代理串連地址存取原則中配置的唯讀執行個體輪循分配串連,即一個用戶端串連僅對應到一個唯讀執行個體的一個串連,而主執行個體不會參與到該分配,可用的Business Connectivity總數是所有隻讀執行個體上的串連數之和。
讀寫屬性處理邏輯
讀寫屬性 | 許可權分配方式 | 主執行個體權重 | 正常情況 | 刪除最後一個唯讀執行個體 | 唯讀執行個體全部故障 |
唯讀 | 系統分配或自訂 | 主執行個體權重不可設定 |
|
|
|
讀寫 | 系統分配 | 等於0 具體請參見系統預設讀權重分配規則。 |
|
|
|
自訂 | 大於0 |
|
|
| |
等於0 |
|
|
|
不轉寄:表示在唯讀屬性中,主執行個體不參與唯讀請求的轉寄。
串連報錯:表示在唯讀屬性中,代理終端不可讀不可寫時串連會報錯。
在讀寫入模式下,當主執行個體權重配置為0時,預設不將讀請求轉寄到主執行個體,但是當唯讀節點異常,強制Hint指定,或者開啟了事務拆分的情況下,讀請求會被轉寄到主執行個體。
操作步驟
- 訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。
在左側導覽列單擊資料庫代理。
在串連資訊地區,找到目標代理串連地址(終端)ID,單擊目標代理串連地址右側的修改配置。
在彈出的對話方塊中,勾選讀寫屬性右側的讀寫(讀寫分離)或唯讀(不串連主執行個體,無法接受寫請求)。
在讀權重分配地區,選擇系統分配或自訂。
系統分配:系統根據執行個體規格自動分配各個執行個體的讀權重。後續該主執行個體下新增的唯讀執行個體也會自動按照系統分配的權重加入到讀寫分離鏈路中,無需手動設定。更多資訊,請參見系統預設讀權重分配規則。
自訂:手動設定各個執行個體的讀權重,範圍為0~10000。後續該主執行個體下新增唯讀執行個體的讀權重預設為0,需要您手動修改。
說明執行個體的讀權重越高,處理的讀請求越多。例如,假設主執行個體有3個唯讀執行個體,主執行個體讀權重為0,唯讀執行個體讀權重分別為100、200和200,則表示主執行個體不處理讀請求(寫請求仍然自動發往主執行個體),3個唯讀執行個體按照
1:2:2
的比例處理讀請求。修改本參數即時生效,不會造成業務閃斷。修改完成後,已存在的串連不會斷開重連且讀權重不變,只有新串連才會根據新權重進行分配。
唯讀執行個體釋放後將自動移除權重。
執行個體宕機或者延遲逾時將自動移除權重,執行個體恢複後權重也將自動回復。
您可以在讀請求的SQL中加入
/*FORCE_MASTER*/
,指定該請求被轉寄到主執行個體。如果需要轉寄到唯讀執行個體,則使用/*FORCE_SLAVE*/
。樣本:
/*FORCE_MASTER*/ SELECT * FROM table_name;
相關API
API | 描述 |
查詢資料庫代理詳情。 | |
查詢資料庫代理的代理串連地址資訊。 | |
修改資料庫代理的代理串連地址讀寫屬性和讀權重。 |