前几天新发布的一套程序发生了一次意外的操作失误,程序员修改某个表的指定范围的指定字段的时候,误操作导致更新操作没有执行where,直接引起该表指定字段全部变为更新字段,为了解决这个问题,特意使用了事务日志的还原,觉得有必要写一个流程这样以后新程序员遇到问题的时候不至于手忙脚乱,下面就将具体流程写出来大家看一下,初学者看看就行了。
1.首先更新前的数据表
可以看到第二个字段基本上为null。
2.更新及更新后的情况
更新后由于没有where条件直接导致更新了表的所有记录行。
这个时候就是关键的时候首先这个时候不要慌乱做一些导致没法还原的错误操作等等,第一点冷静分析有没有数据备份。万幸的时候我们有良好的数据备份机制,每天定时执行自动的数据备份计划,而且是完整备份,那接下来就是如何处理这个问题。
3.第一步就是打开数据库备份事务日志,注意的是要切记事务日志的选项里面要选择备份至末尾,并使数据库处于还原状态。
3.然后可以看到还原状态数据库的这样的标志,进行数据库事务还原
此处的要点是选择目标时间一定要选择错误操作的时间点之前的时间,而不是事务日志备份的时间以及完整备份的时间之后。
4.还原后查看数据表
总算是能够回到之前的状态。谢天谢地
总结:
在实际的环境中难免有误操作,甚至恶意的操作引起的种种数据库问题,这个时候就要提醒我们一定要建立好良好的备份机制,我的建议就是对于生产数据库进行定期的完整备份,当然为了尽量减少误操作和还原时间,在完整备份周期里面还可以加入事务日志备份来提高效率。除此之外,还有一点我这里没有体现也是很重要的一点对于生产数据库而言,进行事务日志还原的时候,一定要注意最好是采用将新建一个测试实例针对新的数据库实例进行数据还原然后根据还原事务日志的结果来还原正式数据库的数据表,这样做不仅可以对错误操作进行了修复同时也保证了其他表生产数据的完整性,最大限度的减少了错误可能的发生。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/119754.html原文链接:https://javaforall.cn