2008年(8065)
分类: 服务器与存储
2008-05-28 16:25:37
如果数据库的数据段与日志段位于不同设备,则不能使用dump transaction命令复制日志,这时只有使用dump Database
命令复制包括日志在内的整个数据库。如master数据库和modle数据库均将事务日志和数据存储在同一数据库设备上,所
以不能单独备份其事务日志,必须用dump Database命令备份整个数据库,同时需要定期使用有truncate_only选项的
dump transaction命令清除数据库事务日志。
3.远程备份
本地机配置:
(1) 本地机主服务和备份服务都必须启动;
(2) 本地机的interfaces文件中需要增加远程机的备份服务器名。
远程机配置:
(1)远程备份服务已经启动;
(2)远程备份服务器名与本地服务器名需要具有不同的网络名。
三. Sybase数据库的恢复
1. master数据库故障下,adaptive server的恢复
由于master数据库有主设备的中央控制特性,它的表配置控制所有adaptive server功能及数据库和数据设备,因此
master数据库出现了故障对用户来说将是灾难性的。master数据库的损坏可能是因master设备或数据内部损坏引起的,
一般情况下如果出现以下故障,可以确定master数据库已被破坏:
.Adaptive Server不能启动
.dbcc报告有错误
.有频繁的输入/输出错误
master数据库故障下,adaptive server的恢复过程因master数据库备份是否存在而不同。
Master数据库备份不存在
按以下方法恢复:
.使用bldmastr命令建立一个新的master设备
假设SYBASE安装在c:\sybase下,
在c:\sybase\ASE-12_0\bin\ 下执行bldmastr 命令
(bldmastr 是sybase/bin目录下的实用程序)
.打开记事本编缉adaptive server的run file(加-d参数),使其指向新的master设备。
Run file文件在sybase\ase-12_0\install\ 目录下(如:RUN_test.bat)
.在单用户模式下启动server。
命令:Startserver –f run_filename –m 如下图:
以这种方式启动的Adaptive Server将自动配置为允许更新系统表,不允许其它操作。
.修改新的master数据库大小,使其与原来的大小一致。
用bldmastr命令建立的master数据库默认仅有3M,需恢复到与原来一致。如:使用命令alter database master on master=77将Master数据库恢复到80M.
.执行disk reinit命令恢复sysdevices表的内容
命令:Disk reinit
Name=”device_name”,
Physname=”physicalname”,
Vdevno=virtual_device_number,
Size=number_of_blocks[,vstart=virtual_address,cntrltype=controller_number]
如创建一个名称为wfds的数据库SQL语句如下:
disk init
name="wfds",
physname="c:\testdat\wfds.dat",
vdevno=8,
size=5120
.执行disk refit 命令恢复sysdatabases表和sysusages表的内容
disk refit只能由系统管理员从master数据库运行,权限不能转移给其它用户。命令语法为:
disk refit
go
在disk refit重建系统表后,server将关闭。
.在单用户模式下执行installmaster T-SQL脚本和installmodel T—SQL脚本。
Isql –Usa -P –ic:\Sybase\scripts\Ase-12_0\installmaster
sql –Usa –P –ic:\Sybase\scripts\Ase-12_0\installmodel
用sp_addlogin重建登录用户
以常规模式重新启动Adaptive Server
startserver –f RUN_servername
启动后,仔细检查adaptive server,看是否有错误信息,使用dbcc checkalloc对每个数据库进行一致性检查,使用常
规转储命令对master设备做好备份,修改sa口令。
Master数据库备份存在
如果你有master数据库备份,adaptive server的恢复就简单多了。前四步与master数据库备份不存在时相同。然后,再按以下步骤进行:
.检查backup server的sysservers表中的内容。
命令如下:
select * from sysservers where srvname=’syb_backup’
检查此命令输出结果中srvname,如果与interface文件中Backup Server不相同,则必须更新sysservers。
假设原backup server的名字为wfds_backup则执行命令:
update sysservers set srvnetnam=’wfds_baxkup’
where srvnetname=’syb_backup’
.装载master数据库的备份
首先必须以单用户模式启动Server,其次新建的master数据库必须大于或等于原来的master数据库大小。命令如下:
load database 数据库名(master) from 路径( “c:\bak\master.dat“)
恢复完master数据库,关闭Server。
.执行installmode T-SQL脚本,恢复model数据库
Isql –Usa –P –ic:\Sybase\scripts\Ase-12_0\installmodel
在常规模式下启动server。
2. 非master数据库故障下,adaptive server的恢复
设备离线(offline)故障
假设数据库名为wfds,处理如下:
sp_configure”allow updates to system tables”,1
update sysdatabases set status=status&~256
where dbid=db_id(‘wfds’)
因为数据库的状态记录在数据表sysdatabase的status字段中,根据库被标志为not recovered时,状态位为64;数据库被标志为suspect时关态位为256;数据库被标志为loading时,状态位为了32;如果发生错误,要手工关掉数据状态位为256的数据库,并重新启动server。
设备损坏故障
首先用Drop databse命令删损坏的数据库,用sp_dropdevice删除损坏的设备,再用disk init创建一个新设备,用create database创建数据库,数据库的大小和段都要与原库相同。语法如下:
disk init
name="wfds",
physname="c:\testdat\wfds.dat",
vdevno=8,
size=5120
/*以上为建立数据库设备sql语句*/
disk init
name="wfds",
physname="c:\testlog\wfds.log",
vdevno=9,
size=5120
/*以上为建立数据库日志设备sql语句*/
create database test on source = 10
log on sourcelog = 10
/以上为建立数据库test SQL语句*/
最后使用load database和load transaction 命令从备份中恢复数据库及事务日志并用dbcc检查数据库的一致性。
四、结束语
.如果你是系统管理员,完整保留建立数据库设备和数据库的脚本是工作的重要组成部分。在出现灾难性故障时可使重创整个系统成为可能。
.关闭master数据库缺省状况,在master设备上不要建立任何用户对象。
.定期检查日志内容,便于及时排错,维持系统正常运转。同时还要定期删除旧的日志记录,将日志文件保持在一个便于管理的水平,这样不仅可以节省磁盘空间,也更容易定位当前错误。
.在执行灾难性事故恢复之前,按以上步骤并结合自已的工作经验制定一个适合系统需求的简明大纲表是一个非常不错的选择。
.归根到底,备份master数据库是执行SYBASE数据库备份与恢复计划的基础,master数据库不仅包含整个数据库系统结构 的详细资料,它还跟踪Adaptive Server数据库、设备和组成数据库的设备段。