本文對常見的讀寫分離問題進行解答。
為什麼修改後的權重沒有生效 ?
修改權重後,建立的串連才會根據新權重進行分配,已存在的串連不會斷開重連。
為什麼各節點的負載不符合配置的讀權重?
若各節點的負載與配置的讀權重不同,主要檢查如下兩個方面:
請求語句是否包含了事務。包含了事務的所有請求只會路由到主庫(包括事務讀)。
是否只用了讀寫分離地址串連資料庫。如果使用了主執行個體地址或者唯讀執行個體地址,這些地址收到的請求不會按權重分配。
為什麼主庫讀權重為0時還有大量讀請求路由到主庫?
若讀請求路由到主庫,主要由如下兩個原因造成:
包含了事務的所有請求只會路由到主庫(包括事務讀)。
所有被分配讀權重的唯讀執行個體處於不可用狀態或其延遲時間超過了您所設定的延遲閾值,系統將其判定為不可用狀態。
讀寫分離如何確保資料讀取的時效性?
詳情請參見讀寫分離如何確保資料讀取的時效性。
如何通過API設定讀權重?
使用API修改延遲閾值和讀權重請參見修改讀權重和延遲閾值。
如何選擇讀寫分離地址類型?
若您的應用程式部署在相同Virtual Private Cloud內,建議使用內網地址,安全高效;若您的應用程式部署在本地或其他網路內,可以使用外網地址進行串連。切換方法請參見切換讀寫分離地址類型。
讀寫分離地址和主執行個體內外網地址有什麼區別?
開通讀寫分離後將會產生一個讀寫分離地址,將其配置在應用程式中,用戶端發出的請求到達該地址後會根據請求類型和執行個體權重自動分配給內部的各個執行個體。
應用程式中的地址如果是主執行個體的內網或外網地址,則請求只會交給主執行個體,而不會交給唯讀執行個體處理,必須在程式中添加主執行個體及各個唯讀執行個體的地址及權重,才能達到讀寫分離的效果。
讀寫分離地址可以修改嗎?
讀寫分離地址暫不支援修改,當前讀寫分離地址是固定的,不會因為多次關閉/開啟讀寫分離而變化,所以不用多次更改應用程式,降低了維護成本。
添加唯讀執行個體的時候會影響主執行個體嗎?
建立唯讀執行個體的時候是從備執行個體複製資料,因此對主執行個體不會產生影響。
唯讀執行個體的讀權重設定為0後,還可以訪問它嗎?
通過讀寫分離地址無法訪問讀權重為0的唯讀執行個體,只能使用唯讀執行個體的內網/外網地址進行訪問。通常這種需求是為了將某個唯讀執行個體僅提供給某個業務使用。
已開通共用代理的RDS MySQL執行個體,需要釋放所有的唯讀執行個體,共用代理會有影響嗎?
所有已開通共用代理的RDS MySQL執行個體,在釋放最後一個唯讀執行個體時,會自動下發刪除代理讀寫串連地址的操作。如果此時有用戶端使用該串連地址,會造成業務訪問失敗等影響。