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