Sybase的备份及恢复.docx

上传人:b****3 文档编号:3884196 上传时间:2022-11-26 格式:DOCX 页数:10 大小:23.14KB
下载 相关 举报
Sybase的备份及恢复.docx_第1页
第1页 / 共10页
Sybase的备份及恢复.docx_第2页
第2页 / 共10页
Sybase的备份及恢复.docx_第3页
第3页 / 共10页
Sybase的备份及恢复.docx_第4页
第4页 / 共10页
Sybase的备份及恢复.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

Sybase的备份及恢复.docx

《Sybase的备份及恢复.docx》由会员分享,可在线阅读,更多相关《Sybase的备份及恢复.docx(10页珍藏版)》请在冰豆网上搜索。

Sybase的备份及恢复.docx

Sybase的备份及恢复

Sybase的备份及恢复

1,概述

本文档以用户需求及在集成中可能遇到的备份恢复需求为基础,以可指导项目快速集成为目的,重点在于说明Sybase备份方案的实施及备份后的恢复方法,并不全面探讨各种备份恢复方法、技巧、应用。

想仔细了解,请参考SYBASE出的管理手册。

2,备份恢复基础

2.1,查看数据库大小

Sp_helpsegmentlogsegment|system|"default"

说明:

分别计算日志大小、系统表大小、用户表大小(需要data和log分开存储)

注:

如果data和log没分开,可使用sp_spaceusedsyslogs计算log的大小。

2.2,设置数据库自动删除日志

在开发数据库上,一般设置sp_dboption"trunklogonchkpt",true//检查点自动删除日志。

满足日志快速增长的维护,在生产数据库上一般设置为false。

2.3,恢复时设置消息显示

在数据库恢复时,默认恢复信息是不在控制台显示的,可使用sp_configure"printrecoveryinformation",1设置为显示。

或在恢复时,使用命令setflushmessageon查看。

2.4,使用磁带备份时更换磁带

如直接用磁带备份,sp_volchanged命令可通知backupserver已经更换磁带可以继续备份。

2.5,数据库自动恢复顺序

系统每次启动的时候,都进行自动恢复,顺序为:

master、sybsystemprocs、model、tempdb、sybsystemdb、sybsecurity。

也可以使用sp_dbrecovery_orderdb_name,recover_num定义用户数据库的恢复顺序(不能指定系统数据库)。

如果要插入改变顺序,则再使用db_name,recover_num,force选项。

取消则设置recover_num为-1即可,如果不行,强制使用"force"选项,sp_dbrecovery_order就可查看当前的恢复顺序设置。

2.6,设置数据库最大恢复时间

sp_configure"recoveryintervalinminutes",3

可指定每个数据库的最大恢复时间,这个时间决定了数据库检查点的执行时间,默认为5分钟,其实还与数据库大小、数据活动是否频繁等有很大关系,建议一般应用不修改。

2.7,阻塞和恢复对数据库的更新

quiescedatabasehold允许在对每个数据库设备的磁盘进行取消镜像或外部复制时,阻塞对一个或多个数据库的更新。

此时允许对数据库进行只读操作,要恢复对数据库的更新,在完成相应操作后,发出quiescedatabaserelease命令即可。

quiescedatabasetag_nameholddb_name[,db_name][forexternaldump]

quiescedatabasetag_namerelease

一次最多允许8个数据库被hold

说明:

tag_name为用户设置的释放数据库列表的标签。

例:

1>,quiescedatabasepubs_tagholdpubs2

2>,go

1>,quiescedatabasepubs_tagrelease

2>,go

2.8,Master系统数据库平时维护配置注意事项

1)不要在master主设备上存储用户数据或创建任何非master、tempdb、model数据库。

2)始终bcp备份重要的系统表

3)每次执行init数据库设备、创建或变更数据库或添加新的服务器名等等操作之后,都要备份master数据库。

2.9,Master数据库数据库日志的特殊

master数据库日志与数据存储在同一个设备上,而且不能移动master数据库的日志,所以必须经常使用dumpdatabase命令备份master数据库,且定期使用truncate_only选项的dumptransaction删除日志。

model数据库也应该经常备份,不然恢复时也要使用保留的修改命令重新应用。

他的日志清除方法和master数据库一样。

sybsystemprocs数据库与master的备份一样,默认数据库设置为trunclogonchkpt,不需要单独清除日志,恢复时使用installmaster命令,然后输入所有改动,不然就得对其进行备份。

2.10,备份数据库

如果使用dumpdatabase和loaddatabase从一个机器运动数据库到另一个机器(同一硬件和软件平台),必须确保被恢复和原来的设备分配情况相同。

备份master的时候,一定要取消主设备镜像,防止启动时寻找旧镜像文件启动,在恢复前,应将数据库设置为单用户模式。

dumpdatabase命令备份整个数据库(包括数据和日志),但该备份操作他不会删除已备份的日志。

dumpdatabase命令运行的时候,用户可继续对数据库进行访问。

2.10.1,备份到磁盘

1>,dumpdatabasedb_nameto"备份目标绝对路径/备份文件名"//备份到本地磁盘

1>,dumpdatabasedb_nameto"备份目标绝对路径/备份文件名"atremote_server 

//远程备份到远程磁盘。

前提:

在DBServer上配置Client的baackupserver服务名,at该backupserver服务名,可在Client上执行备份命令(当然要在Client上配置Server的主服务名)。

要完成远程备份,需要修改允许远程备份的动态参数为1,设置为0为禁止:

sp_configure"allowremoteaccess",1

2.10.2,备份到磁带

1>dumpdatabasedb_nameto"/dev/nrmt4"withinit//初始化(设备被覆盖)

1>dumpdatabasedb_nameto"/dev/nrmt4"//默认noinitnounload

1>dumpdatabasedb_nameto"/dev/nrmt4"withunload//磁带回卷并卸下

1>dumpdatabasedb_nameto"/dev/rmt/0"

可使用:

sp_configure"taperetentionindays",15//设置静态参数,在dump时候带retaindays设置磁带可被重写的最低天数,以上设置为15天。

2.11,备份日志

dumptransaction命令备份从上一次数据库或日志备份以来改变了的日志。

备份完后,dumptransaction命令会删除已备份的日志。

而且只有日志存储在自己单独的logsegment上时,才可使用该命令备份。

dumptransactiondb_nameto"备份目标绝对路径/备份文件名"atremote_server 

dumptransactiondb_nameto"dev/rmt/0"withno_truncate

dumptransaction选项:

withno_truncate//备份但不删除日志

withno_log//备份日志的过程不记录日志

withtruncate_only//只删除日志不备份

withno_log作为作后手段,并仅在withno_truncate失败后使用一次,此前应该使用alterdatabase为数据库分配更多的空间。

2.12,一般数据库故障恢复办法

在数据库发生故障时,请参考如下步骤:

1)马上对故障发生时的数据库执行dumptransactionwithno_truncate命令备份日志。

2)使用loaddatabase恢复最新的数据库备份。

3)依次使用已备份的日志增量备份loadtransaction增量恢复应用,然后再使用故障发生时备份的日志进行恢复。

也可使用loadtransaction...until_time指定恢复到某个时候。

4)由于在恢复过程中,数据库是脱机状态的,所以恢复完后,应该使数据库onlinedatabase。

5)检查是否恢复到故障发生时的数据库状态。

3,备份恢复数据库

默认adaptiveserver可同时备份或恢复6个数据库,但可以修改增加16K的缓冲区,如下:

sp_configure"numberoflargei/obuffers",12//静态参数

3.1,备份用户数据库

dumpdatabase

dumptransaction

除了安排好合理的例行备份外,还应该在以下情况发生时备份数据库,节省数据库失败时的恢复时间:

1),升级数据库、创建索引、执行无记录操作、运行dumptranwithno_log或dumptranwithtruncate_only之后。

对于日志和数据放在同一设备的数据库,使用dumpdatabasedb_nametomy_device后,使用dumptransactiondb_namewithtruncate_only删除日志。

由于使用withtruncate_only的时候,还是要写一些数据到磁盘,如果没有足够的空间,则可以使用withno_log来删除日志:

dumptransactiondb_namewithno_log;应该是用alterdatabase扩展数据库空间,withtruncate_only和withno_log后,是没有办法恢复从上次备份后生成的日志、提交的事务的。

详细备份过程请参考"2.10备份数据库"

3.2,恢复用户数据库

loaddatabase

loadtransaction

从备份中恢复数据库,此数据库必须存在,可以使用createdatabase的forload选项创建数据库;或通过恢复覆盖一个已有数据库,这样会覆盖已有数据库的所有信息。

磁盘发生故障原因不同,如只是一个块坏,则数据库可能还是能正常工作一段时间,除非运行dbcc命令,如果是整个数据库不能使用,则会把数据库标记为可疑,然后写一条告警信息,数据库不可用了。

比如设备损坏,建议恢复流程:

1,获取设备上每个数据库的当前日志的备份(withno_truncate)

2,检查设备上每个数据库的空间使用情况

3,删除每个数据库

4,删除发生故障的设备

5,初始化新设备

6,重新创建数据库,每次创建一个

7,将最近的数据库备份load到每个数据库

8,按备份的日志时间开始恢复每个日志备份

下面对各步骤详细介绍

3.2.1,第一步:

获取设备上每个数据库的当前日志的备份

dumptransactiondb_nameto"路径/名字"[atremote_server]withno_truncate

3.2.2,第二步:

检查设备上每个数据库的空间使用情况

1)在master中,检查已损坏数据库的设备分配和使用情况:

selectsegmap,sizefromsysusageswheredbid=db_id("db_name"

2)查看输出结果,segmap值为3的表示一个数据分配,4表示一个日志分配,更高的表示用户自定义段,size表示大小

3)sp_helpdbdb_name

1>selectsegmap,sizefromsysusageswheredbid=db_id("joli_db"

2>go

segmapsize

----------------------

35120

42048

数据:

(5120*2)/1024=10M

日志:

(2048*2)/1024=4M

sp_helpdbjoli_db

1>selectsegmap,sizefromsysusageswheredbid=db_id("testdb"

2>go

segmapsize

----------------------

71536

日志和数据混合在一起

3.2.3,第三步:

删除每个数据库

dropdatabasedb_name

如果在使用dropdatabase时,系统由于数据库损坏报告错误,则可以使用dbccdbrepair命令的dropdb选项:

dbccdbrepair(db_name,dropdb)

3.2.4,第四步:

删除发生故障的设备

sp_dropdevice

3.2.5,第五步:

初始化新设备

diskinit

3.2.6,第六步:

重新创建数据库

重新创建数据库,每次创建一个,如果没有按sysusages分配与原来匹配的段,则恢复后数据和日志可能会混合在一个设备上。

createdatabasedb_nameondatadev1=20,datadev2=10logonlogdev1=10forload

forload暂时锁定新创建的数据库。

可用命令增加创建的数据库大小alterdatabasedb_nameondatadev3="2M"logonlogdev1="4M"forload如果恢复数据库时又发生故障,则adaptiveserver不会继续恢复已部分恢复的数据库,此时必须重复使用loaddatabase重新恢复。

//forload选项包括了恢复数据库

3.2.7,第七步:

将最近的数据库备份load到每个数据库

loaddatabasedb_namefrom"路径/名字"

3.2.8,第八步:

按备份的日志时间开始恢复每个日志备份

loadtransaction恢复日志时,如果顺序不对,会报告错误,恢复完了,应使用dbcc检查其一致性。

有可使用until_time精确时间恢复:

selectconvert(char(26),getdate(),109)

loadtransactionemployees_dbfrom"/dev/nrmt5"withuntil_time="Mar26199712:

35:

59:

650PM"

联机已恢复数据库

onliedatabasedb_name

3.3,备份系统数据库

除了要经常备份master数据库外,通常在发出如下命令时也要进行备份:

1),diskinit、sp_addumpdevice、sp_dropdevice、磁盘镜像命令

2),分段系统过程sp_addsegment、sp_dropsegment、sp_extendsegment

3),createprocedure、dropprocedure

4),sp_logdevice

5),sp_configure

6),createdatabase、alterdatabase

不然如果master失败,恢复时有些系统表可能需要重新创建。

应对diskinit、createdatabase、alterdatabase的命令脚本进行保存,并对sysdatabases、sysusages、sysdevices、syslogins进行经常备份。

3.4,恢复master系统数据库

恢复系统数据库,可:

1)使用loaddatabase恢复备份

2)使用dataserver、installmaster、installmodel命令创建这些数据库的初始状态

3)混合使用以上两种方法

master数据库坏的症状:

1)adaptiveserver不能启动

2)频繁或破坏性的分段错误或输入、输出错误

3)dbcc报告损坏情况

假设master故障满足:

1)master数据库已损坏或者主设备已损坏

2)有系统表的最新备份

3)主设备只包括master,tempdb,model

4)有master数据库的最新备份,且备份以来,未初始化任何设备,位创建或变更任何数据库

5)服务器使用缺省排序

我们一般使用以下步骤恢复系统数据库。

3.4.1,第一步:

找到系统表备份

sysdatabases,sysdevices,sysusages,sysloginroles,syslogins

用这些备份,可以确保结束时系统可以全部恢复

3.4.2,第二步:

建立新的主设备

注意事项:

1)检查sysusages的备份,如果dbid1只有一行,则转到第5步

2)保留旧设备。

3)使用dataserver命令前,应关闭adaptiveserver。

4)知道主设备的全名和最大大小。

dataserver-d/informix/device/master.dat-b20M

3.4.3,第三步:

以主恢复方式启动adaptiveserver

复制原来的RUN_servername文件为m_RUN_servername,并在文件中dataserver命令行添加-m参数,再使用

startserver-fm_RUN_servername启动数据库

3.4.4,第四步:

重新创建master设备分配

1)从sysdevices(备份)查看每个设备的low和high区间,任何sysusages.vstart值在此范围内的任何数据库分配表示该设备上的分配。

2)再查询sysusages(备份),如果有多行dbid=1的记录,则需要增加master的大小以恢复数据库,alterdatabase增加多大,则根据多出的行区间判断(一般单位为2K)或者size列/512大小,一行对应一条alterdatabase;而且如果只是主设备损坏,则只需分配到master设备最后一行即可。

(master的dbid=1,tempdb的dbid=2,model的dbid=3)

3)检查改变后的sysusages是否与备份一致,要确保一致。

3.4.5,第五步:

检查backupserver的sysservers信息

使用isql登录,检查backupserver的服务名svrname,如果不是SYB_BACKUP,必须更新sysservers为SYB_BACKUP;再检查srvnetname,确保与$SYBASE/interfaces文件中的描述一致,如果不一致,要更新sysservers表以一致。

select*fromsysserverswheresrvname="SYB_BACKUP"

go

begintransaction

updatesysservers

setsrvnetname="PRODUCTION_BSRV"

wheresrvname="SYB_BACKUP"

go

如果修改错误,则发出rollbacktransaction命令回退;如果成功,则发出committransaction命令提交。

3.4.6,第六步:

确认backupserver正在运行

使用showserver命令确认backupserver正在运行,必要也可重新启动backupserver。

3.4.7,第七步:

恢复master备份

使用命令loaddatabasemasterfrom"...."

进行恢复,恢复完后会关闭adaptiveserver,注意查看恢复和adaptiveserver关闭过程中是否有错误信息。

3.4.8,第八步:

更新numberofdevices参数

仅仅在数据库使用的设备数比缺省的要多时,才需要更新。

可修改配置文件,在master启动时,会读取该文件。

3.4.9,第九步:

以主恢复方式重新启动adaptiveserver

参考第三步。

注意是否有错误信息提示。

3.4.10,第十步:

检查系统表,核实master的当前备份

如果在最新的diskinit,createdatabase,alterdatabase命令后备份的master数据库,则sysusages,sysdatabase,sysdevices的内容和备份表一致。

不过还是要检查一下,注意:

1)如果恢复后的sysdevices中未包含备份的sysdevices表中的任何设备,则表示上次master备份后添加了新设备,必须运行diskreinit和diskrefit命令。

2)如果恢复后sysdatabases表中未包含备份的sysdatabases表中某些数据库,则表示上次master备份后有新的数据创建,则必须运行diskrefit。

3.4.11,第十一步:

重新启动adaptiveserver

用常规模式启动adaptiveserver

3.4.12,第十二步:

恢复服务器用户ID

检查syslogins和备份的syslogins表,注意:

1)如果不一致,备份后添加了新的登录名,则应重新使用sp_addlogin命令添加。

2)如果删除了登录名,则应重新使用sp_droplogin删除。

3)如果锁定了服务器帐号,应重新使用sp_locklogin锁定。

4)检查由于人为使用sp_modifylogin而引起的其他差别。

确保指派给用户的suids正确,不然会导致权限问题,检查的有效方法是对用户数据库的每个sysusers表执行union,如有权使用master,可包括master:

selectsuid,namefrommaster..sysusers

union

selectsuid,namefromsales..sysusers

union

selectsuid,namefromparts..sysusers

union

selectsuid,namefromaccounting..sysusers

3.4.13,第十三步:

恢复model数据库

1)如果有保留的model备份,则loaddatabase恢复该备份。

2)如果没有备份,则:

1,运行installmodel脚本创建

cd$SYBASE/ASE-12_5/scripts

isql-Usa-Ppassword-Sserver_name

2,重复对model数据库的任何修改。

参考"3.5恢复model系统数据库"

3.4.14,第十四步:

检查adaptiveserver

仔细检查:

1)备份的sysusages与运行的sysusages比较。

2)备份的sysdatabases与运行的sysdatabases比较。

3)在每个数据库上运行dbcccheckalloc。

4)检查每个数据库中重要的表。

3.4.15,第十五步:

备份master数据库

使用备份命令备份master数据库

3.5,恢复model系统数据库

以下讲述的是,只需要恢复model数据库时的恢复步骤:

第一种:

由于没对model数据库做任何更改,只需恢复通用的model数据库。

dataserver可在maste正常工作的情况下恢复model数

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 设计艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1