备份
一、如何备份数据库?
当遇到介质故障时(如磁盘老化损坏),仅当你有数据库的定期备份及后继的事务日志
备份的情况下才可恢复该数据库。要完全恢复,必须定期使用dump database 命令备份数据
库并结合dump transaction 命令备份日志。Dump database 命令允许动态执行,即转储/ 备份
数据库期间允许其他用户对该数据库中的数据进行更改,这使得定期备份数据库更加方便。
示例: 使用单一磁带设备进行转储/ 备份:
在UNIX 操作系统中:
dump database pubs2 to "/dev/nrmt4"
在Windows NT 操作系统中
dump database pubs2 to "\\.\tape0"
你也可以把数据库备份/ 转储到一个操作系统文件中。例如,在NT 操作系统环境中:
dump database pubs2 to "d:\backups\backup1.dat"
二、 如何进行数据库的增量备份?
可以使用dump transaction命令(或其缩写dump tran)对事务日志进行例行的增量备份。
Dump transaction 与许多操作系统提供的增量备份类似。它复制并且备份事务日志,提供自
上一次数据库备份或者事务日志转储以来对数据库所进行的所有改变的记录。Dump transaction
复制/ 备份完日志后,会截断其中不活动的部分。
Dump transaction 比完全数据库备份所花费的时间和存储空间要少,一般更为常用。注
意,只有将数据库的数据和日志分别存储在不同的数据库逻辑设备上时,才可以运行dump
transaction。示例:
在UNIX 操作系统中:
dump transaction pubs2 to "/dev/nrmt4"
在Windows NT 操作系统中
dump transaction to "\\.\tape0"
怎样恢复数据你也可以把数据库备份/ 转储到一个操作系统文件中。
例如,在NT 操作系统环境中:
dump transaction pubs2 to "d:\backups\backup1.dat"
三、日常后备数据库
SYBASE 数据库的备份主要是通过 dump 命令来实现的, 分为数据库备份和日志备份。
简单语法格式如下:
dump database database_name to device_name
dump transaction database_name to device_name
如果使用磁带设备做备份, 还要使用capacity、init 选项。
应该多长时间备份一次数据库呢? 这决定于发生系统故障时( 例如磁盘故障 ) 应用系统
允许丢失多长时间的数据。 如果允许丢失一个小时的数据, 那么可以考虑每天至少备份一次
数据库, 并每个小时至少备份一次日志。
备份数据库之前, 应对数据库做 dbcc 检查, 确保备份的数据库是完好的数据库。如果数
据库有损坏, 备份时可能不会报错, 但将来可能无法装载(load)。
通常情况下, 只有发生严重故障需要恢复时才进行装载数据库, 但是 SYBASE 建议偶尔对
备份的数据库装载到一个测试环境上, 以保证备份工作过程正常并熟悉备份和装载工作过程。
Master 数据库的备份也不能忽略。每次master 数据库的内容有变动时, 应及时备份 master
数据库, 例如增加 login, 增加设备, 增加用户数据库等。
用户可根据自己的应用制定可行的备份方案。 详细的命令语法及备份方案的详细建议均
可在 SYBASE 手册中查到。
举例: Unix 平台后备pubs2 数据库
启动ASE 和BACKUP SERVER
isql -Usa -Pxxxxxx -SSYBASE
dump database pubs2 to "/sybase/dump/pubs2_db.990705"
go
dump transaction pubs2 to "/dev/nrct0" capacity=1500000,file="pubs2_log.990705" with
init(capacity 取值为磁带容量的70% 左右,以K 为单位)
go
恢复
一、 如何恢复数据库?
建议执行的步骤:
获取故障设备上每个数据库的当前日志转储(使用dump transaction的no_truncate选项)
检查设备上每个数据库的空间使用情况
收集完故障设备上所有数据库的这些信息后,删除每个受故障设备影响的数据库
删除故障设备
初始化新设备
重新创建数据库,每次创建一个
将数据库的备份装载到每个数据库
按事务日志转储创建时的顺序加载每个事务日志转储
online database YOUR_DB_NAME
二、 如何恢复数据库到某一具体时间?
可以将数据库恢复到事务日志中的指定时间点。为此,使用load transaction的until_time
选项。该功能在诸如用户不小心从数据库中删除了一个重要表时很有用; 可用util_time选项
将对包含此表的数据库的改变恢复到表被删除前的状态。
要在数据库破坏后有效使用until_time,用户必须知道错误发生的确切时间,然后把包
含误操作的事务日志转储出来,再如示例一样进行装载。示例:
load transaction database_name
from "/dev/nrmt5"
with until_time = "Mar 26 1997 12:35:59:650PM"
注意: 这样装载事务日志后,AdaptiveServer 重新启动数据库日志序列,在可以转储另
一个事务日志之前,需要转储数据库。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论