where数据库
7、恢复出现含有数据库文件或事务日志介质故障后的Adaptive Server Anywhere数据库
8、删去一个Adaptive Server Anywhere数据库文件
9、缩和解压缩Adaptive Server Anywhere数据库文
内容
1、保护数据的预防措施
2、备份数据库
3、故障恢复
4、Adaptive Server Anywhere的日志
5、系统故障的恢复
6、介质故障的恢复
7、其它的维护手段
保护数据的要点:
1、按着规定经常备份数据库
2、把事务日志放在份开的设备上
3、对至关重要的数据采用放在份开设备上的事务日志镜象
备份数据库:
1、两种格式
完全备份 --数据库及日志
增量备份 --仅备份日志
2、两种方法
联机 (每周 7天,每天 24小时均可进行 )
完全备份
增量备份
备份策略 :
1、考虑因素:
数据丢失会造成的危险
那种数据丢失风险是可接受的
不同的备份策略各有什么优缺点
对数据可用性的要求
备份和恢复策略
1、备份和恢复策略必须是相容的
检查备份和恢复策略
它们是否能像所期望的那样工作?
是否能获得正确的结果?
是否能满足业务要求?
完全备份
1、对数据库及事务日志都做拷贝
2、是最简单的备份策略
3、常用于相对小的数据库
4、对大型数据库是不切合实际的
增量备份
1、使用周期
完全备份数据库和事务日志文件 随后只备份事务日志 定期地重新开始这个周期
2、周期过长则增加了数据丢失的风险,因为事务日志的备份有可能会丢失或损坏。重要的是要把日志备份存储在可靠的介质上
3、通常用于大型数据库
联机备份 :
1、无须停止数据库引擎就可完成
2、提供一致性的数据库快照
3、通常用于要求高可用性的数据库
4、可进行完全备份或增量备份
脱机备份
1、要在数据库引擎停机后来完成
2、当允许数据库引擎常规地停机时可采用此办法
3、可进行完全备份或增量备份
实施备份
1、Adaptive Server Anywhere提供实用程序dbbackup来完成联机备份 2、脱机备份要利用操作系统中的文件拷贝命令完成
3、在实施备份之前,应当利用实用程序 dbvalid 对数据库进行合理性校验。 如果该数据库是不合理的:
把它复原到最近的完好的备份
利用事务日志施加恢复
再立即对其作备份
联机备份的实施
语法:
dbbackup [开关] 目录
-c 设置连接参数
-d 仅备份数据库文件
-r 重命名日志并启动新的一个
-t 仅备份日志
-x 删去日志并启动新的一个
故障类型 :
1、系统故障
数据库不可用了,它并未遭破坏
无须人工干预
系统能自其故障处进行恢复
恢复可能要花费一些时间
2、介质故障
数据可能被损坏了
要使用数据库文件备份来解决
把主数据库文件和事务日志文件散布在不同的物理设备设备上
Adaptive Server Anywhere的自动恢复
利用日志和事务恢复机制
仍需要实施常规的数据库文件备份才能有效
应把数据库文件与事务文件放在不同的物理设备上
Adaptive Server Anywhere日志:
校验点日志
回滚日志
事务日志
事务日志镜象
校验点日志 :
其中包含自最近一个校验点以来所有的被修改的物理数据页(脏页)的前映象
在Cache 中包含脏页的后映象
每个数据库有一个校验点日志,直到下一校验点出现,它一直存在于数据库中。
校验点:
1、刷新 cache 中所有的脏页并把它们写入数据库文件中
2、出现的时机:
在数据库引擎停机时
自最近一个校验点之后 > CHECKPOINT_TIME
估算恢复所用时间 > RECOVERY_TIME
数据库引擎已空闲了足够的时间
事务中发出CHECKPOINT命令
未利用用事务日志而把事务提交给数据库时
校验点数据库选项:
1、利用 SET OPTION设定 当数据库引擎再次启动时起作用
2、CHECKPOINT_TIME 校验点之间的最大间隔 缺省值 = 60 分钟
3、RECOVERY_TIME
自失败到完成恢复经过的最大时间间隔
缺省值 = 2 分钟
回滚日志:
1、储存已修改了的数据的前映象及 SQL 需要复旧的修改
2、每个打开的连接有一个回滚日志
当事务被提交或回滚之后被释放
3、在内存中被建立,当出现校验点时被拷贝到数据库文件。
事务日志 :
1、对数据库的每一个修改,都按其发生的次序在事务日志中储存一条记录。
各数据库使用一个激活的事务日志
还可能存在着其它的归档(archive)日志
2、应当把它建立在与数据库文件使用不同的控制器的另外的设备上
当出现介质故障时能提供最好的可恢复性
改变事务日志的位置
1、利用 Sybase Central 或 dblog 实用程序
2、必须在数据库停止状态下才能改变日志位置
3、推荐:
设备分开 设备分开
4、实例 dblog -t d:\newdir\mydata.log c:\mydata.db
利用 Sybase Central改变日志位置:
1、打开 Utilities 文件夹
2、双击 Change Log File Information
3、 输入数据库文件位置
4、选择 Create new or rename existing log file 并打入新的位置
5、 如有必要,可输入镜象日志位置
6、 如有必要,可改变 Transaction Log offsets。
7、 设置选项
8、 选择是否删去老的日志文件
事务日志镜象 :
1、是对事务日志的全同拷贝 与事务日志同时被写入
2、应当放置在分开的物理设备上
3、语法— 增加一个事务日志镜象 dblog -m mirror-name
4、在 Sybase Central中,利用修改日志信息的实用程序。
事务日志有效性?
事务日志和镜象恢复 :
依次执行以下几步:
1、确定哪些部分出了毛病
2、备份完好的文件
3、把完好的文件拷贝到出毛病的文件
4、重新启动数据库引擎
识别有问题的文件 :
1、拷贝数据库备份
2、传送事务日志和镜象
完好文件能不出问题的完成
出毛病的文件会产生错误消息
3、比较两个事务日志
4、使用磁盘实用程序来找出毛病
5、语法: dbtran log-file output-file
6、Sybase Central
打开 Utilities文件夹
双击 Translate Log
指明要传送的日志文件
指明输出文件
给定选项
系统故障的恢复 :
1、运行磁盘验证实用程序
2、重新启动数据库引擎
根据校验点日志把数据复原到最近的校验点状态
根据事务日志把自校验点到出故障之间完成的修改都再实施一次
根据回滚日志把未提交的事务回滚
介质故障的恢复 :
1、修复故障设备
2、修复数据库
修复手段取决于数据库或日志设备是否受损
数据库文件的介质故障 :
1、一个事务日志
自最后一次完全数据库备份以来从未做过备份
2、多个事务日志
自最后一次完全数据库备份以来已做过备份
利用一个日志进行恢复:
1、对当前的事务日志做系统文件拷贝
2、复原最新的对数据库文件的完全备份
3、启动数据库时采用 –a 开关并给出用以恢复的日志的名字
4、对已恢复的数据库作备份
5、再利用一个新的事务日志启动数据库引擎
6、实例:
dbsrv7 mydata.db -a mydata.log
利用多个日志进行恢复:
1、对当前的事务日志做系统文件拷贝
2、复原最新的对数据库文件的完全备份
3、针对早期的多次日志,多次启动数据库引擎每次都采用开关 -a ,但按时间次序份别给出不同的日志名字。
4、备份已恢复的数据库
5、再利用新的事务日志启动数据库引擎
另一种作法是,把最新的日志名重命名为恰当的名字。
6、实例:
dbeng7 class.db -a d:\oldlogs\mon.log
dbeng7 class.db -a d:\oldlogs\tue.log
dbeng7 class.db -a d:\oldlogs\wed.log
dbeng7 class.db -a d:\backup\class.log
存放事务日志的介质故障 :
1、数据丢失的可能性非常大
事务日志的介质故障之后的系统故障会导致损坏日志
2、应当使用放在分开设备上的日志镜象
3、备份完好的数据库文件
4、删除事务日志
5、利用 –f (无日志)开关重新启动完好的数据库
把数据库复原到最近的校验点处
对该校验点之前未提交的一切事务都进行回滚
启动一个新的事务日志
6、备份已恢复的数据库
7、利用新的事务日志重新启动数据库
恢复未提交的修改 :
1、利用带 -a 开关的dbtran 实用程序把事务日志的内容转换为一些可读的SQL 语句
2、留神:回退事务常常是不完整的,未必需要恢复所有的未提交的事务。
3、例如:
dbtran -a class_db.log changes.sql
恢复未提交的事务
在输出文件中包含回滚事务
输出文件change.sql是可读的 SQL 文件
你可对其进行编译,使其仅包含你打算回滚的未提交事务。
用于数据库维护的其它实用程序 :
1、dberase
删去数据库文件
2、dbshrink
把数据库文件压缩为一个压缩了的,只读格式
3、dbexpand
把被压缩的数据库展开
4、dbwrite
把对一个只读数据库所作的修改都储存在一个新建的可写入文件中
日后可利用该可写入文件再对压缩了的数据库进行修改:
Translating the write log (.WLG)
Applying the resultant SQL to the database
删去数据库 :
1、交互式SQL语法 DROP DATABASE 文件名
实例 : 这个语句是不进行再次确认的删去数据库 mydata.db :
DROP DATABASE 'c:\mydata.db'
2、dberase (命令行)
这个命令是不做再次确认的删去数据库 mydata.db :
dberase -y c:\mydata.db
删去数据库文件 :
Sybase Central
1. 打开 Utilities 文件夹
2. 在右半边, 双击 Erase Database.
3. 点击 Next.
4. 必要时,改变数据库连接。
5. 点击 Next.
6. 打入你要删去的数据库或可写入文件的名字.
7. 点击 Next.
8. 点击 Finish 则删去数据库
压缩数据库文件:
压缩数据库文件
压缩后的数据库文件是只读的
被压缩后的数据库文件能紧缩 40-60%
利用 dbwrite来搜集对已压缩数据库的修改
利用 dbexpand进行解压
实际应用 :
准备发送给客户的含有定货项目和其价格的数据库
可把该数据库存放在 CD-ROM这类只读介质上
dbshrink:
语法:dbshrink [switches] database-file [compressed-database-file]
实例:
dbshrink –q mydata.db
-q — 静止模式,抑制消息。
此时,压缩文件的缺省名为:mydata.cdb
利用 Sybase Central 压缩数据库:
1. 打开 Utilities 文件夹
2. 在右半边双击 Compress Database
3. 点击 Next
4. 必要的话,改变你的数据库连接。
5. 点击 Next
6. 输入要压缩的数据库名及存储已压缩数据库文件的位置
7. 点击 Finish
dbexpand:
语法:
dbexpand [switches] compressed-database-file [database-file ]
实例 :
dbexpand –o uncompress.msg mydata.cdb mydata_big.db
-o — 把消息输出到名为 uncompress.msg 的文件中
展开后的数据库文件名为 mydata_big.db
利用 Sybase Central展开数据库:
1. 打开 Utilities 文件夹
2. 在右半边,双击 Uncompress Database
3. 点击 Next
4. 必要的话,改变你的数据库连接。
5. 点击 Next
6. 输入要展开的数据库名及存储已展开数据库文件的位置
7. 点击 Finish
记录对只读数据库所做的修改 :
1、把对压缩的或只读的数据库的修改写入到一个可写入文件中
这种修改被记录在该可写入文件的事务日志中
日后可把该事务日志文件内容传输出来实施对数据库的修改
当用户查询只读数据库文件时,能把存放在可写入文件中的修改一起得到。
2、利用实用程序dbwrite能建立一个可写入文件。
dbwrite:
语法: dbwrite [switches] database-file [write-name ]
实例:上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页 |