数据库备份工具-svn版本库定期备份
在完全恢复模式或大容量日志恢复模式下,必须先备份活动事务日志(称为日志尾部),然后才能在 SQLServerManagementStudio 中恢复数据库。 有关详细信息,请参阅如何备份事务日志 (SQLServerManagementStudio)。 要还原加密的数据库,您必须有权访问用于加密数据库的证书或非对称密钥。 没有证书或非对称密钥,就无法恢复数据库。
了解数据库备份和事务日志备份
数据库备份和日志备份是数据库维护的日常工作。 备份的目的是在数据库出现故障或损坏时,通过将备份的数据库和事务日志文件恢复到最新的时间点,将损失降到最低。
数据库备份
数据库备份可以是手动备份和语句备份
1.手动备份数据库
1.右击要备份的数据库-任务-备份
在“常规选项”页面上,您可以选择备份类型是完整数据库备份还是差异数据库备份。
2.点击添加选项选择数据库文件的存放路径
注意文件名要带.bak后缀,恢复时方便查找
3.在选项页面还可以选择是追加到已有的备份集还是覆盖所有已有的备份集,也可以选择验证备份的完整性(推荐)数据库备份工具,也可以选择是否压缩备份, ETC。
二。 语句备份数据库
使用 master goBACKUP DATABASE [test] TO DISK = N'D:/Microsoft sql server/MSSQL10.MSSQLSERVER/MSSQL/Backup/test.bak' WITH NOFORMAT, NOINIT, NAME = N'test-full database backup', SKIP, NOREWIND , NOUNLOAD, 统计数据 = 10GO
数据库日志备份
首先需要说明的是,数据库日志的备份是建立在数据库全量备份的基础上的。 也就是说,在备份数据库日志之前,必须先对数据库进行一次完整的备份,因为这会涉及到坚持检查点lsn,这也是本文的延续。 说说重点吧。
1.手动备份数据库日志
1、右击数据库-任务-备份-选择备份类型(事务日志)
2.点击添加添加日志文件备份存放路径
3、和数据库的全量备份一样,你也可以选择覆盖已有的备份集或者追加到已有的备份集。 这里覆盖已有的备份集,验证完整性,然后确认备份
二。 语句备份数据库事务日志
BACKUP LOG [test] TO DISK = N'D:/test.trn' WITH NOFORMAT, INIT, NAME = N'test-transaction log backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10GO
数据库还原
数据库右键-恢复数据库-添加需要恢复的数据库文件路径
在还原源选项中,您可以选择“源数据库”、“源设备”。 1、选择源数据库工具会自动显示数据库以前的一些备份,然后直接选择需要恢复的数据库备份集。
2.选择源设备,点击...添加需要恢复的数据库文件
2.点击确定恢复数据库
数据库恢复
数据库恢复的前提是 1.一个完整的数据库备份 2.一个包含这个完整数据库备份的事务日志备份 3.完全备份之间还可以有多个差异备份
数据库维护空间一直是个头疼的问题,尤其是大型数据库,每天的日志文件增长巨大,很多数据库管理员会定期缩减数据库日志文件,但经常缩减会导致日志文件完全缩减,文件仍然无法缩减,因为有很多活动日志不能缩水,可以使用
DBCC LOGINFO('数据库名')
我们看到
status=0的日志代表已经备份到磁盘的日志文件; 和
status=2的日志还没有备份,我们在收缩日志文件的时候,收缩空间
房间实际上是
status=0 空间,如果日志物理文件不能减少,这里
你会看到很多status=2的记录
解决方法: 1.可以把要缩水的数据库分开,然后手动删除日志文件,再attach数据库,数据库会生成一个小的日志文件(不推荐这种方法)
2、右击要提取的数据库,选择“属性”-“选项”,将恢复模式改为“简单”,然后使用收缩工具将日志文件收缩到较小的大小。 收缩后记得把recovery mode改成“full”
也可以用语句处理(dbname是你要缩容的数据库名,dbname_log是你要缩容的数据库的逻辑日志名)
使用[主人]
GO ALTER DATABASE [dbname] SET recovery SIMPLE WITH NO_WAIT GO
ALTER DATABASE [dbname] SET RECOVERY SIMPLE -- 简单模式
去
使用 [数据库名称]
去
DBCC SHRINKFILE (N'dbname_log', 11, TRUNCATEONLY) GO
使用[主人]
去
ALTER DATABASE [dbname] SET RECOVERY FULL WITH NO_WAIT ALTER DATABASE [dbname] SET RECOVERY FULL
第一种方法的使用不被批准。 首先,数据库的分离和附着有时会破坏数据库,导致数据库无法恢复,在线数据库不允许分离操作。
第二种方法是slq2008中的一种缩小日志文件的方法,但是这个方法不能太频繁使用,因为数据库恢复模式的改变会截断事务日志文件,所以使用事务日志文件进行恢复时的checkpoint不能包含数据库文件,当您要备份事务日志时,系统会再次提示您对数据库进行完整备份。
举个例子:比如你昨晚做了一次全量备份,然后你也同时做了一次日志备份(日志没有提前截断),然后你每小时做一次差异备份。 最新的差异备份时间点是14,此时数据库备份工具,如果数据库误修改了数据,可以立即备份一个日志文件,将数据库恢复到日志备份开始到当前的任意时间点。日志备份结束。
如果此时修改数据库模式,截断日志并收缩,那么你的数据只能恢复到昨晚备份的日志备份时间之前的任意时间点,即今天所做的数据库更改无法恢复,因为日志文件被截断了,不知道这样解释清楚没有
因为日志文件的检查点(lsn)是连续的,所以每次的日志备份都是基于上一次备份的lsn,而lsn的范围也包括了数据库文件的lsn,只有日志文件的lsn包括了才行当获取到数据库文件的lsn后,就可以回滚数据库文件了。
上图中一共有三个备份文件,一个完整备份,一个差异备份,一个日志备份。 可以关注全量备份的第一个lsn和最后一个lsn,以及checkpoint
第二个差异备份文件的第一个lsn和最后一个lsn,最后一个日志备份的检查点,第一个lsn和最后一个lsn包含前两个备份文件的lsn。 在这种情况下,数据库可以恢复到日志文件备份之前的任意时间点,如果日志文件不包含数据库文件的最后一个lsn,则无法恢复。
结语
在数据库维护过程中,数据库的每日备份是必须的。 毕竟,这是减少损失最有效的方法。 希望大家积极评价。 能力有限,希望大家开心。 整篇文章写的很累,哈哈,希望我的小见识能帮到你。