开源中文网

您的位置: 首页 > 数据库应用 > Sybase > 正文

sybase数据库备份恢复

来源: 网络整理  作者: 佚名

SQL Server提供了两种不同类型的恢复:一类是系统自动完成的恢复;另一类是人工完成的恢复。

1.系统软件故障恢复

系统自动恢复是在系统软件出现故障的情况下通过重新启动SQL Server进行恢复。

自动恢复从master数据库开始,然后是model数据库,再是temporary数据库,最后是用户数据库。在每个数据库上,恢复机制观察事务日志。如果日志写入比数据库更近的数据,则向前恢复数据库。如果事务尚未完成,则要回退它们。

所谓事务日志就是一张系统表,syslogs。在这张表中记录着对数据库的更新请求,例如插入、修改和删除。查询操作不记入事务日志中。

2.介质故障的恢复

一旦介质发生故障,只有通过以前备份的数据库和事务日志才能恢复数据库,为此我们需要经常备份数据库和事务日志。备份数据库和事务日志我们使用dump命令,而恢复数据库和事务日志我们使用load命令。

与创建数据库需要一个数据库设备类似,我们备份数据库和事务日志也需要一个卸出设备。增加卸出设备可以通过系统过程sp_addumpdevice来实现。卸出设备可以是磁盘、磁带或操作系统文件。

sp_addumpdevice "type",device_name,physicalname

例:

sp_addumpdevice "disk", "db114", "/usr/Sybase/zyl114.bak",1

(1) 备份数据库和事务日志

备份数据库的语法为:

dump database database_name to dump_device

例如:

dump database tele114 to db114

备份事务日志的语法为:

dump transaction database_name to dump_device

[with truncate_only | with no_log | with no_truncate]

前两项在日志中删除提交的事务,后一项不删除。

在备份数据库前的所有事务日志备份都是没有意义的。我们一般不经常备份数据库,但我们要经常备份事务日志。这是因为备份事务日志比备份数据库需要更少的时间和存储空间。

(2)恢复用户数据库

要恢复已被破坏的数据库,可以按如下步骤进行:

· 用带no_truncate选项的dump命令卸出用户数据库事务日志。

· 用和被破坏的数据库的同样的结构建立一个新的数据库。

· 用load命令重新装入数据库和事务日志。

装入数据库的语法为:

load database database_name

from file_name

装入事务日志的语法为:

load transaction database_name

from file_name

例:数据库备份

1> dump db_name to file_name

2> Go

数据库恢复

1> load db_name from file_name

2> go

日志备份

1> dump transaction db_name to file_name

2> go

日志恢复

1> load transaction db_name from file_name

2> go

日志删除

1> dump transaction db_name with truncate_only

2> Go

(3)master数据库的恢复

A、保存系统表的拷贝:sysdatabases、sysdevices、sysusages、sysloginroles和Syslogins。

B、转储主设备上的用户数据库。

C、关闭SQL Server并使用buildmaster建立新的master数据库或主设备。

Buildmaster -m ...仅重建master数据库

Buildmaster ...重建主设备

D、已单用户模式启动SQL Server( Master-Recover

Startserver -f RUN_服务器名 -m

E、若master数据库用alter database 命令扩展过,严格重建它在sysusages中的分配。

F、若Backup Server 的网络名(接口文件中的名字)不是SYB_BACKUP,在sysservers中改动网络名。

Update sysservers set srvnetname="PRODUCTION_BSRV" where srvname="SYB_BACKUP"

G、使用showserver查看,检查确保Backup Server正运行,若有必要,重启Bakup Server

H、装载master的备份。

Load database master from 'master.bak'

Load database执行成功后,SQL Server 自动关闭。

I、若自master的上次转储以来增加过数据库设备,执行disk reinit命令以重建sysdevices。

J、若执行了disk reinit,或自上次转储以来使用过create database或alter database,执行disk refit 重建sysusages和sysdatabases表,执行完毕后SQL Server自动关闭。

K、检查一致性:比较sysusages和sysdatabases的备份和新的联机版本,对每个数据库执行dbcc checkalloc, 并检查每个数据库中重要的表;若发现错误重新执行disk reinit和disk refit。

L、若恢复了整个主设备,则恢复model数据库。

Cd $Sybase/scripts

Setenv DSQUERY 服务器名

ISQL -Usa -P口令 -S服务器名 M、重新装载所有受影响的用户数据库。

N、恢复服务器用户ID。

O、以多用户模式重新启动SQL Server。

Tags:备份 数据库
关于开源中文网 - 联系我们 - 广告服务 - 网站地图 - 版权声明