sqlserver备份恢复__学习笔记1
|
|
|
前记:
今年4月份的时候,做过 一个sqlserver2000到 sqlserver2005的数据迁移,而且 sqlserver2005还是建立在windows2003 mscs集群上的双active故障转移集群,弄了好几天才搭建好环境,自以为对 sqlserver很熟悉了,但实际当时对 sqlserver的原理研究的很少,后来有 一个维护项目,是 sqlserver2000,客户说他们的事务日志撑爆了硬盘,问我该怎么处理,我于是认真研究了一下 sqlserver的日志机制,备份恢复原理,发现它和Oracle有相通之处,也有不同的地方,以下是一些知识的收集和总结,以备不时之需吧,毕竟工作中搞 sqlserver的机会比较少了...
1.交易日志(transaction logs)
交易日志是针对 数据库改变所做的记录,它可以记录针对 数据库的任何操作,并将记录结果保存在独立的 文件中。对于任何每 一个交易过程,交易日志都有非常全面的记录,根据这些记录可以将数据 文件恢复成交易前的状态。从交易动作开始,交易日志就处于记录状态,交易过程中对 数据库的任何操作都在记录范围,直到 用户点击提交或后退后才结束记录。每个 数据库都拥有至少 一个交易日志以及 一个数据 文件。
出于 性能上的考虑, sql Server将 用户的改动存入缓存中,这些改变会立即写入交易日志,但不会立即写入数据 文件。交易日志会通过 一个标记点来确定某个交易是否已将缓存中的数据写入数据 文件。当 sql Server重启后,它会查看日志中最新的 标记点,并将这个 标记点后面的交易记录抹去,因为这些交易记录并没有真正的将缓存中的数据写入数据 文件。这可以防止那些中断的交易 修改数据 文件。
(注解,类似于oracle的redo log file、redo log buffer、instance recover 机制)
2.日志的截除和压缩
日志的截除,就是把日志中的旧记录 标记为非活动状态,然后 数据库会将新日志覆盖到旧日志的位置上,这样就可以防止交易日志的体积不断膨胀。
截除可以发生在备份日志 文件时,比如:backup log databasename with no_log
截除虽然可以使旧的日志空间可以被覆盖,但并不会减少日志实际已经占用的磁盘空间,因此有时为了释放空间还要对日志进行压缩,
压缩的过程其实就是彻底删除旧日志,释放出空间。
3.恢复模型
3.1)简单恢复模型SIMPLE
使用该模型可以将数据库恢复到上次备份的即时点,但无法还原到故障点。
(注解,这个类似oracle的非归档模式)
3.2)完全恢复模型FULL
完全恢复模型提供了最大的恢复灵活性。新数据库默认使用的就是这种恢复模型。利用这种模型,可以恢复数据库的一部分或者完全恢复。假设交易记录(transactions log)还没有被破坏,还可以在失败之前恢复出最后一次的已提交(committed)交易。在所有的恢复模型中,这种模型使用了最多的交易记录空间,并轻微影响了sql Server的性能。 3.3)大容量日志记录恢复模型BULK_LOGGED
BULK_LOGGED恢复模型比FULL模型少了一些恢复选项,但是进行批操作(bulk operation)时它不会严重影响性能。在进行某些批操作时,由于它只需记录操作的结果,因此它使用了较少的记录空间。然而,用这种模型,你不能恢复数据库中的特定标记,也不能仅仅恢复数据库的一部分。
4.1)备份命令的例子
backup database pubs to disk="c:/pubs.bak"
BACKUP LOG pubs WITH NO_LOG;
BACKUP LOG northwind TO LogBackupDevice WITH NO_T runcATE
4.2)备份技巧
用 sql Server Agent来安排你的备份工作的时间表。
a)利用企业管理器完全备份 数据库
b)利用 查询分析器,执行命令
dump transaction 数据库名 with no_log
c)再打开企业管理器--右键你要压缩的 数据库--所有任务--收缩 数据库--收缩 文件--选择日志 文件--在收 缩方式里选择收缩至XXM,这里会给出 一个允许收缩到的最小M数,直接输入这个数,确定就可以了。
d)再次完全备份 数据库。
使用工具:Pro sqlLogClear.exe清除日志、使用前后都需要备份 数据库
5.3)在清除完日志后,对于数据量不大且数据可以容忍一天的丢失的 数据库,可以将恢复模型该为简单,然后每天做全备。步骤如下:
a)右建 数据库属性窗口--选项--故障还原模型--设为简单
c)做 一个维护计划,定期做每天的备份,并定制保留几天的备份
|
|
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。