Chinaunix首页 | 论坛 | 博客
  • 博客访问: 83482
  • 博文数量: 14
  • 博客积分: 1678
  • 博客等级: 上尉
  • 技术积分: 150
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-12 17:04
文章分类

全部博文(14)

文章存档

2011年(1)

2010年(1)

2009年(12)

分类: Sybase

2009-11-15 17:28:28

转载 大家讨论一下在使用sybase过程中,数据库备份策略

作者:     发表时间:2002/10/09 05:17pm

数据库备份策略在维护系统数据安全起着非同小可的作用,好的备份策略应该考虑保证数据的安全,并且操作较为方便。

基本过程很简单,如下:
1.备份到本地硬盘:
dump transaction with truncate_only
dump database … to …
dump transaction
。。。

2.当装载数据库和事务日志时,为防止其他用户对数据库的操作,须把数据库设置为 dbo use only。
进行装载时的顺序为:
dump transaction with no_truncate
load database database_name from ...
load transaction database_name from ...
。。。
online database
也可以用until指定恢复到某个时间

使用阈值管理
可以使用阈值管理,在阈值管理中安排当超过某个阈值时自动转储事务日志。当超过阀值以后,SQL Serve中断或挂起试图写这个日志的用户事务。对每一个挂起的事务 向errorlog 发一条消息;然后执行sp_thresholdaction
sp_thresholdaction用户自己编写
create procedure sp_thresholdaction
@dbname varchar(30),
@segmentname varchar(30),
as
dump transaction @dbname to "DEVICE"
print "LOG DUMP: %1! for %2! dumped", @segmentname, @dbname
其中参数 :
           @dbname 为达到阀值的数据库名;
           @segmentname 为达到阀值的段名;

用户数据库损坏的处理
如果数据库处于suspect状态,无法用drop database 删除时:
dbcc dbrepair (db_name, dropdb)
create database db_name on dev_name  for load
load database db_name from dump_device

master库损坏的处理
?使用 buildmaster  -m 重建一个新的 master 数据库;
buildmaster 建立 master 设备并在这个设备上建立 master, model, tempdb 库。
-m 选项只重新写 master 库, 而不修改配置块或初始化 master 设备。
? 以单用户方式重启动服务器, 如果需要的话, 则需增加转储设备;
? 从备份装载 master 数据库;
? 用 startserver 重启 SQL Server;
? 检查一致性: 对每一个数据库运行 dbcc  checkalloc,并对重要的表进行检查;


但是,当我们问及sybase的技术支持是否建议使用threshold  时,他们并不积极建议这样做,理由是自动化操作往往会出现一些难于预料的结果。当然,要是有那么负责的dba,天天定时手工备份,当然是再好不过了。
基本的备份操作是简单,但是我们在实际实施备策略时,往往会考虑这样那样的问题,也会出现一些意想不到的问题,比如:
1、是整库备份还是增量备份
2、每天什么时候备份,备份时间怎么安排
3、万一需要恢复数据库,当前的备份能恢复到一个什么程度
4、数据库在恢复时可能出现哪些紧急情况
等等...

阅读(3225) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~