OA数据库使用的是linux版本的sybase数据库,目前的备份方法是:
1、从windows server服务器上启动定时服务,执行一个bat脚本,远程启动linux上Sybase的备份,备份文件自动存放于linux的存储中。
2、从windows server服务器上启动定时服务,执行一个bat脚本,通过linux上的FTP服务,将文件获取到window server服务器上,同时删除linux服务器上备份文件(防止linux可用存储变小)。
3、从windows server服务器上启动定时服务,执行一个bat脚本,将windowsServer上的备份文件 同步到 另外一台的windows server服务器上,实现两块存储同时备份。
所有脚本文件放置于42服务器的桌面 dbBackup_56 文件夹
步骤详解:
1、定时器定时触发 backup 下的 sql.bat
sql.bat
内容: isql -Usa -P-S56db -isql.sql>>0.txt
描述:远程登录56数据库,执行sql.sql中的语句,并将日志记录在0.txt中
sql.sql
内容:dump database oa to"/sybase/data/dbBackup/oa_1.dmp"
stripe on"/sybase/data/dbBackup/oa_2.dmp"
stripe on"/sybase/data/dbBackup/oa_3.dmp"
stripe on"/sybase/data/dbBackup/oa_4.dmp"
stripe on"/sybase/data/dbBackup/oa_5.dmp"
stripe on"/sybase/data/dbBackup/oa_6.dmp"
go
描述:将表结构和数据 备份并分成6个包。存放到sybase/data/dbBackup下。
2、定时器定时触发ftpGet文件夹下的 Update.bat,从56 linux服务器将/sybase/data/dbBackup下的6个备份文件通过FTP 下载到 42服务器
update.bat
@echo off
setbak=%date:~0,4%%date:~5,2%%date:~8,2% //生成时间戳
e: //进入E盘
cd dbBackup //进入dbBackup
md %bak% //创建以时间戳命名的文件夹
echo open139.0.31.56>a.txt //将内容写入到 a.txt
echosybase>>a.txt //将内容写入到 a.txt
echosybase>>a.txt //将内容写入到 a.txt
echo cd/sybase/data/dbBackup>>a.txt //将内容写入到 a.txt
echo bin>>a.txt //将内容写入到 a.txt
echo get oa_1.dmp e:/dbBackup/%bak%/oa_1.dmp>>a.txt //将内容写入到 a.txt
echo get oa_2.dmp e:/dbBackup/%bak%/oa_2.dmp>>a.txt //将内容写入到 a.txt
echo get oa_3.dmp e:/dbBackup/%bak%/oa_3.dmp>>a.txt //将内容写入到 a.txt
echo get oa_4.dmp e:/dbBackup/%bak%/oa_4.dmp>>a.txt //将内容写入到 a.txt
echo get oa_5.dmp e:/dbBackup/%bak%/oa_5.dmp>>a.txt //将内容写入到 a.txt
echo get oa_6.dmp e:/dbBackup/%bak%/oa_6.dmp>>a.txt //将内容写入到 a.txt
echo deleteoa_1.dmp>>a.txt //将内容写入到 a.txt
echo delete oa_2.dmp>>a.txt //将内容写入到 a.txt
echo deleteoa_3.dmp>>a.txt //将内容写入到 a.txt
echo deleteoa_4.dmp>>a.txt //将内容写入到 a.txt
echo deleteoa_5.dmp>>a.txt //将内容写入到 a.txt
echo deleteoa_6.dmp>>a.txt //将内容写入到 a.txt
echo bye>>a.txt //将内容写入到 a.txt
ftp -s:a.txt //以a.txt中的内容登录到56ftp下载文件
3、定时器定时触发ftpPut 文件夹下的 Update.bat,将42服务器内的6个备份文件传送到异地备份服务器,以防止磁盘崩溃
update.bat
@echo off
setbak=%date:~0,4%%date:~5,2%%date:~8,2% //生成时间戳
echo open139.36.0.249>a.txt
echogyoaFTP>>a.txt
echo gyoaFTP2015>>a.txt
echo cd/z-dbBackup>>a.txt
echo mkdir%bak%>>a.txt
echo cd%bak%>>a.txt
echo bin>>a.txt
echo pute:/dbBackup/%bak%/oa_1.dmp>>a.txt
echo pute:/dbBackup/%bak%/oa_2.dmp>>a.txt
echo pute:/dbBackup/%bak%/oa_3.dmp>>a.txt
echo pute:/dbBackup/%bak%/oa_4.dmp>>a.txt
echo pute:/dbBackup/%bak%/oa_5.dmp>>a.txt
echo pute:/dbBackup/%bak%/oa_6.dmp>>a.txt
echo bye>>a.txt
ftp -s:a.txt //通过a.txt的内容将备份文件传输至备份服务器
数据还原有一个前提,目标数据库一定要比原数据库大,这个大小指的是:
例如,正式环境中,OA数据库的大小是50000M,那你要还原的大小必须超过50000M
那这个大小如何设置呢?
这个大小说的就是“数据库设备”的大小的综合,每个数据库都可以添加多个数据库设备,sybase将数据和日志 存储在数据库设备中,如果某一天发现数据库设备不够了,可以新建一个“数据库设备”,然后将这个数据库设备添加进 数据库。
例子:
这里新添加了两个数据库设备,sysdump5(30000M)和sysdump6(32000M)
然后再新建一个数据库 oa3
为oa3数据库添加两个“数据库设备”
所以oa3的总大小为 sysdump5分配的大小+sysdump6分配的大小
1、还原之前,首先断开所有数据库连接工具与应用的连接,确保数据库不被占用
2、将6个数据库备份文件拷贝到目标数据库所在的磁盘中。如 E:\dbBackup\20151210
3、确保sybase 备份与还原服务处于打开状态
SybaseBCKServer
4、打开一个客户端连接工具,数据库选中master
执行以下语句:
loaddatabase oa3 from "E:\dbBackup\20151210\oa_1.dmp"
stripeon "E:\dbBackup\20151210\oa_2.dmp"
stripeon "E:\dbBackup\20151210\oa_3.dmp"
stripeon "E:\dbBackup\20151210\oa_4.dmp"
stripeon "E:\dbBackup\20151210\oa_5.dmp"
stripeon "E:\dbBackup\20151210\oa_6.dmp"
onlinedatabase oa3