SQL SERVER 备份还原策略.docx
- 文档编号:29845791
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:53
- 大小:1.77MB
SQL SERVER 备份还原策略.docx
《SQL SERVER 备份还原策略.docx》由会员分享,可在线阅读,更多相关《SQL SERVER 备份还原策略.docx(53页珍藏版)》请在冰豆网上搜索。
SQLSERVER备份还原策略
SQLServer备份与还原策略
一、概述
数据库在运行过程中,因为各种各样的原因会导致数据库损坏。
常见的导致数据库损坏的原因有:
数据库存储介质的损坏导致数据库不能正常启动、数据库服务器突然停机或重启导致数据库系统文件损坏或数据不完整、对操作系统不正常的操作导致数据文件损坏或丢失、数据库管理员误操作导致数据库被删除。
数据库损坏后,要使用数据库的备份对数据库进行还原。
为了能完整的恢复数据库,备份和还原需要一个策略。
一个考虑了特定的业务需求的设计良好的备份策略会最大化数据的可用性,最小化数据的丢失。
二、SQLServer备份恢复策略
备份与还原策略包含备份和还原两部分。
备份部分定义备份的类型和备份频率、备份到的硬件的环境、备份的验证、备份位置和备份介质如何进行存储(包括安全性的考虑)。
还原部分定义还原到的对象和怎样进行还原来达到数据库可以正常使用和最小化数据丢失的目标。
SQLSERVER的备份类型
A.数据库备份(DatabaseBackups)
数据库备份是指对数据库的完整备份,包括所有的数据以及数据库对象。
实际上备份数据库过程就是首先将事务日志写到磁盘上,然后根据事务创建相同的数据库和数据库对象以及拷贝数据的过程。
由于是对数据库的完全备份,所以这种备份类型不仅速度较慢,而且将占用大量磁盘空间。
B.事务日志备份(TransactionLogBackup)
事务日志备份是指对数据库发生的事务进行备份,包括从上次进行事务日志备份、差异备份和数据库完全备份之后,所有已经完成的事务。
C.差异备份(DifferentialDatabaseBackups)
差异备份是指将最近一次数据库备份以来发生的数据变化备份起来,因此差异备份实际上是一种增量数据库备份。
与完整数据库备份相比,差异备份由于备份的数据量较小,所以备份和恢复所用的时间较短。
但是它却无法像事务日志备份那样提供到失败点的无数据损失备份。
D.文件和文件组备份(FileandFileGroupBackup)
文件或文件组备份是指对数据库文件或文件夹进行备份,但其不像完整的数据库备份那样同时也进行事务日志备份。
使用该备份方法可提高数据库恢复的速度,因为其仅对遭到破坏的文件或文件组进行恢复
设计备份恢复策略,考虑的因素
设计备份恢复策略,需要考虑很多因素的影响,下面是主要的影响因素:
1、恢复模式对备份恢复策略的影响:
恢复模式是控制数据库事务日志管理的数据库的一个属性,恢复模式有三种:
简单恢复、完整恢复、大容量日志恢复,通常采用简单恢复模式和完整恢复模式。
简单恢复模式不支持事务日志的备份,使用该模式进行备份,数据库只能恢复到备份的那个时间点。
完整恢复模式支持事务日志的备份,使用该模式,数据库可以恢复到任意时间点,例如可以恢复到数据库发生异常的时间点。
2、在数据库发生异常后,进行恢复时,业务上对丢失数据的要求程度。
如果业务上可以承受当天业务数据的丢失,那么就可以采用1天备份1次的策略;如果业务上要求所有的数据都不能丢失,那么肯定要进行事务日志的备份。
3、数据库大小对备份恢复策略的影响:
数据库不大,1次完全备份耗用时间不长,可以使用完全备份;数据库很大,1次完全备份耗用时间很长,有可能影响正常的业务运行,那么就不能考虑完全备份,要进行差异备份。
4、资源的要求:
硬件的限制、个性化的需求、存储备份介质的空间大小、存储介质的物理安全性等等。
例如备份出的文件20G,公司要求保留1周的备份,存储备份文件的磁盘就需要20*7=140G的空间,管理员需要考虑存储备份文件的磁盘空间是否够用和每天的备份文件是否要存放到不同的磁盘上。
5、数据库发生异常后,业务上对恢复时间的要求。
如果要求不能影响正常业务的运行,例如使用了生产系统,业务运行不能中断,那么就要考虑双机热备份的策略。
备份策略的设计
根据业务需求针对数据库选择了恢复模式后,需要设计和形成一个对应的备份策略。
好的备份策略依赖于不同的因素,下面是最重要的一些因素:
1.应用程序1天有多少小时在访问数据库?
如果有一个可预测的空闲时间段,建议在那个时间段安排数据库备份。
在使用GS软件时,根据使用的模块大致可以确定备份时间。
例如客户使用了基本财务模块,一般业务在晚上12点以后不会再发生,那么就可以考虑在晚上12点安排数据的备份。
客户使用了物流、生产模块,业务随时在发生,但临晨3点左右业务发生最少,那么可以考虑在临晨3点进行数据库的备份。
2.数据库变化和更新的频率有多高?
如果变化频繁,考虑下面的策略:
简单恢复模式下,在完整的数据库备份之间安排差异备份。
差异备份只记录最后一次数据库完整备份后的数据变化。
例如可以安排周日进行完全备份,周一到周六进行差异备份。
完整恢复模式下,应当频繁的进行日志备份,完整的备份之间安排差异备份。
例如可以安排周日进行完全备份、周一到周六进行差异备份、每天间隔2个小时进行事务日志的备份。
3.发生变化的是数据库的一小部分还是一大部分?
一个大型数据库的变化集中在几个文件或文件组,可以使用部分备份或文件的备份。
GS软件,一般在创建数据库时,整个数据库都创建在了1个文件里,因此部分文件的备份没有多大意义,该因素可以忽略掉。
4.完整的数据库备份需要多大磁盘空间?
备份操作是将数据库里的数据拷贝到备份文件里。
备份只针对数据库里的实际数据,不包含没有使用的空间。
因此,备份后的文件通常比数据库要小。
使用sp_spaceused存储过程,可以估算数据库完整备份后的文件大小。
如果备份需要很大磁盘空间,备份时间很长,每天1次完全备份的策略就不能考虑了。
可以考虑1周进行1次完全备份,两次完全备份之间每天进行差异备份。
5.数据库发生故障后,系统是否要求不能中断正常的业务运行?
业务不能中断进行,就要考虑双机热备份策略。
常见的备份策略及优缺点
备份策略
应用场景
优点
缺点
每天进行1次完全备份
数据库占用空间不是很大,1次完全备份时间不会超过2个小时
只需要保留最后一次的备份文件就可以,备份文件管理简单。
要求数据库不能太大,数据库出故障后只能恢复到最近一次备份时间点的数据。
业务数据会丢失一部分
1周1次完全备份,两次完全备份间每天进行差异备份
数据库占用空间很大,1次完全备份时间很长,还原时不需要还原到某个时间点
差异备份的文件不会很大,备份时间不会很长,备份文件不多,容易管理。
数据库出故障后,只能恢复到最近一次备份时间点的数据,业务数据会丢失一部分。
1周1次完全备份,两次完全备份间每天进行差异备份,每天每隔2小时进行事务日志的备份
数据库占用空间很大,1次完全备份时间很长,还原时需要还原到某个时间点
数据库能还原到出故障的时间点,业务数据不会丢失
每天进行多次日志备份,对数据库运行性能会有影响。
备份文件很多,不容易进行管理。
数据库出故障后,恢复需要时间,影响业务系统的运行。
双机热备
1台数据库服务器出故障后,系统马上切换到另一台服务器,业务照常进行
出故障时,业务不会中断
硬件投资大,不容易进行部署,系统运行维护成本高
推荐的备份方案
、数据库出故障后,业务不能停止运行。
请使用双机热备。
、数据库出故障后,业务可以停止运行,但数据不能丢失,请使用:
1周1次完全备份,两次完全备份间每天进行差异备份,每天每隔2小时进行事务日志的备份(出故障时,如果能进行事务日志的备份,请手工执行日志备份,否则数据会丢失一部分)。
、数据库出故障后,可以丢失1天的数据。
如果完全备份1次时间太长,请1周1次完全备份,两次完全备份间每天进行差异备份。
1次完全备份时间不长,可以每天进行1次完全备份。
、数据库完全备份后,想收缩日志文件占用空间。
可以在完全备份后,进行日志截断及收缩数据库。
还原策略的设计
根据数据库出故障时,故障现象及故障原因的不同、备份方式的不同,还原方式都不一样,常见故障及还原方式如下:
1、数据库能正常启动,但运行完整性检查时(DBCCCHECKDB),发现数据库有问题,备份文件恢复,也存在数据库不完整的现象。
数据库和备份文件都存在数据不完整的现象,只能通过数据转入转出的方式来实现数据库的恢复。
具体步骤:
新建1个数据库(使用GS安装盘里的数据库创建工具),清空所有用户表里的数据,使用sqlserver提供的导出功能,将有问题的数据库里的数据导出到新建的数据库里。
2、数据库存储的磁盘完全损坏,文件不能恢复。
磁盘损坏后,要先看数据文件和日志文件是否能恢复(恢复工作要找专业的数据恢复公司),如果数据文件、日志文件都不能恢复,那只能从最近的备份文件还原。
3、数据库发生异常,检查数据库,发现日志文件发生异常,数据文件正常(查看数据文件异常,还是日志文件异常,可以从SQLSERVER的错误日志里发现,SQLSERVER的错误日志在MicrosoftSQLServer\MSSQL.1\MSSQL\LOG\ERRORLOG里面,可以使用记事本打开)。
数据文件正常,日志文件损坏或丢失的现象,可以通过日志文件的重新构造来解决。
4、数据文件损坏,日志文件正常。
根据最后一次备份的时间点,使用LogExplorer工具,将备份的时间开始到出错的时间点的所有的SQL语句转出成sql文件。
使用备份文件恢复数据库到备份的时间点,将LogExplorer转出的SQL文件在恢复后的数据库里执行,数据就还原到出故障的时间点了。
三、SQLServer备份恢复操作
备份操作
1、1天1次完全备份
进入SQLSERVER管理器后,以sa身份登录系统,在对象资源管理器里,找到管理下的维护计划,右键选择维护计划向导,如下图:
在弹出的界面中,输入名称和描述,如下图:
点右下角的更改按钮,弹出如下界面,执行频率选择每周,执行间隔选择周一:
点确定按钮后,返回维护计划向导界面,点下一步按钮,弹出如下界面,请选择备份数据库(完整):
点下一步,弹出选择维护任务顺序界面如下图:
因为只选择了一个任务,直接点下一步按钮,在弹出的界面中选择要备份的数据库:
选择好数据库后,点确定按钮,选择跨一个或多个文件备份数据库,如下图:
点右边的添加按钮,弹出选择备份目标界面,如下图:
选择要备份到的文件名,如下图:
选择好文件(如果文件不存在,请输入要备份到的文件名)后,点确定按钮,返回选择备份目标界面,再点确定按钮,返回配置任务界面,在如果备份文件存在下拉列表里,选择覆盖,如下图:
点下一步按钮,弹出选择报告选项界面如下图:
直接点下一步按钮,可以查看一下设的备份计划是否正确,如下图:
点完成按钮,系统会自动创建备份计划,弹出的备份进度见下图:
点关闭,每周一的备份计划设置完成。
重复上述步骤,备份时间选择每周周二,备份文件选择周二文件夹里的文件,如下图:
这样,周二的备份计划就做好了。
其他几天的备份计划,按照上述步骤重复设置。
2、周末完全备份,每天增量备份
进入SQLSERVER管理器后,以sa身份登录系统,在对象资源管理器里,找到管理下的维护计划,右键选择维护计划向导,如下图:
在弹出的界面中,输入名称和描述,如下图:
点右下角的更改按钮,弹出如下界面,执行频率选择每周,执行间隔选择周一:
点确定按钮后,返回维护计划向导界面,点下一步按钮,弹出如下界面,请选择备份数据库(差异):
点下一步,弹出选择维护任务顺序界面如下图:
因为只选择了一个任务,直接点下一步按钮,在弹出的界面中选择要备份的数据库:
选择好数据库后,点确定按钮,选择跨一个或多个文件备份数据库,如下图:
点右边的添加按钮,弹出选择备份目标界面,如下图:
选择要备份到的文件名,如下图:
选择好文件(如果文件不存在,请输入要备份到的文件名)后,点确定按钮,返回选择备份目标界面,再点确定按钮,返回配置任务界面,在如果备份文件存在下拉列表里,选择覆盖,如下图:
点下一步按钮,弹出选择报告选项界面如下图:
直接点下一步按钮,可以查看一下设的备份计划是否正确,如下图:
点完成按钮,系统会自动创建备份计划,弹出的备份进度见下图:
点关闭,每周一的备份计划设置完成。
重复上述步骤,备份时间选择每周周二,备份文件选择周二文件夹里的文件,如下图:
这样,周二的备份计划就做好了。
周三、周四、周五、周六的备份计划和上述步骤一样。
星期天的备份计划除了备份时间和备份文件不一样外,在选择维护任务时,请选择备份数据库(完整),如下图:
其他的设置都一样。
3、周末完全备份、每天增量备份、2个小时1次日志备份
周末完全备份、每天增量备份。
每天日志备份操作如下图:
在弹出的界面中,输入名称和描述,如下图:
点右下角的更改按钮,弹出如下界面,执行频率选择每天,执行间隔选择2小时:
点确定按钮后,返回维护计划向导界面,点下一步按钮,弹出如下界面,请选择备份数据库(事务日志):
点下一步,弹出选择维护任务顺序界面如下图:
因为只选择了一个任务,直接点下一步按钮,在弹出的界面中选择要备份的数据库:
选择好数据库后,点确定按钮,选择要存放的文件夹如下图:
点下一步按钮,弹出选择报告选项界面如下图:
直接点下一步按钮,可以查看一下设的备份计划是否正确,如下图:
点完成按钮,系统会自动创建备份计划,弹出的备份进度见下图:
4、双机热备概要介绍
双机热备这一概念包括了广义与狭义两种意义。
从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务。
当一台服务器出现故障时,可以由另一台服务器承担服务任务,从而在不需要人工干预的情况下,自动保证系统能持续提供服务。
双机热备由备用的服务器解决了在主服务器故障时服务不中断的问题。
但在实际应用中,可能会出现多台服务器的情况,即服务器集群。
双机热备一般情况下需要有共享的存储设备。
但某些情况下也可以使用两台独立的服务器。
实现双机热备,需要通过专业的集群软件或双机软件。
从狭义上讲,双机热备特指基于active/standby方式的服务器热备。
服务器数据包括数据库数据同时往两台或多台服务器写,或者使用一个共享的存储设备。
在同一时间内只有一台服务器运行。
当其中运行着的一台服务器出现故障无法启动时,另一台备份服务器会通过软件诊测(一般是通过心跳诊断)将standby机器激活,保证应用在短时间内完全恢复正常使用。
5、完全备份后,收缩日志文件占用空间。
以sa口令登陆,在对象浏览器里找到管理—维护计划,找到完全备份的计划,如下图:
双击该计划,打开计划的详细属性,如下图:
在中间的工具箱里,找到“执行T-SQL语句”任务,拖动右下角的图形里,如下图:
双击“执行T-SQL语句”任务的图标,弹出了sql语句输入窗口,请输入
BACKUPLOGdbnameWITHNO_LOG
dbccSHRINKDATABASE('dbname')
如下图:
点确定按钮,返回任务维护界面,将两个任务连接起来(使用鼠标将一个任务的箭头拖到另一个任务),如下图:
上述操作做完,点工具栏上的保存按钮,将维护计划进行保存。
恢复操作
1、从备份文件恢复数据库
进入SQLSERVER管理器后,以sa身份登录系统,在对象资源管理器里,选择要还原的数据库,右键找到任务—还原—数据库,如下图:
进入界面如下图:
选中要还原的备份集(备份集根据备份方案的不同,显示的内容及先后次序都不一样,应该将最后一次的完整数据库备份、最后一次的差异数据库备份以及后面的日志备份选上),点确定按钮,系统自动进行数据库的还原。
2、数据文件正常,日志文件重建来恢复数据库
操作过程分两步:
、停止sqlserver数据库服务后,删除原来的损坏的日志文件(日志文件后缀名为.ldf)。
、以sa用户登录数据库,执行下面的sql语句,语句里的db修改成要恢复的数据库名称。
alterdatabasedbsetemergency
declare@databasenamevarchar(255)
set@databasename='db'
execsp_dboption@databasename,N'single',N'true'
dbcccheckdb(@databasename,REPAIR_ALLOW_DATA_LOSS)
dbcccheckdb(@databasename,REPAIR_REBUILD)
execsp_dboption@databasename,N'single',N'false'
alterdatabasedbsetonline
3、日志文件正常、数据文件损坏,数据库的恢复
、停止SQLSERVER服务,手工备份日志文件。
、确定最后一次备份的时间点(查看备份文件的修改时间,备份可以是完整的数据库备份、差异数据库备份或日志备份)。
、使用LogExplorer工具将最后一次备份的时间到出故障的时间点的sql语句转出成文件。
LogExplorer(工具要安装在数据库服务器上,要安装server和client)工具的操作如下图:
进到软件主界面后,找到左上角的AttachLogFile如下图:
点该功能后,进入下面界面:
输入sa的口令,点左下角的Connect按钮,弹出如下界面:
选择要获取log记录的数据库,点左下角的Attach按钮,系统将log文件解析完成后,弹出如下界面:
选择Recovery---RedoUserTransactions,如上图,点击后,界面如下:
选择右上角的ChangeFilter,如上图,进入下面界面:
请修改读取日志的开始时间(开始时间在步骤B里获取),点Apply按钮,返回下面界面:
请选择要保存文件的位置,选择后,点左下角的Create按钮,系统将Log转换成sql文件。
、使用备份文件还原数据库。
、使用用户登录恢复的数据库,执行LogExplorer工具转出的SQL文件。
四、相关资料
1、MSDN上的备份还原的相关资料:
2、LOGEXPLORER的下载地址:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL SERVER 备份还原策略 备份 还原 策略
![提示](https://static.bdocx.com/images/bang_tan.gif)