MySQL主從延遲,導致剛剛更新的資料讀取錯誤,但是商務邏輯上更新資料和讀取資料目前是必須緊跟操作的,如何破?

來源:互聯網
上載者:User
1.現在商務邏輯上是先將一條資料更新狀態為2,然後統計狀態為2的資料。由於MySQL主從延遲,導致資料有時準確,有時不準確
2.更新資料和統計資料在邏輯上是一起的,無法分開。比如我剛存了錢,資料表欄位狀態改為2。那麼我現在需要立即sum一下,使用者總共的錢數,保證使用者總錢數的正確。
3.有什麼解決方案?邏輯上有什麼好的想法可以分開嗎?既保證sum正確,又保證當時狀態下使用者的中錢數?
4.拜託各位大神

回複內容:

1.現在商務邏輯上是先將一條資料更新狀態為2,然後統計狀態為2的資料。由於MySQL主從延遲,導致資料有時準確,有時不準確
2.更新資料和統計資料在邏輯上是一起的,無法分開。比如我剛存了錢,資料表欄位狀態改為2。那麼我現在需要立即sum一下,使用者總共的錢數,保證使用者總錢數的正確。
3.有什麼解決方案?邏輯上有什麼好的想法可以分開嗎?既保證sum正確,又保證當時狀態下使用者的中錢數?
4.拜託各位大神

先更新到資料庫,後更新緩衝。
讀的時候,先讀緩衝,緩衝沒有,再讀資料庫

直接讀取主庫唄

建議先描述你要實現的需求是什麼;
然後你是怎麼實現的;
最後是遇到的是什麼問題。

我總結的幾點辦法:

  1. 如上所述,增加緩衝,或者採用多住多從的資料庫形式,但這個無法根本上解決此類問題。因為主從延遲的問題不可能消滅。

  2. 如上所述,直接讀主庫。

  3. 這個主要是商務邏輯問題,

    1. 技術上可以採用樂觀鎖的方式解決。

    2. 可以給資料庫加事務、復原。

    3. 資料冗餘方式,不採用每天更新資料再統計更新後的資料方式,直接給user添加balance欄位,每次更新這個欄位即可,配合樂觀鎖和事務,完美解決。

    4. 使用者資料一多,sum的效能問題會越來越突出

  4. 不當之處還請大神指教

主從延遲,資料有時間戳記嗎,從機上時間戳記超過主從延遲的資料才能確保是一致的,不一定是最新的,意義不大。主從延遲只是做災備,萬一資料員手賤,把資料刪了,那麼可以從延遲從機中恢複。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.