歡迎您光臨本站 註冊首頁

Unix系統Informix數據備份技巧

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  筆者在單位使用Unix Openserver 5.05 操作系統和Informix 7.3 資料庫管理系統。對如何做好Unix 系統Informix數據的備份,筆者在日常工作中積累了一些技巧,現介紹給大家。

  一、Informix數據備份命令
  1.Ontape命令:該命令可以在線進行數據備份,提供0、1、2級三種不同級別的備份方式,其0級備份是對數據空間的完整備份(包括資料庫邏輯日誌),其備份量較大,在此基礎上的1、2級備份,是增量備份,備份量較小。但在數據恢復時,如果0級備份出了問題,則不能進行數據恢復。備份的數據以專用的格式存貯,對用戶「不可見」,給用戶一種不踏實的感覺。

  2.Dbexport命令:該命令是對資料庫的完整備份(包括數據結構)。備份的數據格式是文本文件,用戶可以用VI進行編輯,進行部份數據恢復。但不能進行在線備份,需要使資料庫離線。同時要對多個資料庫進行備份時,要用shell程序實現。

  3.Unload命令:該命令對資料庫中的一張表進行備份。其優點是方便靈活,備份的數據格式是文本文件,用戶可以用VI進行編輯,進行部分數據恢復。能實現在線數據備份。其缺點是如要對資料庫進行完整備份,要進行編程。

  通過以上介紹可知,Ontape命令面向數據空間、dbexport命令面向資料庫、unload命令面向數據表,三種命令各有其長處,也有其不足。綜合考慮,筆者認為採用ontape命令進行周備份(0級備份),用unload命令進行日備份比較合理,方便靈活。

  二、用unload命令備份Informix-4gl
  用unload命令備份Informix-4gl 的源程序如下:

  Define database_name Char(20)

  Main

  Define tabname Char(18)

  Define tmpstr Char(100)

  Database database_name

  Let database_name = Arg_Val(1)

  Declare cur_unload0 Cursor For

  Select @tabname From systables

  Where @tabid 〉=100 And @tabtype = ="T"

  ForEach cur_unload0 Into tabname

  Display "Unloading ", tabname Clipped, "..."

  Let tmpstr = "echo 'Unload To ", database_name Clipped, "/", tabname Clipped, ".unl Select From ", tabname Clipped,"' | isql ", database_name Clipped, " -"

  Run tmpstr

  End ForEach

  Close Database

  End Main

  程序中資料庫名從命令行中獲得,對資料庫中的每一張表進行循環,轉存成相應表名的文本文件。

  三、對多個資料庫操作的Shell程序
  以上程序操作的對象為單個資料庫,如要對 Informix - 4gl 中的每一個資料庫進行備份,則可以用一Shell程序執行。以下是相應的Shell程序,名為 auto_backup。

  YYMMDD=`date '+%y%m%d'`

  FILENAME=b$YYMMDD\.tar

  unload0 motor

  unload0 idc

  ……

  tar -fcv $FILENAME ?

  compress $FILENAME

  省略號處可加上若干資料庫。為了節省空間,對備份好的數據打包、壓縮,生成一個文件。

  四、將備份好的數據傳送到數據備份機
  對上述備份好的數據,需要將它異機備份或用磁帶進行備份。筆者認為,設置一台專用數據備份機,並在該機上配有一光碟刻錄機,可即時地將數據備份到可讀寫光碟上。

  為了將數據從Unix 系統中傳送到Windows 95或Windows 98中去,可使用FTP程序。為了使程序能自動執行,應在Unix用戶中建立.netrc文件,並定義用戶的FTP寫目錄為刻錄光碟。以下是.netrc文件實例:

  machine sjbf

  login fq

  passwd qqqqqq

  該文件定義了FTP到一遠程機器為sjbf,用戶為fq,口令為 qqqqqq。

  同時建立一文件 auto_ftp,其清單如下:

  prompt off

  put ?Z

  文件auto_backup的最後加入命令:

  ftp sjbf 〈 auto_ftp

  五、自動定時執行備份
  為了使計算機自動執行備份程序,可使用Unix系統中的cron定時執行機制,建議讓Unix系統中的Informix用戶去執行。在Unix系統中,用Informix用戶登錄,執行crontab -e,其內容為:

  30 12 ??? /prog/auto_backup

  經過以上幾步,我們就做好了自動備份程序,機器每天12:30會自動執行數據備份,並將數據送到可讀寫光碟中去,系統管理員要做的事,就是當光碟中的數據滿時,換一張可讀寫光碟而已。這樣數據備份,相對來講比較安全可靠。如果有一遠程機器可以FTP,則可以非常方便地進行遠程異機備份,極大提高數據備份的可靠性。


[火星人 ] Unix系統Informix數據備份技巧已經有1245次圍觀

http://coctec.com/docs/linux/show-post-74256.html