在雙主或者多主的情況下,主與主之間需要同步,在高併發的情況下,可能會出現同步失敗的現象。那麼此時就出現了主與主之間不一致的問題。
那麼為什麼會出現主主不一致呢,也就是說為什麼主與主之間會同步失敗呢?通常是主主同步時主鍵衝突引起的,比如說主庫使用的是自增id,如果同時來了兩個請求分別到資料庫主a和資料庫主b,那麼兩者都各自增了1,比如是4,那麼主a會同步主a的id為4的記錄給主b,主b頁會同步主b的id為4的記錄給主a,產生了主鍵衝突,導致資料丟失。
方案一:資料庫的自增主鍵不同初始值,相同增長步長
為了避免主主不一致,核心就是避免主鍵衝突,資料庫層面有乙個簡單的做法:不同初始值,相同增長步長。
圖中就是乙個簡單的例子,左邊初始為1,步長為2,那麼剛好就都是奇數主鍵,右邊初始為2,步長為2,那麼剛好都是偶數主鍵,兩庫同步之後就是全量資料,不會有主鍵衝突。
但是這樣子會給運維造成負擔,畢竟資料庫配置不一樣就需要額外的管理成本。
方案三:影子主不服務
其實就是高可用裡說的keealived+vip的方式,讓乙個主變為影子主,它只在對外提供服務的主庫掛了的時候接替它上任,這就不會發生不一致的情況,但是資源使用率只有50%
SequoiaDB 巨杉資料庫主備一致性
在分布式系統中,一致性是指資料在多個副本之間資料保持一致的特性。sequoiadb 巨杉資料庫支援不同級別的主備一致性策略,以適配不同的應用場景。使用者可根據業務對資料安全性和服務可用性的要求,選擇不同的一致性策略。當發生寫操作時,資料庫會確保所有複製組節點都同步完成才返回。寫操作處理成功後,後續讀...
資料庫一致性
資料庫一致性 database consistency 是指事務執行的結果必須是使資料庫從乙個一致性狀態變到另乙個一致性狀態。保證資料庫一致性是指當事務完成時,必須使所有資料都具有一致的狀態。在關係型資料庫中,所有的規則必須應用到事務的修改上,以便維護所有資料的完整性。保證資料庫的一致性是資料庫管理...
MySQL雙主一致性架構優化
一 雙主保證高可用 mysql資料庫集群常使用一主多從,主從同步,讀寫分離的方式來擴充資料庫的讀效能,保證讀庫的高可用,但此時寫庫仍然是單點。在乙個mysql資料庫集群中可以設定兩個主庫,並設定雙向同步,以冗餘寫庫的方式來保證寫庫的高可用。二 併發引發不一致 資料冗餘會引發資料的一致性問題,因為資料...