zoukankan
html css js c++ java
数据库 的 恢复的实现
数据转储
转储是非常耗时的操作,不能频凡的进行。DBA应该根据数据库使用的情况确定一个适当的转储周期。
转储可分为两类:
静态转储
和
动态转储
静态转储:是在系统中无运行事务时进行的转储操作。
即转储操作开始的时刻,数据库处于一致性状态,而转储期间不允许(或不存在)对数据库的任何存取、修改活动。
显然静态存储得到的一定是数据一致性的副本。缺点:降低数据库的可用性。
动态转储:是指转储期间允许对数据库进行存取或修改。
即转储何用户事务可以并发执行。
动态转储可以克服静态转储的缺点,它不等待正在运行的用户事务结束,也不会影响新事物的运行。但是,转储结束时候援副本上的数据不能保证正确有效。例如:在转储期间,某个时刻T1,系统把数据A = 100转储到磁带上,而在下一时刻T2,某一事务将A改为200。转储结束后,后备副本上的A已经是过时的数据了。
为此,必须把转存期间各事务对数据库的修改活动登记下来,
建立日志文件
。这样,后援副本加上日志文件就能把数据库恢复到某一时刻的正确状态。
转储还可以分为海量转储和增量转储两种方式。
海量转储是指每次转储全部数据库。
增量转储则指每次只转储上次转储后更新过的数据
从恢复角度看,使用海量转储得到的后副本进行恢复一般来说回更方便些,但如果数据库很大,事务处理又十分频繁,则增量转储方式更实用有效。
数据转储方式:海量转储和增量转储
,
数据转储的状态:静态转储和动态转储
,关系如下图:
登录日志文件
日志文件的格式内容
日志文件是用来记录事务对数据库的更新操作的文件。日志文件主要又两种格式:以记录为单位的日志文件和以数据块为单位的日志文件。
登录日志文件:
登记日志文件时必须遵循两条原则:
1、登记的次序严格按并发事务执行的时间次序
2、必须先写日志文件,后写数据块。
对数据库的修改写到数据库中和把表示这个修改的日志记录写到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个写操作只完成一个。如果先写了数据库修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改了。如果先写日志,但没有修改数据库,按日志恢复数据库时只不过是多执行一次不必要的UNDO操作,并不会影响数据库的正确性。所以为了安全,一定要先写日志文件,即首先把日志记录写到日志文件中,然后写数据库的修改。这就是“先写日志文件”的原则。
查看全文
相关阅读:
3名百度 ,京东,腾讯被辞退的高级Android工程师现在怎么了?30岁真的是“罪”吗
Python 开发者在迁移到 Go 前需要知道的事情
centos7 常用命令--查看当前用户的4种方法
Centos7找不到ifconfig和netstat命令
Centos 7 修改日期和时间的命令
如何利用MobaX同时处理多台虚拟机输入相同命令如何利用MobaX同时处理多台虚拟机输入相同命令
配置坑了我好久:Logback按天生成文件失效
quartz系列文章
SpringBoot使用多实例QUARTZ出现重复执行问题
IDEA多个springboot项目启动修改端口
原文地址:https://www.cnblogs.com/gxcstyle/p/6881361.html
最新文章
配置zabbix自动注册客户端
zabbix 监控windows
zabbix3.0.9邮件告警
CSS3 文字边框 -webkit-text-stroke 镂空的字体
移除hmtl5 input type=“number”的step验证
移除HTML5 input在type="number"时的上下小箭头
Iphone上对于动态生成的html元素绑定点击事件$(document).click()失效解决办法
用tortoiseGit管理GitHub项目代码(完整教程)
用vue2.x注册一个全局的弹窗alert组件、confirm组件
Vue使用Echarts以及Echarts配置分享
热门文章
使用vue2.x+webpack+vuex+sass+axios+elementUI等快速搭建前端项目框架
Javascript中prototype属性
浅谈web移动端适配问题
Tomcat 服务器及使用Eclipse绑定Tomcat并发布应用
MySql数据库的基本原理及指令
快速排序
Linux常用文本处理命令
Linux文件管理
Java重载方法如何竞争
在一家公司呆了 10 年的程序员,最后都怎么了?
Copyright © 2011-2022 走看看