2017-10-19 85 views
0

我們有很多帶有POS系統的電腦,每個電腦都有一個本地數據庫,在這裏我們註冊所有的銷售數據,並且在一天結束時,我們將數據存入主數據庫,現在我們已經觀察到,在某些計算機上,MySQL會像回滾一樣,例如,當我們在我們的表配置中安裝系統時,會有自動增量ID,並且設置第一個銷售額爲id 1000,並且此id更改在1001,1002,1003等的另一個銷售中。但是有一天,當ID是5000時,數據庫重置表中的所有數據,並在1000重新開始,你有一些想法會發生什麼。MySql自動回滾幾次

謝謝!

回答

0

需要更多的細節來了解發生了什麼。這裏有一些信息可以解釋它:

在MySQL關閉或崩潰(電源故障等)並重新啓動後,首先要對每個InnoDB表進行AUTO_INCREMENT這樣計算下一個ID爲SELECT MAX(id)+1 FROM tbl

即使這並不能說明你的情況,這裏是會咬你一個疑難雜症:

  1. 創建ID 1234(和0​​它)
  2. 刪除1234(與COMMIT
  3. 重啓MySQL (優雅或因崩潰)
  4. 要創建的下一個ID將是1234.如果您認爲某個ID不能被重用,那麼這可能很糟糕。

如果重新啓動沒有發生,第4步將創建1235,並且1234將永遠被「燒掉」。

(注:8.0版改變了這種行爲。)

+0

的問題是,不僅與ID發生,與所有的數據,插入3個月前的所有記錄已被刪除,數據庫開始像第一次已配置,如回滾 –

+0

如果沒有其他操作(如DBA重新加載時間點轉儲),則不會發生這種情況。是否涉及複製?你是否保護「SQL注入」?你的網站被黑客入侵了嗎?你有binlogs回溯到足夠遠以尋找一個頑皮的'DELETE'嗎?等等 –

+0

不好意思,你能告訴我怎樣才能訪問binlogs,我是這個主題的初學者,謝謝 –