Sybase資料庫備份方案

2021-04-22 07:53:08 字數 4158 閱讀 2036

sybase資料庫產品自從2023年問世以來,它的客戶

機/伺服器(client/server)工作模式、分布處理的基礎體系結構、完善的安全保密性能、高速快捷的執行方式、多平台

跨作業系統的廣泛應用等優點,迅速被it界接受並推廣

應用。我們作為金融業的使用者,也在2023年開始使用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'

go2)、執行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的各種問題,待研究出解決辦法後再在生產機上做相應調整,這樣做風險小,效果

好。

Sybase資料庫備份方案

作為sybase的伺服器一端,資料風險比較集中,如何做好資料庫的資料備份,成為至關重要的問題。在實際應用中,我們總結出了兩種全量備份方案 一 使用sybase的backup server 備份伺服器 做dump備份 轉儲資料庫 dump database 就是為整個資料庫 包括資料 表結構 觸發器 ...

Sybase資料庫備份方案

sybase資料庫產品自從1987年問世以來,它的客戶機 伺服器 client server 工作模式 分布處理的基礎體系結構 完善的安全保密性能 高速快捷的執行方式 多平台跨作業系統的廣泛應用等優點,迅速被it界接受並推廣應用。我們作為金融業的使用者,也在1995年開始使用sybase10版本。在...

Sybase資料庫表備份

1.insert into select語句 語句形式為 insert into table2 field1,field2,select value1,value2,from table1 要求目標表table2必須存在,由於目標表 table2 已經存在,所以我們除了插入源表 table1 的字段...