数据库挂了事物怎么
数据库挂了事物怎么办
1 先检查数据库服务器的硬件,确认数据库服务器的硬件是否正常;
2 检查数据库服务器的 *** 作系统,确认是否有任何异常;
3 检查数据库服务器的网络,确认是否有任何异常;
4 检查数据库服务器的安全策略,确认是否有任何异常;
5 检查数据库服务器的数据库管理系统,确认是否有任何异常;
6 检查数据库服务器的数据库,确认是否有任何异常;
7 如果上述检查都没有发现任何异常,则可以尝试重启数据库服务器;
8 如果重启数据库服务器后仍然无法恢复事务,则可以尝试使用备份数据进行恢复;
9 如果备份数据也无法恢复事务,则可以尝试使用日志文件进行恢复,或者重建数据库。
一般我们希望把一系列的数据作为一个原子 *** 作,这样的话,这一系列 *** 作,要么提交,要么全部回滚掉。
当我们提交一个事务,数据库要么告诉我们事务提交成功了,要么告诉我们提交失败。
数据库为了效率等原因,数据只保存在内存中,没有真正的写入到磁盘上去。如果数据库响应为“提交成功”,但是由于数据库挂掉, *** 作系统,数据库主机等任何问题导致这次“提交成功”的事务对数据库的修改没有生效,那么我们认为这个事务的数据丢失了。这个对银行或者支付宝这种业务场景来说是不能接受的。所以,保证数据不丢失也是数据库选择的一个重要衡量指标
mysql的架构和普通的数据库架构最大的差异在于它使用插件式的存储引擎。数据的存取由存储引擎负责。要了解MySQL数据丢失的问题就需要从MySQL server层和InnoDB目前最流行的支持事务的存储引擎分别来分析了。
3 INNODB事务数据丢失
首先,我们来看一下InnoDB事务数据丢失的情况。
31 INNODB事务基本原理
InnoDB的事务提交需要写入undo log,redo log,以及真正的数据页。专业的介绍可以参考 丁奇 和 云华 的两篇文章。我们这里通俗一点简单介绍一下。
InnoDB跟Oracle非常类似,使用日志先行的策略,将数据的变更在内存中完成,并且将事务记录成redo,转换为顺序IO高效的提交事务。这里日志先行,也就是说,日志记录到数据库以后,对应的事务就可以返回给用户,表示事务完成。但是实际上,这个数据可能还只在内存中修改完成,并没有刷到磁盘上去,俗称“还没有落地”。内存是易失的,如果在数据“落地”之前,机器挂了,那么这部分数据就丢失了。而数据库怎么保证这些数据还是能够找回来列否则,用户提交了一个事务,数据库响应请求并回应为事务“提交成功”,数据库重启以后,这部分修改数据的却回到了事务提交之前的状态。
32 INNODB事务崩溃恢复基本原理
InnoDB和Oracle都是利用redo来保证数据一致性的。如果你有从数据库新建一直到数据库挂掉的所有redo,那么你可以将数据完完整整的重新build出来。但是这样的话,速度肯定很慢。所以一般每隔一段时间,数据库会做一个checkpoint的 *** 作,做checkpoint的目的就是为了让在该时刻之前的所有数据都"落地"。这样的话,数据库挂了,内存中的数据丢了,不用
以上就是关于数据库挂了事物怎么全部的内容,包括:数据库挂了事物怎么、本地数据库有数据另一个数据库丢失、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)