2008-11-07 58 views
6

我老實說triedthisleftandright但仍然發現我的鏡像服務器,作爲複製奴隸設置仍然滯後。我的應用的用戶羣不斷增長,現在我已經達到了無法保持「關閉」「重新同步」數據庫的程度(即使在週末也沒有)。Binlog MySQL複製是一個「傷害袋」。有沒有什麼好的選擇?

反正,我的問題:是否有任何合理的,負擔得起的,替代二進制複製?我有兩臺服務器,所以不會考慮購買三分之一的負載平衡,除非它是唯一的選擇。

乾杯,

/MP

+0

與其他選擇相比,mysql複製是一個穩定,快速和苗條的解決方案。 booking.com使用令人難以置信的許多mysql實例和從我聽到的級聯複製設置。如果你的網站真的太大了,你可能需要一個專業人員幫助你排除故障,如果你的奴隸不僅僅是硬件上太小。我個人有每秒10k +查詢的設置,沒有奴隸滯後的問題。可能你的複製設置也不完美。 – sjas 2017-07-17 15:29:54

回答

10

你的主人並行執行和你的奴隸串行執行。如果你的主人可以處理1.5小時的插入/更新/在1小時內執行,你的奴隸將落後。

如果您無法找到提高從屬設備寫入性能的方法(更多內存,更快的磁盤,刪除不必要的索引),那麼您的應用程序體系結構就受到了限制。最終,您將遇到一個問題,即您無法實時執行更改,因爲您的主服務器可以並行執行更改。

許多大型網站都會分割他們的數據庫:考慮將您的主從設備分成多個主從設備集羣。然後將您的客戶羣分成這些羣集。當一個奴隸開始落後時,是時候添加另一個羣。

這並不便宜,但除非您可以找到一種方法來並行執行binlog複製執行語句,否則您可能找不到更好的方法。

更新(2017):MySQL現在支持parallel slave worker threads。仍然有很多變量會導致奴隸落後,但奴隸不再需要以連續的順序寫入。選擇保留並行從屬線程的提交順序是一個重要的選項,可以查看從屬設備在任何時間點的確切狀態是否至關重要。

+0

有時您只需要聽到嚴酷的事實 – mauriciopastrana 2008-11-11 22:37:36

+0

所有應用程序都會遇到某種縮放限制。大多數數據庫都是磁盤IO。這聽起來像你的是複製。不利的一面是,你無法購買更大的數據庫服務器來完成工作。從好的一面來看,你可以購買更小型的數據庫服務器:) – 2008-11-12 04:38:45

0

將內存添加到從屬可能會有所幫助。我們從32到128兆,差距或多或少地消失了。但它既不便宜也不足以應付所有情況。

購買第三臺服務器可能不會有太大的幫助,不過,你很可能會得到另一臺滯後的從機。

1

你試過: 1)設置的innodb_flush_log_at_trx_commit = 0 2)SET sync_binlog = 0

雙方將幫助,如果你有一臺服務器出現故障,加快與增加的風險小級別你的奴隸。

相關問題