2017-10-19 79 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,我是这个主题的初学者,谢谢 –