首页 > 数据库 >【笔记】数据库、网络故障与恢复

【笔记】数据库、网络故障与恢复

时间:2023-10-18 19:00:30浏览次数:30  
标签:网络故障 事务 恢复 数据库 笔记 故障 事务故障 日志

【笔记】数据库故障与恢复

数据库故障主要分:事务故障、系统故障和介质故障

事务故障

是指事务在运行至正常终点前被终止,此时数据库可能出现不正确的状态。
是由于事务程序内部错误而引起的,有些可以预期,如金额不足等,有些不可以预期,如非法输入、运算溢出等。
类似于手动执行回滚

恢复过程:
1、反向(从后向前)扫描日志文件,查找该事务的更新操作
2、对该事务的更新操作执行逆操作,也就是将日志记录更新前的值写入数据库。
3、重复1,2步骤,直到读到了此事务的开始标记,事务故障恢复就完成了。

事务故障的恢复由系统自动完成,对用户是透明的

系统故障(通常称为软故障)

是指造成系统停止运转的任何事件,使得系统要重新启动。
由特定类型的硬件错误、操作系统故障、DBMS代码错误、突然停电等引起的。

恢复过程:
1、正向(从头到尾)扫描日志文件,找出故障发生前已经提交的事务(这些事务既有BEGIN TRANSACTION记录,也有COMMIT记录),将其事务标识记入重做(REDO) 队列。同时找出故障发生时尚未完成的事务(这些事务只有BEGIN TRANSACTION记录,无相应的COMMIT记录),将其事务标识记入撤销(UNDO)队列
2、反向扫描日志文件,对每个UNDO事务的更新操作执行逆操作,也就是将日志记录中更新前的值写入数据库。
3、正向扫描日志文件,对每个REDO事务重新执行日志文件登记的操作,也就是将日志记录中更新后的值写入数据库。

系统故障是在系统重启之后自动执行的,对用户是透明的。

介质故障(称为硬件故障)

是指外存故障,例如磁盘损坏、磁头碰撞,瞬时强磁场干扰等。
这类故障将破环数据库或部分数据库,并影响正在存取这部分数据的所有事务,日志文件也被破坏。

恢复过程:
需要DBA
1、装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态。
2、转入相应的日志文件副本,重做已完成的事务

介质故障的恢复需要DBA的介入,具体的恢复操作仍由DBMS完成。

网络故障恢复

(1)双主干,当网络发生故障时,辅助网络就会承担数据传输的任务,两条主干线的物理距离应当相距较远,来减少两条线缆同时损坏的概率。
(2)双开关控制技术,可以精确的检测出发生故障的地段,并用辅助路线来分担数据流量。
(3)路由器,为数据指明流动的方向。
(4)通信中件,可以使通信绕过网络中发生故障的电路,通过其他网络连接来传输数据。

标签:网络故障,事务,恢复,数据库,笔记,故障,事务故障,日志
From: https://www.cnblogs.com/jokingremarks/p/17773096.html

相关文章

  • 数据库连接池
    主要目的都是一样的包括套接字连接池避免频繁创建和销毁由来 客户端登录服务器去数据库查询这时就可以把服务器看做是数据库的客户端。一直保持和数据库的连接可以吗?可以但是需要服务器的一个线程来维持,又不做事。耗费资源一个数据库连接需要什么呢不仅少非自愿......
  • 通过SQLserver系统存储过程分离和附加数据库的简单使用
    sp_detach_db 数据库分离sp_detach_db 是SQLServer中的一个系统存储过程,用于卸载数据库。使用这个存储过程可以使得数据库不再与当前SQLServer实例关联。以下是 sp_detach_db 的基本语法:sp_detach_db'database_name';其中 'database_name' 是要卸载的数据库的名......
  • Internet-augmented language models through few-shot prompting for open-domain qu
    Internet-augmentedlanguagemodelsthroughfew-shotpromptingforopen-domainquestionanswering 其实我没怎么正经读过论文,尤其是带实验的,我目前认真读过的(大部头)也就是一些LLM的综述。记录这个文档主要是防止自己读着读着玩手机去了/注意力不集中了跑路了/没记录困惑导......
  • TS 踩坑笔记: 箭头函数添加泛型报错(Error: JSX element ‘T’ has no corresponding
    前言今天给大家分享一个在React项目中使用TypeScript遇到的错误项目背景React+TS的项目配置,项目中关于React组件的使用.tsx后缀,其他单纯的文件使用.ts后缀问题描述在React组件附近定义泛型的箭头函数时产生TS报错警告,原本以为是语法写错了但是实际上在.t......
  • 达梦数据库 -2723: 仅当指定列列表,且SET IDENTITY_INSERT为ON时,才能对自增列赋值
    达梦数据库-2723:仅当指定列列表,且SETIDENTITY_INSERT为ON时,才能对自增列赋值 一、问题背景达梦数据库-2723:仅当指定列列表,且SETIDENTITY_INSERT为ON时,才能对自增列赋值  二、问题原因  三、解决方案        ......
  • 《代码大全》阅读笔记02
    1、以解决问题为导向不仅仅是要完成一个任务;一切的一切都以实际的问题和需求为导向,最终的目的只有一个,而不是一直变换目标,就是解决真正的问题;2、把程序员当人看我们在项目中要记得,这是一个项目团队,团队由不同的个体组成,总是需要磨合的,所以,这就需要我们不仅仅将成员当人看,也要......
  • [vue]精宏技术部试用期学习笔记 II
    精宏技术部试用期学习笔记(vue)router:vue的模拟路由前置准备安装vue-routerpnpmivue-router@4//安装版本4的vue-router可以在package.json文件中查看依赖"dependencies":{"vue":"^3.3.4","vue-router":"4"//这里},新建文件夹/src......
  • Django修改数据库数据的两种方式
    部分代码展示:fromdjango.shortcutsimportrender,HttpResponse,redirectfromapp01importmodelsdefedit_user(request):#获取url问好后面的参数edit_id=request.GET.get('user_id')#查询当前用户想要编写的数据对象edit_obj=models.User.ob......
  • C++模板笔记
    参考文章:https://juejin.cn/post/7078530622527897631模板是C++的泛型编程机制,这种机制可以最大程度复用代码并且不会增加运行时开销模板分为函数模板和类模板函数模板函数模板是对函数的参数进行泛型化,传递给模板函数的类型实参可以是类,也可以是整型值,还可以是模板名比如://......
  • [vue]精宏技术部试用期学习笔记 I
    精宏技术部试用期学习笔记(vue)什么是vue?我个人对vue的理解是把html\css\js三件套融合起来的结构,同时用组件化的思维把一个页面装填起来同时让页面形成树状结构优点是方便多人员维护提高代码复用性如何创建一个vue项目?我这里使用的是vite+vue的轻量化项目,使用pnpm......