<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 89,  comments - 98,  trackbacks - 0
    對Sybase數(shù)據(jù)庫的備份問題一直比較頭痛,可能我對它的備份問題還是了解的不夠.因此一直覺得使用起來較為繁瑣.今天看了這篇文章,有一定的作用.不過文章當中還是沒有介紹增量備份都相關的內容.有時間我可以補上.

    Sybase數(shù)據(jù)庫產品自從1987年問世以來,它的客戶機/服務器(client/server)工作模式、分布處理的基礎體系結構、完善的安全保密性能、高速快捷的運行方式、多平臺跨操作系統(tǒng)的廣泛應用等優(yōu)點,迅速被IT界接受并推廣應用。我們作為金融業(yè)的用戶,也在1995年開始使用Sybase10版本。在具體的使用中,發(fā)現(xiàn)集中式的數(shù)據(jù)管理有其優(yōu)點,就是數(shù)據(jù)風險范圍大為縮小,但是作為Sybase的服務器一端,數(shù)據(jù)風險比較集中,如何做好數(shù)據(jù)庫的數(shù)據(jù)備份,成為至關重要的問題。

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

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

    轉儲數(shù)據(jù)庫(Dump database),就是為整個數(shù)據(jù)庫(包括數(shù)據(jù)、表結構、觸發(fā)器、游標、存儲過程、事務日志等)做一次物理備份。轉儲數(shù)據(jù)庫時,系統(tǒng)自動執(zhí)行一次checkpoint,即將日志和數(shù)據(jù)從緩沖區(qū)拷貝到硬盤(只拷貝臟頁),把已被分配的頁(日志和數(shù)據(jù))轉儲到設備。

    命令格式為:

    dump database 數(shù)據(jù)庫名 to 設備文件名 with 參數(shù)

    如果備份到硬盤的文件上,可以不預先估算備份文件的大小,只要硬盤有足夠的存儲空間就可以。如果是備份到dds磁帶上,那么就要估算一下備份后的大小,90米的dds磁帶壓縮存儲空間為4G,120米的磁帶壓縮存儲空間為8G,如果數(shù)據(jù)庫的備份文件超過了這個尺寸,就要考慮多文件轉儲,使用stripe參數(shù)。

    命令格式為:

    dump database 數(shù)據(jù)庫名 to 設備文件名1

    stripe on 設備文件名2

    stripe on 設備文件名3……

    with 參數(shù)

    這種數(shù)據(jù)備份方式是將整個數(shù)據(jù)庫的運行環(huán)境完整的復制一份,包括數(shù)據(jù)庫的臟頁和碎片,在使用load命令恢復時,只能恢復到同樣大小的數(shù)據(jù)庫中(數(shù)據(jù)和日志的大小都只能和原來完全一致),適用于在每天的日終營業(yè)網點下班后的日常備份。優(yōu)點是數(shù)據(jù)庫完整無誤,缺點是不能直接查看備份內容。

    二、分數(shù)據(jù)結構和數(shù)據(jù)記錄做兩次備份

    在一般情況下,生產機的數(shù)據(jù)庫都比較龐大,而實驗機則相對較小,難以在實驗環(huán)境中以load命令恢復工作機的內容。所以,在工作實踐中,我們摸索出了第二種全量備份方案。

    1、數(shù)據(jù)結構備份

    在windows平臺的Sybase SQL Server Manager(數(shù)據(jù)庫管理)平臺中選擇ServeràGenerate ddl則產生整個數(shù)據(jù)庫服務器的所有信息,如果選擇databaseàgenerate ddl則產生所選定數(shù)據(jù)庫的信息,以master庫為例,產生的文件主要包括:config.ddl(配置)、devices.ddl(設備)、database.ddl(數(shù)據(jù)庫)、logins.ddl(用戶)、remote.ddl(遠程)、cache.ddl(緩沖)、segment.ddl()、group.ddl(用戶組)、user.ddl(用戶)、default.ddl(確省)、rule.ddl(規(guī)則)、udt.ddl、table.ddl(表)、view.ddl(視圖)、proc.ddl(存儲過程)、triger.ddl(觸發(fā)器)。

    2、數(shù)據(jù)記錄備份

    將數(shù)據(jù)庫各表以Sybase自代的bcp(bulk copy)工具的方式導成一定格式的文本文件,命令格式:

    bcp 表名 out 路徑名 文件名 -c -t 分隔符 -u (用戶名)-p(密碼)-S(服務器名)

    如果將一個數(shù)據(jù)庫中的所有表都做一個bcp備份,就需要針對每一個表都做一次bcp,在一般情況下,一個數(shù)據(jù)庫有100多個表,工作量比較大。可以利用數(shù)據(jù)庫中的系統(tǒng)表信息做一個bcp備份腳本。原理是每一個用戶表在系統(tǒng)表中都有信息記載,可以通過isql語句查詢得到。現(xiàn)舉一例說明:

    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)、執(zhí)行isql命令,以此文件作為輸入,執(zhí)行結果輸出到另外一個文件里:

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

    3)、對bcppout文件稍微修改,增加可執(zhí)行權限

    chmod +x bcpout

    4)、執(zhí)行bcpout,導出數(shù)據(jù)文本:

    ./bcpout

    3、數(shù)據(jù)庫恢復

    業(yè)務生產機可能為小型機,而實驗開發(fā)環(huán)境的硬件環(huán)境為PC server,安裝好win nt或SCO unix下的Sybase服務器后,根據(jù)需要創(chuàng)建空間足夠大的數(shù)據(jù)庫和tempdb(系統(tǒng)臨時數(shù)據(jù)庫),創(chuàng)建數(shù)據(jù)庫用戶,并將其更改為此數(shù)據(jù)庫的所有者,要注意兩點:1)此數(shù)據(jù)庫允許bcp拷貝,2)此數(shù)據(jù)庫自動清除log。命令格式為:

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

    2> go

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

    2> go

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

    然后以新創(chuàng)建的數(shù)據(jù)庫用戶登錄,導入數(shù)據(jù)結構,注意要首先導入表結構,然后才是存儲過程、觸發(fā)器等等。命令格式:

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

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

    ……

    為了提高bcp導入數(shù)據(jù)的速度,需要將比較大的表的索引和主鍵刪除,否則的話,每bcp進一條數(shù)據(jù),數(shù)據(jù)庫都自動寫一條log日志,記載此數(shù)據(jù)的上一條和下一條記錄,確定本記錄在此表中的準確位置,一是影響bcp速度,二是數(shù)據(jù)庫的log飛速膨脹。數(shù)據(jù)庫的自動清除log功能只有在一個事務結束后才起作用。

    準備工作做完后,開始倒入數(shù)據(jù)記錄。使用類似做bcpout的方法做一個bcpin的腳本,然后執(zhí)行:

    ./bcpin |tee error.bcpin

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

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

    如果有現(xiàn)成的數(shù)據(jù)庫,只需要單純地導入數(shù)據(jù)記錄,則首先將數(shù)據(jù)庫中所有用戶表(也就是所有type="U"的表)清空,命令格式:

    1> truncate table tablename

    2> go

    當然最好也是利用做bcpout腳本的做一個truncate腳本,通過執(zhí)行此腳本將所有用戶表清空。然后的數(shù)據(jù)導入、處理索引和主鍵的過程與上面類似。

    三、利用做bcp備份腳本的方法做數(shù)據(jù)庫碎片整理

    Sybase數(shù)據(jù)庫作為聯(lián)機事務處理應用服務器,每天應用程序都對數(shù)據(jù)庫做大量的插入、修改和刪除等操作,不可避免的在數(shù)據(jù)庫的物理存儲介質上留下頁碎片和擴展單元碎片,從而影響數(shù)據(jù)庫的存儲效率和運行速度。具體表現(xiàn)為:業(yè)務繁忙時出現(xiàn)死鎖(dead lock),數(shù)據(jù)庫的輸入/輸出資源被大量占用,業(yè)務處理速度慢。其解決辦法是:

    1、 清空數(shù)據(jù)庫中的所有表,命令格式:isql -Uusername -Ppassword -I truncate.sql -o error.truncate

    2、 刪除所有表的索引和主鍵:isql -Uusername -Ppassword -I dropindex.sql -o error.dropindex

    3、 導入數(shù)據(jù):./bcpin

    4、 添加索引和主鍵:isql -Uusername -Ppassword -I addindex.sql -o error.addindex

    5、 更新數(shù)據(jù)庫狀態(tài)

    1> update statistics tablename

    2> go

    上述操作都是針對數(shù)據(jù)庫中的所有用戶表進行的,利用做bcp備份腳本的方法做出相應的腳本,使繁瑣的數(shù)據(jù)庫維護變得簡便易行,還克服了直接使用isql語句操作風險大、沒有操作日志的毛病。

    筆者在實際工作中,使用第一種方法對生產機做日常全量備份,日終通過unix的crontab定時批量作業(yè)(具體做法請參考《中國金融電腦》2001年第10期有關crontab的文章)bcp出全部數(shù)據(jù)。使用高檔PC server 搭建模擬運行環(huán)境,在需要的情況下導入生產機數(shù)據(jù),處理運行中后臺server的各種問題,待研究出解決辦法后再在生產機上做相應調整,這樣做風險小,效果好。

    posted on 2006-09-11 11:12 水煮三國 閱讀(528) 評論(0)  編輯  收藏 所屬分類: Sybase
    <2006年9月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567

    常用鏈接

    留言簿(4)

    隨筆分類(85)

    隨筆檔案(89)

    文章分類(14)

    文章檔案(42)

    收藏夾(37)

    java

    oracle

    Sybase

    搜索

    •  

    積分與排名

    • 積分 - 210850
    • 排名 - 265

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 少妇中文字幕乱码亚洲影视| 免费人成视频在线观看视频| 亚洲第一成年男人的天堂| 一区二区三区免费在线视频| 亚洲精品和日本精品| 四虎国产精品成人免费久久| 亚洲国产成人精品91久久久| 国产av无码专区亚洲av毛片搜| 色播在线永久免费视频| 亚洲综合在线一区二区三区| 在线观看免费为成年视频| 亚洲欧美精品午睡沙发| 免费国产成人午夜电影| 日韩免费高清一级毛片| 免费h成人黄漫画嘿咻破解版| 青草青草视频2免费观看| 亚洲色图综合在线| a毛片全部播放免费视频完整18| 亚洲av女电影网| 久久受www免费人成_看片中文| 亚洲日韩一区精品射精| 亚洲国产精品成人网址天堂| 黄网站免费在线观看| 亚洲福利电影一区二区?| 四虎在线免费播放| 成年大片免费视频播放一级| 久久亚洲一区二区| 欧美日韩国产免费一区二区三区| 成人婷婷网色偷偷亚洲男人的天堂| 国产成人亚洲综合| 日韩在线永久免费播放| 久久亚洲精品无码av| 亚洲精品无码久久久久去q| 最近高清中文字幕无吗免费看| 在线播放亚洲精品| 91亚洲一区二区在线观看不卡 | 日韩视频免费在线观看| 亚洲制服丝袜中文字幕| 亚洲AV无码成H人在线观看| 99精品一区二区免费视频| 亚洲AV无码一区二区三区鸳鸯影院|