数据库备份.docx
《数据库备份.docx》由会员分享,可在线阅读,更多相关《数据库备份.docx(11页珍藏版)》请在冰豆网上搜索。
数据库备份
如果希望在灾难发生的时候,将SQLServer2005数据库恢复到可以接受的状态,那么就需要在灾难发生之前进行一些准备工作。
这里的准备工作主要指的是数据库的备份。
也就是说,需要经常对SQLServer2005数据库进行备份,以保证拥有数据库的可用版本,从而在SQLServer2005数据库发生灾难的时候,可以从备份那里及时得到恢复。
本节将主要介绍几种常用的SQLServer2005数据库的备份类型,包括完整备份、差异备份、日志备份以及文件和文件组备份等。
9.4.1 完整备份
完整备份将备份整个SQLServer2005数据库,包括事务日志部分。
进行数据库的完整备份后,SQLServer2005数据库的所有内容将包含在备份文件中,所以在恢复时可以恢复所有的数据库状态。
用户可以通过SQLServerManagementStudio工具或BACKUPDATABASE语句来完成数据库的完整备份。
使用SQLServerManagementStudio工具来完成Practice_JWGL数据库的完整备份,具体操作过程如下。
(1)打开SQLServerManagementStudio并连接到数据库引擎服务器。
(2)在“对象资源管理器”窗口中,展开“数据库”节点。
(3)右击Practice_JWGL数据库,在弹出的快捷菜单中选择“任务”|“备份”命令,打开“备份数据库”对话框,默认选择“常规”选项。
(4)在“源”选项框中的“数据库”复选框中,选择Practice_JWGL数据库。
在“备份类型”复选框中,选择“完整”类型。
在“备份组件”选项框中,选择“数据库”单选按钮。
(5)在“备份集”选项框中,可以为该备份集指定一个名称,并添加一些有实际意义的说明,还可以指定“备份集过期时间”选项,起到说明的作用。
(6)在“目标”列表框中,指定要备份到的设备,包括“磁盘”和“磁带”两种设备。
如果选择“磁盘”单选按钮,那么可以指定要备份到的文件位置,可以是物理设备,也可以是逻辑设备。
注意:
可以通过单击“添加”按钮,将一个数据库备份到多个文件。
这里,同时将数据库备份到物理设备(D:
\Practice_JWGL\Practice_JWGL.bak)和逻辑设备(BK_JWGL)中,如图9-4所示。
图9-4“备份数据库”对话框的“常规”选项
(7)单击“确定”按钮,得到Practice_JWGL数据库的一个完整备份。
注意:
在进行数据库的备份时,将磁盘上的文件当作备份设备来处理。
在备份时,可以向这个设备添加多份备份内容。
在默认情况下,再次备份的结果不会有冲突,也不会覆盖。
如果希望再次备份时,直接将以前的备份结果覆盖。
可以在备份时,切换到“备份数据库”对话框的“选项”选项,选择“覆盖所有现有备份集”单选按钮,如图9-5所示。
图9-5“备份数据库”对话框的“选项”选项
用户还可以通过Transact-SQL语句中的BACKUPDATABASE命令来完成数据库的完整备份。
Transact-SQL代码如下:
1.--将数据库完整备份到物理备份设备
2.
3.BACKUP DATABASE Practice_JWGL
4.
5.TO DISK ='D:
\Practice_JWGL\Practice_JWGL.bak'
6.
7.GO
8.
9.--将数据库完整备份到逻辑备份设备
10.
11.BACKUP DATABASE Practice_JWGL
12.
13.TO BK_JWGL
14.
15.GO
9.4.2 差异备份
在数据库的完整备份中,数据库中的所有内容都被备份到备份文件中。
如果数据库的容量非常大,那么备份所需要的时间将会很长,这将影响到数据库的正常使用。
而完整差异备份刚好解决了这个问题,因为差异备份仅记录自上次完整备份后更改过的数据。
因此,它比数据库完整备份要小,备份时间也更短,可以简化频繁的备份操作,减少备份数据库时所占用的系统资源。
注意:
差异备份基于以前的完整备份,而不是基于上一次的差异备份。
因此,在还原的时候,只需要指定差异备份文件和最近一次的完整备份,就可以进行还原了。
要在SQLServerManagementStudio工具中,进行差异备份。
只需在“备份数据库”对话框的“常规”选项页的“备份类型”列表框中选择“差异”类型即可。
单击“确定”按钮,就可以将数据库的更改备份到备份文件中。
技巧:
用户可以查看BK_JWGL逻辑备份设备里的内容,如图9-6所示。
图9-6 BK_JWGL逻辑备份设备里的内容
同样,可以通过Transact-SQL语句中的BACKUPDATABASE命令来完成数据库的差异备份。
Transact-SQL代码如下:
1.--将数据库差异备份到物理备份设备
2.
3.BACKUP DATABASE Practice_JWGL
4.
5.TO DISK ='D:
\Practice_JWGL\Practice_JWGL.bak'
6.
7.WITH DIFFERENTIAL
8.
9.GO
10.
11.--将数据库差异备份到逻辑备份设备
12.
13.BACKUP DATABASE Practice_JWGL
14.
15.TO BK_JWGL
16.
17.WITH DIFFERENTIAL
18.
19.GO
说明:
通过WITHDIFFERENTIAL参数,来指定对数据库进行差异备份。
9.4.3 事务日志备份
事务日志包含创建最后一个备份之后对数据库进行的更改。
因此,在进行事务日志备份前,先要进行一次完整的数据库备份才可以。
如果要进行事务日志备份,要求数据库的恢复模式必须是完整恢复模式或大容量日志恢复模式。
在简单恢复模式下是不能进行数据库的备份的,这是因为在简单恢复模式中,数据库的日志记录是不完整的。
要在SQLServerManagementStudio工具中,进行事务日志备份。
只需在“备份数据库”对话框的“常规”选项的“备份类型”列表框中选择“事务日志”类型即可。
单击“确定”按钮,就可以将数据库的日志更改备份到备份文件中。
技巧:
用户可以查看BK_JWGL逻辑备份设备里的内容,如图9-7所示。
图9-7 BK_JWGL逻辑备份设备里的内容
同样,可以通过Transact-SQL语句中的BACKUPLOG命令来完成数据库的差异备份。
Transact-SQL代码如下:
1.--将数据库事务日志备份到物理备份设备
2.
3.BACKUP LOG Practice_JWGL
4.
5.TO DISK ='D:
\Practice_JWGL\Practice_JWGL.bak'
6.
7.GO
8.
9.--将数据库事务日志备份到逻辑备份设备
10.
11.BACKUP LOG Practice_JWGL
12.
13.TO BK_JWGL
14.
15.GO
9.4.4 尾日志备份
通过前面的几种备份方式,可以手动或自动地在指定的时间点进行备份操作。
但是在发生灾难后,如果希望将数据恢复到灾难发生的时间点的状态,就需要拥有最后一次数据库备份与灾难发生之间的数据变化,这时就需要通过尾日志备份来实现。
与正常日志备份相似,尾日志备份将捕获所有尚未备份的事务日志记录。
但尾日志备份与正常日志备份在以下几个方面会有所不同。
Ø 如果数据库被损坏或者是离线,就可以尝试进行尾日志备份。
在日志文件未被破坏且数据库不包含任何大容量日志更改的情况下,尾日志备份才会成功。
如果数据库包含要备份的、在记录间隔期间执行的大容量日志更改,则仅在所有数据文件都存在且未损坏的情况下,尾日志备份才会成功。
Ø 尾日志备份可以使用COPY_ONLY选项独立于定期日志备份进行创建。
仅复制备份不会影响备份日志链。
事务日志不会被尾日志备份截断,并且捕获的日志将包括在以后的正常日志备份中。
这样就可以在不影响正常日志备份过程的情况下,进行尾日志备份。
Ø 如果数据库损坏,尾日志可能会包含不完整的元数据,这是因为某些通常可用于日志备份的元数据在尾日志备份中可能会不可用。
使用CONTINUE_AFTER_ERROR进行的日志备份,可能会包含不完整的元数据,这是因为此选项将通知进行日志备份而不考虑数据库的状态。
Ø 创建尾日志备份时,也可以同时使数据库变为还原状态。
使数据库离线可保证尾日志备份包含对数据库所做的所有更改,并且随后不对数据库进行更改。
当需要对某个文件执行离线还原时,以便与数据库匹配,或按照计划故障转移到日志传送备用服务器并希望切换回来时,会用到此操作。
要实现对数据库的尾日志备份,则需要在BACKUPLOG语句中使用NO_TRUNCATE选项。
使用此选项,相当于同时指定COPY_ONLY和CONTINUE_AFTER_ERROR。
Transact-SQL代码如下:
1.--将数据库尾事务日志备份到物理备份设备
2.
3.BACKUP LOG Practice_JWGL
4.
5.TO DISK ='D:
\Practice_JWGL\Practice_JWGL.bak'
6.
7.WITH NO_TRUNCATE
8.
9.GO
10.
11.--将数据库尾事务日志备份到逻辑备份设备
12.
13.BACKUP LOG Practice_JWGL
14.
15.TO BK_JWGL
16.
17.WITH NO_TRUNCATE
18.
19.GO
9.4.5 文件和文件组备份
文件和文件组备份指在进行数据库备份时,只备份单独的一个或几个数据文件或文件组,而不是备份整个数据库。
与完整数据库备份相比较,文件备份的主要优点是对大型的数据库备份和还原的速度提升很多,主要的缺点是管理起来比较复制。
如果某个损坏的文件未备份,那么媒体介质故障可能导致无法恢复整个数据库。
因此,必须维护完整的文件备份,包括完整恢复模式的文件备份和日志备份。
注意:
一次只能进行一个文件备份操作。
可以在一次操作中备份多个文件。
要在SQLServerManagementStudio工具中进行文件和文件组备份。
只需在“备份数据库”对话框的“常规”选项页的“备份组件”列表框中选择“文件和文件组”选项,打开“选择文件和文件组”对话框(如图9-8所示)。
在该对话框中,选择要备份的文件和文件组即可。
最后,单击“确定”按钮,就可以将数据库的文件和文件组备份到备份文件中。
图9-8“选择文件和文件组”对话框
如果要使用Transact-SQL语句来进行文件和文件组的备份,需要在BACKUPDATABASE语句的后面使用FILE关键字来标识所选的文件,使用FILEGROUP关键字来标识所选的文件组。
Transact-SQL代码如下:
1.--将数据库文件和文件组备份到物理备份设备
2.
3.BACKUP DATABASE Practice_JWGL
4.
5.FILE =N'Practice_JWGL',
6.
7.FILEGROUP ='PRIMARY'
8.
9.TO DISK ='D:
\Practice_JWGL\Practice_JWGL.bak'
10.
11.GO
12.
13.--将数据库文件和文件组备份到逻辑备份设备
14.
15.BACKUP DATABASE Practice_JWGL
16.
17.FILE =N'Practice_JWGL',
18.
19.FILEGROUP ='PRIMARY'
20.
21.TO BK_JWGL
22.
23.GO
9.4.6 备份的验证与校验
在备份完成后,可以通过RESTOREVERIFYONLY语句来对备份证件进行验证。
验证备份可以检查备份在物理上是否完好无损,以确保备份中的所有文件都是可读、可还原的,并且在需要使用它时可以还原备份。
验证备份时,并不会验证备份中数据的结构,而只是验证其在物理上的完整性。
但是,如果备份使用了WITHCHECKSUM选项来创建,则可以很好地表明备份中数据的可靠性。
下面使用RESTOREVERIFYONLY语句来验证备份文件是否有效,Transact-SQL代码如下:
1.--将数据库完整备份到物理备份设备
2.
3.BACKUP DATABASE Practice_JWGL
4.
5.TO DISK ='D:
\Practice_JWGL\Practice_JWGL.bak'
6.
7.GO
8.
9.--将数据库完整备份到逻辑备份设备
10.
11.BACKUP DATABASE Practice_JWGL
12.
13.TO BK_JWGL
14.
15.GO
16.
17.--验证物理备份设备上的备份文件是否有效
18.
19.RESTORE VERIFYONLY FROM DISK ='D:
\Practice_JWGL\Practice_JWGL.bak'
20.
21.GO
22.
23.--验证逻辑备份设备上的备份文件是否有效
24.
25.RESTORE VERIFYONLY FROM BK_JWGL
26.
27.GO
用户也可以在SQLServerManagementStudio工具中,只需在“备份数据库”对话框的“选项”选项中的“可靠性”选项的复选框,来设置备份的验证与校验等可靠性选项,如图9-9所示。
图9-9 备份的“可靠性”选项