您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > sybase数据库备份和恢复方案
1.SYBASE数据库备份和恢复在执行此备份恢复计划时,一定要保留diskinit,createdatabase和alterdatabase命令的脚本,否则恢复数据库将不能通过下列脚本进行恢复,只能通过数据库管理员进行恢复。如果用户数据库数据文件丢失、损坏,使用户数据库脱机,或master数据库损坏,此方案最多将会损失一天的数据。如果用户数据库因为其他问题损坏,用户数据库仍保持联机状态,可以备份出当天的日志文件,则此方案将会恢复到损失那一该的所有数据。如果master数据库损坏,则只能通过此方案提供的恢复步骤进行恢复。1.1.用户数据库的备份与恢复:1.1.1.用户数据库的例行备份计划:1.每周备份用户数据库:每周日晚11:00运行备份用户数据库脚本dump_db.bat,脚本代码如下:echo%1echo%2echodumpdatabase%1to%2%date:~0,4%%date:~5,2%%date:~8,2%.bakdump_db.sqlechogodump_db.sqlisql-Usa-P-idump_db.sql-odump_db.log脚本使用说明:dump_db参数1参数2参数1:要备份的数据库名称;参数2:备份文件的存放路径。备份指令写入文件dump_db.sql中,备份过程中的日志写入文件dump_db.log中。2.每日备份事务日志:每日晚10:00运行备份事务日志脚本dump_tran.bat,脚本代码如下:echo%1echo%2echodumptransaction%1to%2%date:~0,4%%date:~5,2%%date:~8,2%.trandump_tran.sqlechogodump_tran.sqlisql-Usa-P-idump_tran.sql-odump_tran.log脚本使用说明:dump_tran参数1参数2参数1:要备份日志的数据库名称;参数2:备份文件的存放路径。备份指令写入文件dump_db.sql中,备份过程中的日志写入文件dump_db.log中。1.1.2.用户数据库的故障恢复:1.如果故障发生在用户数据库备份之后,事务日志备份之前,数据库状态为suspect或notrecovered(数据库状态可以通过命令sp_helpdb查看status值确认),那么恢复方案是:运行脚本loaddb_1.bat,脚本代码如下:echo%1echo%2echo%3calldump_notrunc.bat%1%2callload_db.bat%1%3callload_notrunc.bat%1%2callonline_db.bat%1calldump_db.bat%1%2脚本使用说明:loaddb_1参数1参数2参数3参数1:要恢复的数据库名称;参数2:恢复数据库之前做的事务日志备份地址;参数3:恢复数据库之后做的数据库备份地址。恢复指令完成后,会产生sql文件dump_notrunc.sql,load_db.sql,load_notrunc.sql,online_db.sql,dump_db.sql;产生log文件dump_notrunc.log,load_db.log,load_notrunc.log,online_db.log,dump_db.log脚本中调用的批处理脚本分别如下:dump_notrunc.bat:echo%1echo%2echodumptransaction%1to%2%date:~0,4%%date:~5,2%%date:~8,2%_notrunc.tranwithno_truncatedump_notrunc.sqlechogodump_notrunc.sqlisql-Usa-P-idump_notrunc.sql-odump_notrunc.logload_db.bat:echo%1echo%2echoloaddatabase%1from%2load_db.sqlechogoload_db.sqlisql-Usa-P-iload_db.sql-oload_db.logload_notrunc.bat:echo%1echo%2echoloadtransaction%1from%2%date:~0,4%%date:~5,2%%date:~8,2%_notrunc.tranload_tran.sqlechogoload_tran.sqlisql-Usa-P-iload_notrunc.sql-oload_notrunc.logonline_db.bat:echo%1echoonlinedatabase%1online_db.sqlechogoonline_db.sqlisql-Usa-P-ionline_db.sql-oonline_db.logdump_db.bat:echo%1echo%2copy*.tranc:\--复制到磁带中,没有磁带机,先复制到C盘。copy*.bakc:\--复制到磁带中,没有磁带机,先复制到C盘。del%2*.trandel%2*.bakechodumpdatabase%1to%2%date:~0,4%%date:~5,2%%date:~8,2%.bakdump_db.sqlechogodump_db.sqlisql-Usa-P-idump_db.sql-odump_db.log2.如果故障发生在用户数据库备份和事务日志备份之后,数据库状态为suspect或notrecovered(数据库状态可以通过命令sp_helpdb查看status值确认),那么恢复方案是:运行脚本loaddb_2.bat,脚本代码如下:echo%1echo%2echo%3calldump_notrunc.bat%1%2callload_db.bat%1%3for/r%2%%cin(*.tran)docallload_tran.bat%1%%ccallload_notrunc.bat%1%2callonline_db.bat%1calldump_db.bat%1%2脚本使用说明:loaddb_2参数1参数2参数3参数1:要恢复的数据库名称;参数2:恢复数据库之前做的事务日志备份地址;参数3:恢复数据库之后做的数据库备份地址恢复指令完成后,会产生sql文件dump_notrunc.sql,load_db.sql,load_tran.sql,load_notrunc.sql,online_db.sql,dump_db.sql;产生log文件dump_notrunc.log,load_db.log,load_tran.log,load_notrunc.log,online_db.log,dump_db.log脚本中调用的批处理脚本与第一种方案基本相同,只是多了一个load_tran.bat脚本,代码如下:load_tran.bat:echo%1echo%2echoloadtransaction%1from%2load_tran.sqlechogoload_tran.sqlisql-Usa-P-iload_tran.sql-oload_tran.log3.如果用户数据库数据文件丢失,数据库状态为offline,则恢复方案是:9在master数据库中执行下列命令:sp_configure“allowupdatestosystemtables”,1;updatesysdatabasessetstatus=256wherename=’损坏的数据库名称’;9重新启动数据库服务器;9运行脚本del_db.bat,删除损坏数据库及相关数据设备,脚本代码如下:echoexecs_dropdbdevdel_db.sqlechogodel_db.sqlisql-Usa-P-idel_db.sql-odel_db.log脚本说明:脚本运行完成后,会产生日志文件del_db.log。脚本中运行的存储过程保存在master数据库中,存储过程代码如下:createprocedures_dropdbdevasbegindeclare@devvarchar(50)declare@phynmvarchar(50)declare@szint/*创建临时表,保存数据设备信息*/createtable#dev_inf(devvarchar(50),phynmvarchar(50),szint)/*保存数据设备信息*/insertinto#dev_infselectb.name,b.phyname,sum(c.size)fromsysdatabasesa,sysdevicesb,sysusagescwherea.name='test'anda.dbid=c.dbidandc.vstart=b.lowgroupbyb.phyname/*删除数据库*/dbccdbrepair(test,dropdb)/*删除数据库设备*/declaredev_curcursorforselectdev,phynm,szfrom#dev_infopendev_curfetchdev_curinto@dev,@phynm,@szwhile@@sqlstatus=0beginexecsp_dropdevice@devfetchdev_curinto@dev,@phynm,@szendclosedev_curdeallocatecursordev_curend9删除损坏数据库及相关数据设备后,利用已保存的建库脚本重建数据库;9根据损坏数据库发生的时间,选择恢复方案,方案如前述两种方案,在此不再说明。1.2.Master数据库的备份与恢复:1.2.1.Master数据库的备份1.备份Master数据库的情况:在执行影响磁盘、存储、数据库或段的命令后,都要备份master数据库。因为数据库事务日志与数据存储在同一数据库设备上,所以不能单独备份其事务日志。必须使用dumpdatabasemasterto“”dumptransactionwithtruncate_only清除master数据库的事务日志。2.备份Master数据库:bcpsysusages/sysdatabases/sysdevices/sysloginroles/sysloginsDumpdatabasemasterto“备份路径”1.2.2.Master数据库的恢复1.关闭AS,使用dataserver建立新的master数据库和主设备UNIX:dataserver–d/dev/master_device.dat–b50MNT:sqlsrvr–dd:\sybase\master.dat–b50M2.以主恢复方式启动ASUNIX:编辑RUN_dbserver文件,添加-m参数–startserver–fRUN_dbserverNT:sqlsrvr–dd:\sybase\master.dat–sdbserver–ec:\sybase\server\INSTALL\errorlog–ic:\sybase\server\ini–Mc:\sybase-m3.在sysusages中重建master数据库的分配确定master(dbid=1表示是master)的vstart值,保证master的vstart值与副本中的一致。不一值则要通过alterdatabasemasterondefaultsize=“xM”。4.更新sysserver表中的BackupServer网络名保证文件interfaces中的BackupServer名称与系统表“sysservers”中的“srvnetname”一致,否则需要更改系统表“sysservers”中的“srvnetname”字段,使其一致。5.核实BackupServer正在运行UNIX:showserver6.使用loaddatabase装载master数据库的最新备份UNIX:loaddatabasemasterfrom“/dev/nrmt4”NT:lo
本文标题:sybase数据库备份和恢复方案
链接地址:https://www.777doc.com/doc-6078170 .html