一个大事务,有很多更新,现在被回滚了,但是又着急关机重启,怎么办才好?

Posted 周万春

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个大事务,有很多更新,现在被回滚了,但是又着急关机重启,怎么办才好?相关的知识,希望对你有一定的参考价值。

一个大事务,有很多更新,现在被回滚了,但是又着急关机重启,怎么办才好?


1、首先,尽量避免在mysql中执行大事务,因为大事务将会带来主从复制延迟等问题。

2、大事务被kill,MySQL会自动进行回滚操作,通过show engine innodb status的TRANSACTIONS可以看到ROLLING BACK的事务,并且在回滚操作的时候仍然会持有相应的行锁。

3、此时如果强行关闭MySQL,等到MySQL再次启动后,仍然会进行回滚动作。

4、因此,为确保数据安全,建议还是耐心等待回滚完成以后再进行关机重启。关机重启前,可以调低innodb_max_dirty_pages_pct让脏页尽量刷新完毕,并且关闭innodb_fast_shutdown.

5、假如实在没有办法需要关机的情况下,可以kill -9先关闭MySQL,前提是需要设置双一保证事务安全,否则可能丢更多事务数据。然后重启实例后innodb会自行crash recovery回滚之前的事务。

PS,kill -9是高危操作,可能导致MySQL无法启动等不可预知的问题,请谨慎使用。

 

以上是关于一个大事务,有很多更新,现在被回滚了,但是又着急关机重启,怎么办才好?的主要内容,如果未能解决你的问题,请参考以下文章

为什么catch了异常,但事务还是回滚了?

为什么catch了异常,但事务还是回滚了?

数据库隔离级别(这位大哥写的清楚)

什么是脏数据

如何保持MySQL和Redis的一致性?

如何保持MySQL和Redis的一致性?