鸿图 四维尔:[教程]Sybase数据库自动备份与异地存放 [服务器管理维护] IT.com.cn IT...

来源:百度文库 编辑:九乡新闻网 时间:2024/07/14 04:19:01

[教程]Sybase数据库自动备份与异地存放

2005-3-18 17:07:00 文/ 出处:软件世界   一.问题的提出

  Sybase数据库系统已被广泛应用于各企事业单位的计算机信息系统中,其先进的复制服务器技术是实现数据库实时异地备份的很好途径,但该技术实现难度较大,需要的投资也较大,一般中小型企业用的比较少。通常数据库系统管理员每天要进行手工dump操作,但几乎不进行异地备份,这不符合数据异地容灾的原则,存在着数据不安全的隐患。

  笔者在平时数据库系统的维护管理中,摸索出一种对Sybase数据库进行自动备份、对备份出来的文件自动异地存放以及在异地自动进行数据库表的bcp的方法。该方法简单容易行,投资小,在很大程度上实现了数据的异地容灾,确保数据的及时备份,减轻了数据库系统管理员的工作。本文就此介绍,旨在给读者一些实用的帮助。

  二.实现方法

  1. 数据库的自动备份

  ①在Unix主机上编制dump数据库的脚本文件。

  该文件由Sybase的客户端应用程序isql来调用,以实现数据库的dump操作,并返回至Unix操作系统。文件名为autodump.sql,存放在根目录下,文件内容如下:

  dump database testdb to "/u/dumpfile.dat"

  go

  exit

  例子中testdb为需要dump的数据库名,dump出来的文件名为dumpfile.dat,存放在/u目录下,exit返回至Unix OS。

  ②利用Unix的命令程序设计语言shell,编制一个shell程序。

  该程序在指定时间点启动Sybase的客户端应用程序isql,实现数据库的dump操作。文件名为timerdump,存放在根目录下,文件内容如下:

  rm /u/dumpfile.dat

  isql -Usa -P -Ooutput.err -i/autodump.sql

  at -f /timerdump 1:15am

  例子中第一行表示删除上一次dump出来的文件,第二行表示启动Sybase的客户端应用程序isql,并运行autodump.sql脚本文件,第三行at命令在每天的凌晨1点15分循环执行timerdump。

  ③编制另一个shell程序。

  在Unix系统重新启动时,自动执行该程序,以实现在指定时间点触发timerdump。该程序放在/etc/rc2.d目录下,文件名为:startdump,内容如下:

  at -f /timerdump 1:15am

  ④修改timerdump和startdump文件的权限,使其可执行。

  #chmod 777 /timer /etc/rc2.d/startdump

  ⑤重新启动Unix系统,并分别启动Sybase SQL Server和Backup Server,Unix系统利用at命令在每天凌晨1点15分定时启动timerdump,实现testdb数据库的自动dump操作。

  2. 数据库备份文件的异地自动拷贝和表的自动bcp

  ① 在异地安装一台PC机,要求如下:

  * 内存≥32M,操作系统为Win95或Win98;

  * 硬盘必须足够大(存放dumpfile.dat和bcp出来的文本文件);

  * 能够通过网络,利用TCP/IP协议访问到Unix主机;

  * 安装Sybase Open Clent for Win95/win98。

  ② 建立一个配置文件。

  该文件存放Unix主机的IP地址,Ftp的端口号,Unix的用户名及口令,数据库备份文件存放的源、目的路径与名称,数据库所有需bcp的表名。文件名为:dumpfile.ini,存放在c:\dump目录下,内容如下:

  [Server Options] Server IP Address=100.10.10.1

  Server Port=21

  User Name=root

  User Password=root123

  Ftp Source=/u/dumpfile.dat

  Ftp Target=c:\dump\dumpfile.dat

  [Bcp Tables]

  t1=table1

  t2=table2

  例子中的table1,table2为testdb数据库中需要bcp的表。

  ③ 利用Delphi Clent/Server Suite V4.0编制一个程序,实现数据库备份文件的异地自动拷贝和表的自动bcp。该程序利用了 Delphi 的Timer控件、NMFTP控件以及Win32 API的进程创建函数CreateProcess。现对几个主要的程序片段逐一说明:

  * 定时器过程。定时器Timer1的OnTimer事件调用该过程,它用来循环检测当前时间是否为凌晨2点15分,若是就去调用自动拷贝过程(FtpProc)和自动bcp过程(BcpProc)。

   procedure TForm1.Timer1Timer(Sender: TObject);

   var Present: TDateTime;Hour, Min, Sec, MSec: Word;

   begin Present:= Now;DecodeTime(Present, Hour, Min, Sec, MSec);

   if ((Hour=2) and (Min=15) and (Sec=0)) then begin

   FtpProc;BcpProc; end;

   end;

  * Ftp登录函数。该函数从c:\dump\dumpftp.ini中取出Unix主机的有关信息,进行Ftp登录。

   function TForm1.ConnectServer: Boolean;

   var IniFile : TIniFile;

   begin IniFile := TIniFile.Create(INI_FILE);

   NMFTP1.Host := IniFile.ReadString('Server Options','Server IP Address','');

   NMFTP1.Port := IniFile.ReadInteger('Server Options','Server Port',21);

   NMFTP1.UserID := IniFile.ReadString('Server Options','User Name','');

   NMFTP1.Password :=IniFile.ReadString('Server Options','User Password','');

   try NMFTP1.Connect; except begin

   Result:=False;Application.MessageBox('连接务器失败!','错误',MB_OK);exit;

   end; Result := True; IniFile.Free;

   end;

  * 拷贝备份文件的过程。该过程调用Ftp登录函数ConnectServer,进行Ftp登录,登录成功后利用NMFTP控件的download方法进行拷贝,Unix主机相当于Ftp服务器,异地PC机器相当于Ftp客户端。

   procedure TForm1.FtpProc;

   var IniFile : TIniFile;ftp_source,ftp_target,ftp_old: String;

   begin IniFile := TIniFile.Create(INI_FILE);

   ftp_source:= IniFile.ReadString('Server Options','Ftp Source','');

   ftp_target:= IniFile.ReadString('Server Options','Ftp Target','');

   if not ConnectServer then begin

   Memo1.Lines.Add('★连接数据库服务器失败,中断!');IniFile.Free;exit;

   end;

   Memo1.Lines.Add('★开始拷贝数据库备份文件!'+ ftp_source + '->' + ftp_target);

   NMFTP1.Mode(MODE_IMAGE);

   try NMFTP1.download(PChar(ftp_source), PChar(ftp_target));

   except Memo1.Lines.Add('***文件复制错误!***'); end;

   Memo1.Lines.Add('★拷贝数据库备份文件完毕!'); NMFTP1.Disconnect;IniFile.Free;

   end;

  * 数据库表的bcp过程。该过程从c:\dump\dumpftp.ini中循环取出数据库需要bcp的表名,利用Win32 API的进程创建函数CreateProcess,给Sybase Open Clinet for Win95/Win98的bcp程序创建进程,实现bcp操作。

   procedure TForm1.BcpProc;

   var IniFile:TIniFile;str,str1:string; SI:TStartupInfo;PI:TProcessInformation;

   p_status:boolean; section: TStringList;i: Integer;

   begin Memo1.Lines.Add(''); Memo1.Lines.Add('★开始 Bcp Tables !');

   IniFile:=TIniFile.Create(INI_FILE);section:=TStringList.Create;

   IniFile.ReadSection('Bcp Tables',section);

   for i :=0 to section.Count -1 do begin

   FillChar(SI,SizeOf(SI),0);SI.cb:=SizeOf(SI);SI.dwFlags:=STARTF_USESHOWWINDOW;

   str:=IniFile.ReadString('Bcp Tables',section[i],'');str:=section[i];

   str1 :='bcp testdb..'+str+' out '+str+'.txt -c -Usa -P -SSYBASE';

   p_status:=CreateProcess(nil,PChar(str1),nil,nil,True,0,nil,nil,SI,PI);

   if not p_status then begin ShowMessage('★ bcp 失败!'); exit; end;

   WaitForSingleObject(PI.hProcess,INFINITE);

   CloseHandle(PI.hThread);CloseHandle(PI.hProcess);

   Memo1.Lines.Add('★bcp tele114..'+str+' out '+str+'.txt 结束');

   end; Memo1.Lines.Add('★结束 Bcp Tables!');

   end;

  ④ 生成可执行文件dumpftp.exe。把用Delphi编制的程序编译生成exe文件,存放在c:\dump目录下,并运行该程序。

  至此,实现了Sybase数据库的自动备份、备份文件异地自动拷贝以及数据库表的自动bcp。

  三.几点说明

  1. 异地是指主机和PC机放在不同的建筑物内,可以是不同城市或同一城市的不同地区,但两者必须能够通过局域网或广域网相连。

  2. 本文例子中的主机操作系统为SCO OpenServer 5.05,startdump必须存放于/etc/rc2.d目录下。若主机操作系统为DEC Unix或HP Unix,则存放于/sbin/rc2.d目录下。

  3. Sybase Backup Server必须一直启动着。

  4. 可以根据实际情况,确定数据库自动备份(at命令的时间参数)、备份文件异地自动拷贝以及自动bcp数据库表的时间点(timer 的时间参数),但必须确保数据库备份结束后才能进行自动拷贝和bcp。

  5. 因为数据库的不断增大,PC机的硬盘必须考虑足够大的余量。
[教程]Sybase数据库自动备份与异地存放 [服务器管理维护] IT.com.cn IT... Sybase数据库日常维护 Photoshop教程-表面模糊滤镜快速去斑 [数字暗房] IT.com.cn IT世界网... Photoshop基础视频动漫教程 www.IT.com.cn IT世界网 使用SQL Server维护计划实现数据库定时自动备份 Photoshop抠图大全 www.IT.com.cn IT世... [维修]堵塞不用慌!喷打“堵头”解决有方 维修,维护,喷墨打印机维修,喷墨打印机维护 [办公产品应用指南] IT.com.cn IT世界网 Networker备份系统运行维护(下) — IT技术 南都:“郭美美”:真相焦虑与信息遮蔽的拉锯 IT.com.cn IT世界网 办公视频教程-IT.com.cn办公视频教程栏目 精彩办公视频教程就在it.com.cn Photoshop制作炫目的火光文字特效 IT.com.cn IT世界网-先上IT网再逛电... 千奇百怪的美国法律 - 八卦灌水 - IT俱乐部 BBS.it.com.cn IT世界网论... Sql Server 2005维护计划自动备份数据库作业执行失败,会自动生成abc82作业 Photoshop超强抠图合成创意实例 [数字暗房] IT.com.cn IT世界网-买家... Photoshop四步让暗黄肤色变白 [数字暗房] IT.com.cn IT世界网-买家最... Photoshop鼠绘一把古色古香的扇子 www.IT.com.cn IT世界网 通俗易懂 Office 系列视频教程 www.IT.com.cn IT世界网 漫画人:漫画是动漫基础 IT.com.cn IT游戏频道-轻松游戏之道 宾得推出smc PENTAX-DA 35mm F2.4 AL镜头 IT.com.cn IT... Photoshop CS2全系列视频教程 www.IT.com.cn IT世界网 Spring 框架简介 [程序开发Java] IT.com.cn IT世界网 Photoshop提示暂存盘已满的解决办法 [电脑入门] IT.com.cn IT世界网 十一国庆祝福短信全集 [国内] IT.com.cn IT世界网 T台秀场的拍摄技巧 IT.com.cn IT世界网