请教高手关于恢复模型和日志文件运行机制的问题
请大虾们帮忙看看下面两个问题:
1。完全恢复和大容量日志记录的恢复模型区别?
microft文档里关于这两个模型的恢复操作都是一样的:
1>备份活动的日志文件
2>还原最近一次的完全备份
3>还原最近一次的差异备份(如果有的话)
4>顺序还原最后一次数据库备份后的日志文件备份
5>还原第一步中备份的日志文件
这么做不都可以恢复到问题发生时吗?那还有什么区别?
2。我现在维护的这个数据库日志文件增张快的离谱(可能乙方开发缺陷,先避开不谈)。
我准备把日志文件物理大小设置大一点,硬盘空间是充足的。只是不知道这样做对
系统性能影响有多大?每一次事务操作时,是不是需要执行更多的运算?我看网上一些
文章,说是日志文件的处理类似一个循环链表,把日志文件设置到40G会不会使在操作它
时耗用过大的资源。
问题点数:80、回复次数:11Top
1 楼billpu(加勒比小飞猪)回复于 2006-07-02 21:43:06 得分 0
1 大容良日志不会对创建索引进行记录 不会对bulk insert进行记录 也不会对select ...into进行记录 完全日志的话以上3个都会记录.但对一般的dml语句是完全一样
2 40g的日志文件会不会出问题这个不好说,取决于你的系统和你sql环境.不过我们公司以前的系统日志文件最大的时候大概有20g左右 我测试下来速度一点也不慢 cpu和内存占用率和初始化的时候没什么区别.Top
2 楼zjcxc(邹建)回复于 2006-07-03 09:35:02 得分 80
1. 大致如1楼所述.
另, 在恢复操作上, 两者是一致的, 但在能还原的时间点和数据上, 两者是有差异的
完全恢复
完全恢复模型使用数据库备份和事务日志备份提供对媒体故障的完全防范。如果一个或多个数据文件损坏,则媒体恢复可以还原所有已提交的事务。正在进行的事务将回滚。
完全恢复提供将数据库恢复到故障点或特定即时点的能力。为保证这种恢复程度,包括大容量操作(如 SELECT INTO、CREATE INDEX 和大容量装载数据)在内的所有操作都将完整地记入日志。
完全恢复的备份策略包括:
数据库备份。
差异备份(可选)。
事务日志备份。
完全恢复和大容量日志记录恢复很相似,而且很多使用完全恢复模型的用户有时将使用大容量日志记录模型
大容量日志记录恢复
大容量日志记录恢复模型提供对媒体故障的防范,并对某些大规模或大容量复制操作提供最佳性能和最少的日志使用空间。下列操作为最小日志记录操作:
SELECT INTO。
大容量装载操作(bcp 和 BULK INSERT)。
CREATE INDEX(包括索引视图)。
text 和 image 操作(WRITETEXT 和 UPDATETEXT)。
在大容量日志记录恢复模型中,这些大容量复制操作的数据丢失程度要比完全恢复模型严重。虽然在完全恢复模型下记录大容量复制操作的完整日志,但在大容量日志记录恢复模型下,只记录这些操作的最小日志,而且无法逐个控制这些操作。在大容量日志记录恢复模型中,数据文件损坏可能导致必须手工重做工作。
另外,当日志备份包含大容量更改时,大容量日志记录恢复模型只允许数据库恢复到事务日志备份的结尾处。不支持时点恢复。
在 Microsoft® SQL Server™ 2000 中,可以很容易地在完全恢复模型和大容量日志记录恢复模型之间进行切换。在大容量日志记录恢复模型中,不需要在完成大容量复制操作后执行完整数据库备份。在这个模型中,事务日志备份捕获日志和上次备份后执行的任何大容量操作的结果。
Top
3 楼zjcxc(邹建)回复于 2006-07-03 09:39:54 得分 0
"日志文件的处理类似一个循环链表,把日志文件设置到40G会不会使在操作它时耗用过大的资源"
这个说法有些问题, 设置了限制40G的话, 日志使用需求超过40G的话, 会报错的
除非是使用simple的数据恢复模型, 否则日志文件会持续增长的, 除非你定期做数据库备份, 这样可以截断不活动的日志并使日志文件空间回收备用.
所以, 你应该设置这样一些策略:
1. 定期备份: 无论从保护数据, 还是节约资源方面考虑, 这个都应该做
2. 开启数据库的自动收缩选项或者是定期手工收缩数据文件和日志文件: 长期不用的空间回收,这有利于节约磁盘资源来做其他事情.
Top
4 楼LouisXIV(夜游神)回复于 2006-07-03 09:45:32 得分 0
搬个凳子:)Top
5 楼wgsasd311(自强不息)回复于 2006-07-03 10:32:15 得分 0
学习:)Top
6 楼yemj(仙人掌)回复于 2006-07-03 11:40:31 得分 0
我是想把日志文件大小设置成40G,并启用文件自动增长+文件增长不受限制。
对于日志文件和数据库的周期备份,我是用脚本做了的,日志文件备份截断每天1次。
我把日志文件设置这么大的出始大小,是因为日志文件增张过快,我大概看了下从上个星期5到这个星期1增加了几十个G。数据库属性里设置为完全恢复模式。我目的是避免文件出现自动增张的概率(我做过测试自动增张时对客户端有影响,是不是觉得这种软件我们居然也会要^o^ 哎!又不是我说了算)
Top
7 楼zjcxc(邹建)回复于 2006-07-03 11:44:32 得分 0
那不错啊, 如果经常用到40G, 设置成40G的话, 可以避免磁盘空间分配带来的I/O, 不过说实在的, 经常有40G的日志, 有点恐怖
楼主公司处理什么业务, 数据变化的量有这么大及这么频繁?Top
8 楼skyboy0720(曲终人散)回复于 2006-07-03 11:56:13 得分 0
听课:)Top
9 楼yemj(仙人掌)回复于 2006-07-03 19:02:19 得分 0
回复邹建:
我在水司,负责的主要是SCADA(无线采集)系统。现在这套系统,IIS服务和数据库服务在同一个服务器上。录入数据的主要客户端两个(同一时间只有一个做数据库写操作),每天执行Insert操作为74*288次,数据库内有存储过程和触发条件做一些后台处理。
我感觉在系统运行了这么久,每天日志文件增加越来越快(估计数据库内有些问题处理不够完善)。
我一直在做PLC(可编程逻辑控制器)和无线通信组网以及一些施工方面的工作,前不久才接手兼做WEB和数据库的工作。SQL我也刚接触不到半年,还有很多地方不怎么清楚。
现在正在学习.NET过程中,你的QQ是多少?要向您多多请教了:)Top
10 楼yemj(仙人掌)回复于 2006-07-03 19:03:06 得分 0
用户名:仙人掌
QQ号:15054398Top
11 楼gaojier1000(V2※高捷)回复于 2006-07-03 22:44:52 得分 0
标记贴!Top




