阿里雲RDS讀寫分離數據查詢延遲解決

 

mysql使用RDS做數據主從讀寫分離。在使用的過程中發現部分業務對其他服務以來嚴重。但是由於系統不是採用微服務的架構,造成部分數據插入數據庫後,後續操作讀取數據庫沒有查詢到前面插入的數據。查看阿里雲服務器找到了一個解決方案:即在sql語句前增加/*FORCE_MASTER*/ 註釋。rds就會自動讀主庫。詳細介紹如下:

阿里雲內部網絡會確保同步日誌在主實例和只讀實例間的實時傳輸,正常情況下只讀實例不會有延遲產生。但受限於 MySQL 本身的複製機制,若同步日誌的應用時間較久,會產生數據同步的延遲,這個是 MySQL 尚無法在技術手段上規避的問題。爲減小延遲,建議您選用規格不小於主實例的只讀實例,從而確保有足夠高的性能來應用同步日誌。

RDS 讀寫分離鏈路支持用戶設置對延遲的接受閾值。在讀寫分離體系下,當某個只讀實例的延遲超過該閾值時,系統會自動確保不再轉發任何請求至該實例,而將請求轉發至其餘延遲閾值範圍內的實例。當所有隻讀實例均超過延遲閾值時,若主實例的讀請求處理權重不爲 0,則所有 selcet 請求都將發往主實例處理;若主實例設置的讀請求處理權重爲 0,則會返回讀請求處理失敗的結果。

在使用讀寫分離過程中,若您需要某些查詢語句獲取實時性的數據,可通過 Hint 格式將這些查詢語句強制轉發至主實例執行。RDS 讀寫分離支持的 Hint 格式爲 /*FORCE_MASTER*/,指定後續 SQL 到主實例執行。例如,在如下語句前加入 Hint 後,不論權重如何設置,該語句一定會路由到主實例上執行。

  1. /*FORCE_MASTER*/ SELECT * FROM table_name;

 

阿里雲官方文檔地址:

https://help.aliyun.com/knowledge_detail/52221.html?spm=5176.7854500.2.3.NqEOh2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章