Sybase数据库的备份与恢复
1.实验目的: (2)
2.实验平台及环境: (2)
3.实验内容: (2)
4. 实验步骤: (2)
◇用企业管理器或存储过程创建一个备份设备,手工命令Sybase 做各种备份。
(2)
◇任意修改数据库(包括删除),然后将某个手工完成的备份恢复,并检查数据库状态是否和备份前一样。
这一过程要对所有种类的备份都做一遍。
(9)
◇为“学生选课”设置一个备份计划,要求每当CPU空闲时采用多种方式进行数据库备份。
(13)
☆方法一: (13)
☆方法二: (13)
☆方法三: (15)
5. .................................................................. 遇到的问题及解决方案. (16)
1.实验目的:
1.理解Sybase的数据备份和恢复机制。
2.掌握Sybase的数据备份和恢复的基本概念,例如备份方式(增量备份和完全
备份)、备份介质(文件或者设备)等等。
3.掌握备份和恢复的实际操作,能够备份和将备份恢复,特别是能够恢复到一个新的
数据库中。
4.理解备份策略或者备份计划的概念,实际书写脚本进行自动备份。
2.实验平台及环境:
操作系统
安装软件:ASE 15-0
3.实验内容:
◆手工创建数据库的各种备份并恢复到原数据库和新(是否为空都可以)数据库中。
◆编写T-SQL脚本实现自动备份计划。
4. 实验步骤:
1、用企业管理器或存储过程创建一个备份设备,手工命令Sybase做各种备份。
第一步:设置允许更新,并修改服务器名
Sybase数据库一开始无法进行备份操作,需要在master中设置,设置代码如下:sp_configure 'allow update',1
go
update master..sysservers set srvnetname='LENOVOPC_BS' where
srvname='SYB_BACKUP'
go
注:srvnetname为旧服务器名称srvname为新服务器名称,但这个新服务器是
安装时取的服务器名,不是随意取的
即首先修改权限为“允许更新”,再把master中的备份服务器名改为和现在所使用的服务器名相同:
第二步:此时开启备份服务器
并且
此时会出现认证信息
第三步:查看备份设备信息。
通过Select * From master..sysdevices Where name like "%dump%"来查看备份设备信息。
参数解释:如果status列出的值是16或者24(表示设备是卸出设备),那么cntrltype 列的值表示卸出设备的类型。
卸出设备的值可以是:2~8。
其中,2:表示数据是通过磁盘字节流接口卸出的。
卸出设备可以是磁盘、部分磁盘,或操作系统文件。
在不指明卸出设备时,默认为操作系统文件。
3~8:表示磁带卸出设备。
因为没有磁带卸出设备,所以,2是我们的最佳选择。
第四步:新增加一个备份数据库设备,设置为备份
为防止空间容量不足等问题,新增加一个备份数据库设备,这个先再sybase条件下新增一个文件夹,名字为dbBackUp
设置为磁盘备份,而不是磁带备份
完成:
第五步:此时,启动服务
创建成功:
第七步:只备份日志:
后续操作和备份全部数据一致,故不赘述,最后截图
对于master数据库或其数据与日志放在同一逻辑设备上的小型数据库(小于4M)使用DUMP DATABASE 命令备份数据库和事务日志。
对于大型数据库而言,应当把数据与事务日志放在不同的数据库设备上。
(在建数据库时用CREATE DATABASE ON ……LOG ON……来实现)这样可以作到单独备份数据与日志。
注意:DUMP DATABASE只备份数据库,并不清除日志,若不使用DUMP
TRAN命令删除日志,日志会越来越大。
2、任意修改数据库(包括删除),然后将某个手工完成的备份恢复,并检查数据库状态是否和备份前一样。
这一过程要对所有种类的备份都做一遍。
第一步:删除Student里面的一条记录
执行还原:
执行时显示:
日志信息如下:
此时,stuVSclass正处于离线状态,选择,让其在线
此时,恢复日志中出现新的内容
恢复前,删掉了学号为g9940204
恢复后,
3、为“学生选课”设置一个备份计划,要求每当CPU空闲时采用多种方式进行数据库备份。
方法一:
dump database stuVSclass to BackUP
上面的问号只是代表不能显示中文,不影响正常的数据备份和恢复。
方法二:
第一步:通过bat文件和windows计划任务:
这个是全库备份(数据+日志),备份方式采用了文件系统备份方式
编写SQL文件,包含如下内容:
dump database stuVSclass to "E:\sybase\dbBackUp\BackUP"
go
命名dumpdatabase.sql
编写.bat文件,包含如下内容:
isql -Usa -P -S -idumpdatabase.sql
-odumpdatabase.dump
命名为dump.bat
第二步:在win7下创建计划任务
选择脚本,刚刚创建的dump.bat,然后定时计划启动
方法三:
通过SQL脚本:
同过计划任务方法比较麻烦且最短只能实现1天1备份,若要备份间隔更短只有通过SQL脚本,现以30分钟备份间隔为例脚本如下:
declare @count int
set @count=1
while @count>0
begin
declare @sql char(255)
select @sql='dump database stuVSclass to '+"'
E:\sybase\dbBackUp\BackUP"+convert(char(8),getdate(),112)+'num'+convert (varchar,@count)+".dump'"
exec (@sql) waitfor delay '00:30:00'
set @count=@count+1
end
go
该脚本每30分钟执行一次备份,每次备份生成标有日期和序号的不同备份文件。
执行结果如下:
5.遇到的问题及解决方案
1:开始使用sp_configure 'allow update',1
go
update master..sysservers set srvnetname='RR_BS' where
srvname='SYB_BACKUP'
go
可是怎么也不点不开database右键中的backup,总是说没有连接,后来才发现,srvnetname是安装时候的BS的名字,而不是随意起一个名字
2:在创建成功备份数据库时,恢复却不能执行,出现了如下提示
原来在恢复的时候,要恢复的数据库是不能正在使用的,不必关掉interactive SQl,只要不正在使用要恢复的数据库即可。
3:在恢复数据库的时候,执行了好多次正常创建,正常恢复,但是却恢复不了数据,最后查看日志发现我原来的数据库太大了,空间不足,然后,删掉了该数据库和数据库设备,重新设置了备份环境。
4:这里显示的是乱码,能够正常进行恢复,不受影响,
这个想要修改字符集,但是
这个环境下改了半天也没有成功。
但幸好结果不影响备份,就不管它了。
5:最后的备份计划,既使用了既定语句,也利用了windows的计划任务与sybase的结合实现自动的每日备份。
更用脚本实现了更短时间的备份,这些对数据库的学习有很大的帮助,从中获益匪浅。
而且让我知道了,要想随心所欲,还是得掌握底层语言
总之,这次实验收获颇丰!。