閱讀587 返回首頁    go 群英


DRDS讀寫分離__開發手冊_分布式關係型數據庫 DRDS-阿裏雲

DRDS的讀寫分離功能是一種對應用透明的讀寫分離實現,應用在不需要修改任何代碼的情況下,隻需要在DRDS控製台中調整讀權重,即可將流量按照需要的比例在主實例與多達5個隻讀實例之間調整。寫權重則統一走主實例,不分流。根據我們的測試,添加隻讀實例帶來的讀性能提升是線性的,也就是掛載一個隻讀實例,讀性能提升至原來2倍,掛載2個隻讀實例為單個主庫的3倍等,不過需要提醒的是,落到隻讀實例上讀所操作的數據都是從主實例上異步同步的,延遲在毫秒級別,所以個別要求實時性的SQL請通過DRDS hint 指定主庫執行。

DRDS的讀寫分離指的是對事務外的查詢請求做讀寫分離, 事務中出現寫請求後, 當次事務中所有讀請求會走到主庫,而不會按照設置的讀寫分離權重

讀寫分離架構示意圖

開啟讀寫分離

  1. 進入DRDS控製台並進入需要做讀寫分離的DRDS數據庫,點擊左側邊欄「容量管理」,如果沒有隻讀實例,點擊右側添加隻讀實例連接,目前RDS能在一個主實例下掛5個隻讀實例。如果已經有購買隻讀實例,DRDS也能檢測到。

容量管理頁麵內容

實際購買頁

添加隻讀實例

  1. RDS隻讀實例初始化後,在DRDS容量管理裏麵展開RDS實例,能夠看到對應的RDS隻讀實例,點擊右側 設置讀策略。

讀權重設置入口

DRDS默認提供了3種策略,每種策略都會有不同的讀權重分配,用戶也可以自定義,根據具體需求進行選擇

設置讀權重

連接DRDS查看實際讀流量分布

你可以通過連接DRDS執行show node指令查看實際讀流量分布。並且頁麵上的讀權重修改,會準實時影響這個讀流量的分布。

  1. mysql> show node;
  2. +------+------------------+-------------------+------------------+---------------------+--------------------+
  3. | ID | NAME | MASTER_READ_COUNT | SLAVE_READ_COUNT | MASTER_READ_PERCENT | SLAVE_READ_PERCENT |
  4. +------+------------------+-------------------+------------------+---------------------+--------------------+
  5. | 0 | USERDATABASE_RDS | 10 | 2 | 83% | 17% |
  6. +------+------------------+-------------------+------------------+---------------------+--------------------+
  7. 1 row in set (0.00 sec)

以上各列分別表示 一組讀寫庫 ,一段時間內的主庫讀計數,從庫讀計數,主庫讀占比,從庫讀占比。

一組讀寫庫 和 一組讀寫實例(控製台展示的) 是多對一的關係,命令行查到的信息比控製台更加細致(數據分片級別)。

使用DRDS hint 指定主庫或者隻讀實例執行SQL

在SQL前加上注釋能夠讓SQL在指定庫上進行執行:

  1. /*TDDL:SLAVE*/select * from tab where seller_id=123

非拆分模式下的讀寫分離使用方式

用戶在DRDS控製台上創建DRDS數據庫時,在選定一個RDS實例的情況下,可以選擇將該RDS實例下的一個數據庫直接引入DRDS做讀寫分離,不需要做數據遷移,但同時該DRDS數據庫上也不能做水平拆分。

使用DRDS讀寫分離注意事項

  1. RDS隻讀節點過期或者需要下線需要手動把讀權重置為0,否則流量會繼續走到原有隻讀節點,並且失敗。
  2. 讀寫分離是以「DRDS數據庫」為基本單位的,如果同一個RDS隻讀實例在多個DRDS數據庫上使用,需要在每個DRDS數據庫上都將其權重設置為0。

最後更新:2016-11-23 17:32:28

  上一篇:go DRDS DDL語句__開發手冊_分布式關係型數據庫 DRDS-阿裏雲
  下一篇:go DRDS平滑擴容__開發手冊_分布式關係型數據庫 DRDS-阿裏雲