分类: Sybase
2007-07-26 14:57:27
三、备份和恢复
灾难的发生是不可预料的,作为数据库管理员,可以通过备份数据来抵御这些风险。创建备份和还原计划可能需要大量的时间和精力,但这是值得的,否则一旦灾难发生,后果真的不堪设想。因此定期备份数据库是一个重要的任务,也是一个极好的习惯。
备份的策略和类型:一天备份一次数据库和备份多次事务日志是个值得推荐的选择,实际上,很多系统管理员也是这样执行的。数据库备份是完全备份,而事务日志的备份是增量备份,在做一个恢复备份计划时,将完全备份和增量备份结合起来是十分必要的。
备份:在ASE10以前的版本,备份是由数据库服务器直接执行,这会对导致大量的系统资源争用而引起服务器处理性能下降。备份服务器是服务器上的一个单独Open server应用程序,该程序可以直接访问数据库设备,在数据库服务器运行一个备份服务器 backup server,定会带来很多额外的好处。所幸的是我们在安装 sybase ASE 12_5时已经把备份服务器默认安装好了,这里只需要启用它(.以sybase用户登陆系统,执行命令 #/opt/sybase/ASE-12_5/install/startserver –r RUN_SYBASE_BACKUP启动sybase备份服务器)。
备份的过程还是有点繁复,我们还是分步骤来进行吧!
1、创建备份存储设备。为安全起见,最好把数据库备份到另外的磁盘,为此,准备一个大的,分好区后(一个分区)把它挂接到文件系统,再进行创建设备的操作。当然sybase也支持直接使用原始设备。
[sybase@root /]# mkdir –p /sybbackup [sybase@root /]# chown sybase.sybase /sybbackup [sybase@root /]# mount /dev/sdc1 /sybbackup //挂接新的硬盘分区到///sybbackup [sybase@root /]# su sybase [sybase@sybase sybase]$ cd /sybbackup [sybase@sybase sybbackup]$ touch bk_mydatabase.dat [sybase@sybase sybbackup]$ touch bk_log.dat [sybase@sybase sybase]$ cd ASE-12_5/install [sybase@sybase install]$ ./startserver //启动sybase服务器 [sybase@sybase sybase]$ cd /OCS-12_5/bin [sybase@sybase bin]$ ./isql –U sa –S SYBASE –P dr5623H 1>sp_addumpdevice ‘disk’,‘bk_mydatabase’,‘/sybbackup/bk_sybbackup.dat’ 1> go //创建备份设备bk_mydatabase 1> sp_addumpdevice ‘disk’ , ‘bk_log’ , ‘/sybbackup/bk_log.dat’ 2> go //日志文件的存储位置 |
2、备份数据库。使用dump database 命令备份数据库数据。
1> dump database mydatabase to ‘bk_mydatabase’ with init 2> go |
3、 备份事务日志。使用命令dump transaction.
1> dump transaction mydatabase to ‘bk_log’ 2> go |
如果有多个数据库,则需要多次执行备份数据库和备份事务日志操作。备份完成后,非常有必要对备份数据进行验证,如果不这样做将可能发生可怕的后果。笔者在此建议把备份文件多做几份拷贝,放置在不同的地理位置,就算某天失火把服务器和备份烧毁了也可起死回生。
数据库恢复:可能需要经常备份数据库和事务日志,但不必经常进行数据库恢复操作。只有在数据库发生意外、数据库移植、试验等情况下才需要进行恢复操作。与备份相对应,恢复也可分几步进行。需要注意的是,在数据库恢复期间,不要让用户连接数据库。
1、 创建数据库。与要恢复的数据库同名,如果是原数据库损坏,需要先把数据库删除,然后再创建同名数据库。
2、 恢复数据库。使用命令load database命令来恢复数据库。
1> load database mydatabase from ‘bk_mydatabase’ 2> go |
3、 恢复事务日志。使用命令load transaction命令来恢复事务日志。
1> load transaction mydatabase from ‘bk_log’ 2> go |
4、 联机数据库。事务日志装载完毕之后,才可以使数据库成为联机状态。
1> online database mydatabase 2> go |