如何提升mysql replication的效能&&多線程傳輸二進位日誌

來源:互聯網
上載者:User

標籤:master   memcached   replication   parallel   

如何提升replication的效能:


延遲 :


對於mysql replication來說,在沒有發生故障的情況下,出現master與slave資料不同步,延遲分為以下兩種情況:


經常性延遲   : 非同步同步的資料差距比較大 ,周期性的,迴圈。

暫時性延遲   : 突發情況,導致延遲 

其主要原因就是:


網路頻寬

I/O


如何減少replication延遲??


1,最好使用內網或者專線鏈路傳輸binlog資料 (千兆網卡、還不夠的話,bounding 技術,擴充頻寬) 在my.cnf中強制使用內網ip傳輸資料bind-address=ip

2,將二進位儲存在獨立的儲存介質上(提升I/O)

3,買多核CPU,使用多線程方式傳輸二進位日誌 ()

4,如果二進位日誌不是row格式,則儘可能不要再insert 或者update的時候使用select ,statement模式會給master傳輸二進位時候造成大的壓力

5,想盡辦法減少master的寫I/O(memcached)(既要寫自己的二進位日誌,也要負責讀自己的二進位日誌寫給slave伺服器),master上的I.O越低,越能快的將binlog傳輸給slave、

   加memcached 緩衝層,資料庫上次做個緩衝池放到記憶體中,由memcached管理,周期性的將資料同步給資料庫,把大並發的寫操作,合并成小量的寫操作。以此減少master寫I/O


架構設計1:

主從伺服器可以使用不同的儲存引擎,master上使用innodb,利用事務,行鎖等進階鎖特性,slave上使用MYISAM,讀效能更好,節省記憶體,容易備份。還可以使用不同的資料類型,例如


master上用varchar,slave上用char。不僅節省空間的,還可以使用myisam的靜態表特性。

M-S--Muti SLAVE方案中,中繼slave還可以使用blackhole儲存引擎,blackhole儲存引擎值記錄日誌,不寫資料,此特性可以讓中繼日誌效能提升很多,但是,這種方案不支援GTIDs模式下的


replication,因為blackhole只能搭配statement格式的二進位日誌使用,row和mixed格式都不支援。

在讀寫分離中,主存伺服器採用不同索引採用不同方案,master可以只保留主鍵或者唯一索引等保證資料關係的索引,而slave針對查詢做索引最佳化、


架構設計2:


讓更新頻繁,且需要即時的資料查詢放到master上,再通過持久化session,讓發生修改的使用者先看到結果,其他人等待同步完後同步replication, 


如果開發做不到,用下面的memcached,在資料之前加上memcached

讓使用者對資料庫的更改先儲存到memcached中,memcached是一種記憶體中的儲存引擎(獨立第三方技術),由於記憶體的讀寫效能很高 ,可以把讀寫特別頻繁的更新資料儲存到這裡,每隔5分鐘


,再把資料同步到master,對於另一個用戶端來說,讓他優先到master找資料,即在master上的memcached中讀資料,在讀slave。這樣可以優先將更改的資料由記憶體返回給使用者,這樣降低了


降低硬碟IO,對於那些已經同步後資料把他分離到slave,這樣master就可以轉們做有關於的資料更新的寫操作,完全分離了master的讀。


動態緩衝是講使用者請求比較頻繁的動態資料緩衝到memcached中,使得後續的訪問使用者可以直接從memcached中取資料






replication容量:

是指:replication延遲程度、

將replication暫停一段時間(M),再重新開啟,並觀察slave多久可以達到於master一致(N)

replication容量=N:M

建議保持容量在3倍以上,即1:3 (1小時的M,20分鐘的N)



多線程傳輸二進位日誌:

mysql5.6開始支援多線程方式傳輸二進位日誌

只能工作在GTIDs 模式下

只有對不同的庫執行的操作才能採用多線程傳輸。同一個庫不同表的操作只能單獨用單進程傳輸。 

my.cnf

[mysqld]

slave-parallel-workers=N   預設是0 表示不開啟 線程數

N 根據CPU的核心數來決定,幾核就寫幾,和資料庫的數量一一對應,幾個庫就是幾個線程來傳輸二進位日誌 ,qps上萬的話,多線程傳輸會有很明顯的效能提升

 




本文出自 “crazy_sir” 部落格,請務必保留此出處http://douya.blog.51cto.com/6173221/1606236

如何提升mysql replication的效能&&多線程傳輸二進位日誌

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.