SybaseDatabase Backup方案

來源:互聯網
上載者:User
 Sybase資料庫產品自從1987年問世以來,它的 客戶機/伺服器(client/server)工作模式、分布處理的基礎結構架構、完善的安全保密效能、高速快捷的運行方式、多 平台跨作業系統的廣泛應用等優點,迅速被IT界接受並 推廣應用。我們作為金融業的使用者,也在1995年開始使用Sybase10版本。在具體的使用中,發現集中式的資料管理有其優點,就是資料風險範圍大為縮小,但是作為Sybase的伺服器一端,資料風險比較集中,如何做好資料庫的資料備份,成為至關重要的問題。

  在實際應用中,我們總結出了兩種全量備份方案:

  一、使用Sybase的Backup Server(備份伺服器),做Dump備份

  轉儲資料庫(Dump database),就是為整個資料庫(包括資料、表結構、觸發器、遊標、預存程序、交易記錄等)做一次物理備份。轉儲資料庫時,系統自動執行一次 checkpoint,即將日誌和資料從緩衝區拷貝到硬碟(只拷貝髒頁),把已被分配的頁(日誌和資料)轉儲到裝置。

  命令格式為:

   dump database 資料庫名 to 裝置檔案名稱 with 參數

  如果備份到硬碟的檔案上,可以不預先估算備份檔案的大小,只要硬碟有足夠的儲存空間就可以。如果是備份到dds磁帶上,那麼就要估算一下備份後的大小,90米的dds磁帶壓縮儲存空間為4G,120米的磁帶壓縮儲存空間為8G,如果資料庫的備份檔案超過了這個尺寸,就要考慮多檔案轉儲,使用 stripe參數。

  命令格式為:

   dump database 資料庫名 to 裝置檔案名稱1
    stripe on 裝置檔案名稱2
    stripe on 裝置檔案名稱3……
   with 參數

  這種資料備份方式是將整個資料庫的運行環境完整的複製一份,包括資料庫的髒頁和片段,在使用load命令恢複時,只能恢複到同樣大小的資料庫中(資料和日誌的大小都只能和原來完全一致),適用於在每天的日終營業網點下班後的日常備份。優點是資料庫完整無誤,缺點是不能直接查看備份內容。

二、分資料結構和資料記錄做兩次備份

  在一般情況下,生產機的資料庫都比較龐大,而實驗機則相對較小,難以在實驗環境中以load命令恢複工作機的內容。所以,在工作實踐中,我們摸索出了第二種全量備份方案。

  1、資料結構備份

  在windows平台的Sybase SQL Server Manager(資料庫管理)平台中選擇ServeràGenerate ddl則產生整個資料庫伺服器的所有資訊,如果選擇databaseàgenerate ddl則產生所選定資料庫的資訊,以master庫為例,產生的檔案主要包括:config.ddl(配置)、devices.ddl(裝置)、 database.ddl(資料庫)、logins.ddl(使用者)、remote.ddl(遠程)、cache.ddl(緩衝)、 segment.ddl()、group.ddl(使用者組)、user.ddl(使用者)、default.ddl(確省)、rule.ddl(規則)、 udt.ddl、table.ddl(表)、view.ddl(視圖)、proc.ddl(預存程序)、triger.ddl(觸發器)。

  2、資料記錄備份

  將資料庫各表以Sybase自代的bcp(bulk copy)工具的方式導成一定格式的文字檔,命令格式:
bcp 表名 out 路徑名 檔案名稱 -c -t 分隔字元 -u (使用者名稱)-p(密碼)-S(伺服器名)
如果將一個資料庫中的所有表都做一個bcp備份,就需要針對每一個表都做一次bcp,在一般情況下,一個資料庫有100多個表,工作量比較大。可以利用資料庫中的系統資料表資訊做一個bcp備份指令碼。原理是每一個使用者表在系統資料表中都有資訊記載,可以通過isql語句查詢得到。現舉一例說明:

  1)、先編輯一個名為mkbcpout.sql的檔案,內容如下:

select "echo bcp '"+name+" out ……………………'
"+"bcp "+name+" out ./+"name+".table -c -t '|' -Uuser -Ppassword -S SERVER" from sysobjects where type='U'
go

  2)、執行isql命令,以此檔案作為輸入,執行結果輸出到另外一個檔案裡:

isql -Uuser -Ppassword -S server -I mkbcpout.sql -O bcpout

  3)、對bcppout檔案稍微修改,增加可執行許可權

chmod +x bcpout

  4)、執行bcpout,匯出資料文本

./bcpout

  3、資料庫恢複

  業務生產機可能為小型機,而實驗開發環境的硬體環境為PC server,安裝好win nt或SCO unix下的Sybase伺服器後,根據需要建立空間足夠大的資料庫和tempdb(系統臨時資料庫),建立資料庫使用者,並將其更改為此資料庫的所有者,要注意兩點:1)此資料庫允許bcp拷貝,2)此資料庫自動清除log。命令格式為:

  1> sp_dboption databasedbname ,"select into/bulkcopy",true

  2> go

  1> sp_dboption databasename,"trunc log on chkpt",true

  2> go

  上述兩個配置可能與生產機的配置不同。

  然後以新建立的資料庫使用者登入,匯入資料結構,注意要首先匯入表結構,然後才是預存程序、觸發器等等。命令格式:

  1、 isql -Uusername -Ppassword -I table.ddl -o error.log.table

  2、 isql -Uusername -Ppassword -I proc.ddl -o error.log.proc

  ……

  為了提高bcp匯入資料的速度,需要將比較大的表的索引和主鍵刪除,否則的話,每bcp進一條資料,資料庫都自動寫一條log日誌,記載此資料的上一條和下一條記錄,確定本記錄在此表中的準確位置,一是影響bcp速度,二是資料庫的log飛速膨脹。資料庫的自動清除log功能只有在一個事務結束後才起作用。
準備工作做完後,開始倒入資料記錄。使用類似做bcpout的方法做一個bcpin的指令碼,然後執行:

   ./bcpin |tee error.bcpin

  使用tee管道輸出的目的是讓電腦完整記錄下倒入過程,自動存入error.bcpin檔案中,待倒入結束後,我們只需要檢查記錄檔,不需要一直緊盯著計算機螢幕。

  所有工作做完之後,不要忘記重新將刪除的主鍵和索引建上。

  如果有現成的資料庫,只需要單純地匯入資料記錄,則首先將資料庫中所有使用者表(也就是所有type="U"的表)清空,命令格式:

  1> truncate table tablename

  2> go

  當然最好也是利用做bcpout指令碼的做一個truncate指令碼,通過執行此指令碼將所有使用者表清空。然後的資料匯入、處理索引和主鍵的過程與上面類似。

  三、利用做bcp備份指令碼的方法做資料庫磁碟重組

  Sybase資料庫作為聯機交易處理應用伺服器,每天應用程式都對資料庫做大量的插入、修改和刪除等操作,不可避免的在資料庫的實體儲存體介質上留下頁片段和擴充單元片段,從而影響資料庫的儲存效率和運行速度。具體表現為:業務繁忙時出現死結(dead lock),資料庫的輸入/輸出資源被大量佔用,業務處理速度慢。其解決辦法是:

  1、 清空資料庫中的所有表,命令格式:

    isql -Uusername -Ppassword -I truncate.sql -o error.truncate

  2、 刪除所有表的索引和主鍵

    isql -Uusername -Ppassword -I dropindex.sql -o error.dropindex

  3、 匯入資料

    ./bcpin

  4、 添加索引和主鍵

    isql -Uusername -Ppassword -I addindex.sql -o error.addindex

  5、 更新資料庫狀態

    1> update statistics tablename

    2> go

  上述操作都是針對資料庫中的所有使用者表進行的,利用做bcp備份指令碼的方法做出相應的指令碼,使繁瑣的資料庫維護變得簡便易行,還克服了直接使用isql語句操作風險大、沒有動作記錄的毛病。

  筆者在實際工作中,使用第一種方法對生產機做日常全量備份,日終通過unix的crontab定時批量作業bcp出全部資料。使用高檔PC server 搭建類比運行環境,在需要的情況下匯入生產機資料,處理運行中後台server的各種問題,待研究出解決辦法後再在生產機上做相應調整,這樣做風險小,效果好。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.