mysql讀寫分離常見方式 mysqlproxy是怎么解決讀寫分離延遲的?
mysqlproxy是怎么解決讀寫分離延遲的?我以前做過Oracle TimesTen復(fù)制,所以我可以給你一個參考。像Oracle這樣的數(shù)據(jù)庫對于1對1的同步速度非???,但是當(dāng)它需要支持3個以上的節(jié)點
mysqlproxy是怎么解決讀寫分離延遲的?
我以前做過Oracle TimesTen復(fù)制,所以我可以給你一個參考。像Oracle這樣的數(shù)據(jù)庫對于1對1的同步速度非常快,但是當(dāng)它需要支持3個以上的節(jié)點時,由于快速的復(fù)制/確認機制,內(nèi)存讀寫和網(wǎng)絡(luò)傳輸數(shù)據(jù)的量會非常大。對于三個以上節(jié)點的數(shù)據(jù)庫同步,首先要考慮自己編寫一個程序,然后在每個節(jié)點上運行,使之相互同步。我原來為一家國外電信運營商寫了一個程序,6個節(jié)點,非常穩(wěn)定。由于Oracle不支持這種同步,我個人懷疑MySQL是否支持這種同步。后來,數(shù)據(jù)庫被設(shè)計成以下模式:三個主機通過我的程序相互同步。在本地,分別設(shè)置主/從模式,并使用數(shù)據(jù)庫的復(fù)制進行相互備份。每秒處理約3000個事務(wù)。
MySQL主從復(fù)制能完美解決數(shù)據(jù)庫的單點問題嗎?為什么?
使用主從時,放棄了強一致性。由于受試者只問一個問題,我們不考慮訪問次數(shù)的問題。換句話說,假設(shè)主從復(fù)制可以完全支持當(dāng)前的系統(tǒng)訪問。)
通用數(shù)據(jù)庫主從設(shè)置:
主數(shù)據(jù)庫可以讀寫
即系統(tǒng)可以同時從主數(shù)據(jù)庫和從數(shù)據(jù)庫獲取數(shù)據(jù)。數(shù)據(jù)寫入主庫后,會自動同步到從庫。
這構(gòu)成了一個簡單的分布式系統(tǒng)。根據(jù)cap定理,三個中只能選擇一個。如果一致性很強,則不會提高系統(tǒng)的可用性,反而會降低系統(tǒng)的可用性。
讓我們看看上面的主從結(jié)構(gòu)中可能出現(xiàn)什么問題:
系統(tǒng)寫入主數(shù)據(jù)庫,然后從主數(shù)據(jù)庫進行查詢。這是一個單點數(shù)據(jù)庫,沒有影響。
-如果數(shù)據(jù)已同步,則沒有影響
-如果數(shù)據(jù)未同步,則會查詢舊數(shù)據(jù)
-如果同步有問題,則會斷開主設(shè)備和從設(shè)備的連接。如果系統(tǒng)無法感知它,那么查詢可能總是舊數(shù)據(jù)。這里我們需要監(jiān)視同步。當(dāng)同步出現(xiàn)問題時,我們應(yīng)該及時處理
掛斷庫。主數(shù)據(jù)不能與從數(shù)據(jù)同步。如果主從交換機是自動的,單點故障的概率只會降低50%(如果主數(shù)據(jù)庫或備用數(shù)據(jù)庫發(fā)生故障,并且沒有人恢復(fù))。
如何解決數(shù)據(jù)庫讀寫分離的時間延時?
通常少量延遲不是問題。如果要實現(xiàn)完全同步,會影響主數(shù)據(jù)庫的性能。只需確保從數(shù)據(jù)庫是某個時間點上主數(shù)據(jù)庫的快照。
如果您想更具體,您需要詳細描述您的應(yīng)用場景