Sql server学习

sql server备份三种策略:

1.全量数据备份 (Full)
   备份整个数据库,恢复时恢复所有。优点是简单,缺点是数据量太大,非常耗时

 

全数据库备份因为容易实施,被许多系统优先采用。在一天或一周中预定的时间进行全数据库备份使你不用动什么脑筋。使用这种类型的备份带来的问题是非常缺乏灵活性,而且当数据库被冲掉后,你面临丢失大量数据的潜在威胁。例如,假设你每天在午夜备份数据库。


如果服务器在晚上11点崩溃了,你将丢失前面23个小时对数据所做的全部修改。对大多数系统来说,这是无法接受的。对此规则,为数不多的例外如下:


1.系统中所存的数据可以很容易地再创建。这类服务器中一个很好的例子是报表服务器,其中所存的所有数据都由一个批处理过程装载的。如果这个数据库被冲掉了,你只需要再运行一次这个批处理过程,所有数据就可以恢复了。


2.不经常修改的数据库。一个例子是被收集存储在数据中心或数据仓库的历史数据。通常,查询这些数据以判断趋势,但是这些数据极少被修改。


3.一个遥远的站点,那里很少或没有数据库管理员支持。这种类型的站点常常依靠没受过足够培训的人来维持备份计划,并且他还从事其他工作。通常最好保证实施的备份计划非常简单,不必让那些用户监视和维护它。


4.系统中所存数据的重要性很低。一个很好的例子是开发用服务器。在这些类型的服务器上,开发者通常装载一些旧的或假定的数据来测试应用程序。这类数据库每天的备份是可接受的。

 

Sql语句:

BACKUP DATABASE [wxh] TO  DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\wxh.bak' WITH NOFORMAT, NOINIT,  NAME = N'wxh-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10

 

2.增量数据备份(Differential Backups) 
    所谓增量,就是以某个起始时间点的全量数据为基础,备份该时间点以后的数据。而起始时间点的全量数据,就是通过全量备份而为的。 
   如果有人告诉你“每周一进行全量备份,每天进行一次增量备份。”,这就意味着,星期一作一次全量配份,形成一个起始时间点的全量数据;星期二备份星期一以来的数据;星期三也备份星期一以来的数据;.......星期天也备份星期一以来的数据。到第二周的星期一时,又执行一次全量配份,再开始新的备份周期。 
   如果要恢复星期三的数据,则要先恢复星期一的全量数据,然后再恢复在星期一到星期三之间的增量数据。 
  

增量备份是能用来帮助你实施备份计划的最新技术。这种备份,像事务日志备份一样,只备份你上次全数据库备份后所做的修改。与事务日志备份不一样的是这种备份不允许时间点恢复。它只允许你在实际所做的备份点上恢复。所以,这种备份通常要有事务日志备份作为补充。在下列情况下,增量备份非常有用:


1.你想通过联合使用全数据库备份、增量备份和事务日志备份最大程度地减少花费的时间。


2.数据库的大小使经常做全数据库备份很困难的情况。


3.一个遥远的站点,那里很少或没有数据库管理员支持。这种类型的站点常常依靠没受过足够培训的人来维持备份计划,而且他还经常从事其他工作。通常最好保证实施的备份计划非常简单,不必让那些用户监视和维护它。


4.系统中所存数据不是非常重要,所以所做的一些修改丢失后,不会导致灾难性的后果。对于这种类型的系统,手工重建数据比建立一个事务日志备份计划更容易。

 

Sql语句

BACKUP DATABASE [wxh] TO  DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\wxh.bak' WITH  DIFFERENTIAL , NOFORMAT, NOINIT,  NAME = N'wxh-Differential Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10

GO

 

3.日志备份 (Transaction log)
   周一做一次全量数据备份,周二时备份 周一至周二 的日志,周三时配份 周二至周三 的日志......。 
   若要恢复周三的数据,则先恢复到周一的全量数据,再按 周一至周二的日志、 周二至周三的日志 进行数据库操作 

一个事务日志备份只备份事务日志中的信息。事务日志备份必须与至少一次全数据库备份联用,这是因为如果恢复数据,必须要有一个开始点。事务日志备份比全数据库备份少花费许多资源,经常执行也容易多了。这实际上有两个目的。首先是缩短了最后一次备份与服务器失败之间的时间间隔,因而减少了数据损失。事务日志备份还允许你实施一种特殊类型的恢复,即时间点恢复。这种类型的恢复允许你恢复数据到一个特定的时间点,比如到一次实际失败发生前5分钟时。


当某人所做的大量的数据修改或删除要取消时,它显得特别有用。你只需简单地恢复数据库到这次动作发生的时间点前。事务日志恢复在下列情况时非常有用:


1.数据库被高频率地修改。在发生大量的数据库修改时,数据库备份可能很快就过时了,如果把事务日志备份和全数据库备份联系起来使用,这些修改你都能记录下来。


2.你想采取时间点恢复。像我前面提到的,时间点恢复是非常重要和有用的,你可以通过事务日志备份来实现。


3.不能接受丢失大量数据的情况。在这种情况下,你可以每天做一个全数据库备份,再每小时或更频繁地做事务日志备份。这将减少数据丢失量。


4.数据库的大小使得经常做全数据库备份很困难。例如,非常大的数据仓库很容易达到上万亿字节。这种情况下,你可以做一次全数据库备份,然后当数据修改时,再做一次事务日志备份。

 

Sql语句:

BACKUP LOG [wxh] TO  DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\wxh.bak' WITH NOFORMAT, NOINIT,  NAME = N'wxh-Transaction Log  Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10

GO

 

清理日志:

  1. USE[master]  
  2. GO  
  3. ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE WITH NO_WAIT  
  4. GO  
  5. ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE   --简单模式  
  6. GO  
  7. USE 要清理的数据库名称  
  8. GO  
  9. DBCC SHRINKFILE (N'要清理的数据库名称_log' , 2, TRUNCATEONLY)  --设置压缩后的日志大小为2M,可以自行指定  
  10. GO  
  11. USE[master]  
  12. GO  
  13. ALTER DATABASE 要清理的数据库名称 SET RECOVERY FULL WITH NO_WAIT  
  14. GO  
  15. ALTER DATABASE 要清理的数据库名称 SET RECOVERY FULL  --还原为完全模式  
  16. GO  
posted @ 2018-04-09 10:38  Tobu  阅读(176)  评论(0编辑  收藏  举报