運營同事反饋:MySQL數據庫插入時有新紀錄生成,但是不顯示這條記錄

MySQL數據庫插入時有新紀錄生成,但是不顯示這條記錄

情景再現

如果你負責開發一套cms系統,經過測試人員的專業測試與運營測試,確認有問題後進行上線。該系統上線半年內都沒有問題出現,突然有一天運營過 來跟你反饋,他發佈的資訊文章看不到,而昨天的文章還都在。
你收到反饋後, 立即着手進行檢查,首先看下服務器程序日誌,確認設有問題,然後你自己也對運營發佈的內容進行了操作,發現數據庫有新記錄成就是不顯示當前記錄,你與運維確認過服務器沒有黑客攻擊,或者人爲升級程序。請問運營同事反饋的這個問題可能是什麼原因?如何進行排查解決?

產生原因

以上情景只有主庫和備庫的同步延遲問題可以解釋。(如果前邊沒有測試的話也可能是沒有執行commit()方法)

原因解釋

原因解釋如下:

  1. 使用 update ,進入的是主庫
  2. sql 讀的是路由到主庫的數據(動態路由);
  3. java 線程讀的是從庫(備庫),並沒有完成同步
  4. java 程序最終讀的是從庫,數據庫已同步。

總結:

由於動態路由的存在,數據延遲未同步到數據庫,從而出現了 MySQL 數據庫插入時有新紀錄生成,但是不顯示這條記錄的現象。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章