• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      Linux平臺(tái)下Sybase數(shù)據(jù)庫(kù)備份的方法分析

      2018-06-07 06:48劉君堯王輝靜劉云霞
      無(wú)線互聯(lián)科技 2018年1期

      劉君堯 王輝靜 劉云霞

      摘 要:對(duì)于從事信息系統(tǒng)管理的人員來(lái)說(shuō),掌握數(shù)據(jù)庫(kù)的備份方法在工作中尤為重要。當(dāng)本地?cái)?shù)據(jù)出錯(cuò)或者磁盤(pán)損壞時(shí),可以利用備份的數(shù)據(jù)恢復(fù)數(shù)據(jù)庫(kù)系統(tǒng),從而保證系統(tǒng)的正常運(yùn)行。文章以Linux平臺(tái)下的Sybase數(shù)據(jù)庫(kù)為例,給出兩種不同備份的實(shí)現(xiàn)方法。

      關(guān)鍵詞:Linux平臺(tái);Sybase;數(shù)據(jù)庫(kù)備份

      對(duì)于從事信息管理系統(tǒng)的人員來(lái)說(shuō),掌握數(shù)據(jù)庫(kù)的備份是必備的技能。當(dāng)本地?cái)?shù)據(jù)出錯(cuò)、人為誤操作或者磁盤(pán)/文件損壞時(shí),可以利用備份的數(shù)據(jù)進(jìn)行恢復(fù),從而保證系統(tǒng)的正常運(yùn)行[1]。本文以Linux平臺(tái)下Sybase數(shù)據(jù)庫(kù)的備份為例,給出兩種備份的實(shí)現(xiàn)方法,并對(duì)這兩種方法實(shí)現(xiàn)的操作專(zhuān)業(yè)程度、時(shí)間性能、可擴(kuò)展性等方面進(jìn)行比較說(shuō)明,以供信息系統(tǒng)管理人員進(jìn)行相應(yīng)管理操作使用。Linux平臺(tái)下Sybase數(shù)據(jù)庫(kù)備份的方法主要有兩種:(1)整庫(kù)二進(jìn)制備份;(2)整表文本備份。下面針對(duì)這兩種備份方法進(jìn)行詳細(xì)描述,并給出客觀的對(duì)比結(jié)論。

      1 整庫(kù)二進(jìn)制備份恢復(fù)

      1.1整庫(kù)二進(jìn)制備份

      整庫(kù)二進(jìn)制備份主要采用轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫(kù)的方式進(jìn)行,就是為整個(gè)數(shù)據(jù)庫(kù)(包括數(shù)據(jù)、表結(jié)構(gòu)、觸發(fā)器、游標(biāo)、存儲(chǔ)過(guò)程、事務(wù)日志等)做一次完整的物理備份。

      Sybase進(jìn)行數(shù)據(jù)庫(kù)轉(zhuǎn)儲(chǔ)時(shí),Sybase系統(tǒng)自動(dòng)執(zhí)行一次Checkpoint(所謂的Checkpoint是將日志和數(shù)據(jù)從內(nèi)存緩沖區(qū)寫(xiě)入到硬盤(pán)中(只針對(duì)改動(dòng)過(guò)的數(shù)據(jù)進(jìn)行寫(xiě)入,即臟頁(yè)寫(xiě)入),把己被分配的日志頁(yè)和數(shù)據(jù)頁(yè)也寫(xiě)入到磁盤(pán)中,確保進(jìn)行數(shù)據(jù)庫(kù)轉(zhuǎn)儲(chǔ)時(shí)數(shù)據(jù)的正確性。 通過(guò)整庫(kù)二進(jìn)制備份,可以將整個(gè)數(shù)據(jù)庫(kù)的運(yùn)行環(huán)境完整復(fù)制一份,包括數(shù)據(jù)庫(kù)的結(jié)構(gòu)、臟頁(yè)和碎片,在使用load命令恢復(fù)時(shí),只能恢復(fù)到同樣大小的數(shù)據(jù)庫(kù)中(數(shù)據(jù)和日志的大小都只能和原來(lái)完全一致),可以確保真正地還原,恢復(fù)后數(shù)據(jù)庫(kù)準(zhǔn)確無(wú)誤。

      可以采用如下的方式進(jìn)行Sybase的整庫(kù)二進(jìn)制備份:使用Sybase數(shù)據(jù)庫(kù)提供的isql命令登錄數(shù)據(jù)庫(kù)服務(wù)器,并使用dump命令進(jìn)行備份。具體的命令實(shí)現(xiàn)為:

      dbuser> isql -S{DBServerName)-U{username) -P{password)

      dump database {dbname) to “path/filename” withcompression={level)

      dump transaction {dbname) to“path/filename"

      go

      其中“path/filename”為備份出來(lái)的文件放置的目錄以及文件名。compression為備份時(shí)是否進(jìn)行壓縮,取值范圍:0-9以及100或者101。其中0表示不壓縮,9表示最高壓縮比進(jìn)行壓縮。100表示提供更快速度的壓縮;101表示提供壓縮比更高的壓縮,一般根據(jù)磁盤(pán)的情況以及壓縮的時(shí)長(zhǎng),來(lái)決定具體的壓縮等級(jí)。

      1.2整庫(kù)二進(jìn)制恢復(fù)

      整庫(kù)二進(jìn)制恢復(fù)可以將整庫(kù)二進(jìn)制備份方式下備份出來(lái)的數(shù)據(jù)庫(kù)物理備份進(jìn)行恢復(fù)。采用整庫(kù)二進(jìn)制恢復(fù),可以確保數(shù)據(jù)庫(kù)恢復(fù)到備份時(shí)的情況,包括數(shù)據(jù)庫(kù)結(jié)構(gòu)、數(shù)據(jù)、頁(yè)和碎片等。整庫(kù)二進(jìn)制恢復(fù)在進(jìn)行恢復(fù)前,需要確保要恢復(fù)的數(shù)據(jù)庫(kù)設(shè)備存在,并且要比備份的容量相等或者更大。以便可以完整地進(jìn)行物理恢復(fù)。整庫(kù)二進(jìn)制恢復(fù)分3步進(jìn)行。

      第一步:創(chuàng)建準(zhǔn)備恢復(fù)的數(shù)據(jù)庫(kù)設(shè)備(包括數(shù)據(jù)設(shè)備和日志設(shè)備)以及數(shù)據(jù)庫(kù)。

      可以采用如下命令,創(chuàng)建恢復(fù)所需的數(shù)據(jù)庫(kù)設(shè)備:

      dbuser> isql -S{DBServerName)-U{username) -P{password)

      disk init name=datadev, physname=/opt/Sybase/data/datadev.dat. size=150m'

      disk init name=logdev, physname=/opt/Sybase/data/logdev.dat, size=300m'

      go

      datadev為數(shù)據(jù)設(shè)備,用于放置實(shí)際的數(shù)據(jù);logdev為日志設(shè)備,用于放置日志數(shù)據(jù),disk init命令用于創(chuàng)建數(shù)據(jù)庫(kù)所需的數(shù)據(jù)設(shè)備和日志設(shè)備。上面命令表示,創(chuàng)建一個(gè)數(shù)據(jù)設(shè)備,容量大小為150 M,設(shè)備名稱(chēng)為datadev;創(chuàng)建一個(gè)日志設(shè)備,容量大小為300 M,設(shè)備名稱(chēng)為logdev。

      可以采用如下命令,創(chuàng)建恢復(fù)所需的數(shù)據(jù)庫(kù):

      dbuser> isql -S{DBServerName)-U{username) -P{password)

      create database dbname on datadev=150m' log onlogdev=300m

      go

      上面的命令表示,在數(shù)據(jù)設(shè)備datadev以及日志設(shè)備logdev(這兩個(gè)設(shè)備由disk init命令創(chuàng)建)上創(chuàng)建數(shù)據(jù)庫(kù)dbname,數(shù)據(jù)庫(kù)大小為:數(shù)據(jù)容量大小150 M,日志容量大小300 M。創(chuàng)建的數(shù)據(jù)庫(kù)容量(包括數(shù)據(jù)容量和日志容量)以及數(shù)據(jù)庫(kù)用到的數(shù)據(jù)設(shè)備、日志設(shè)備數(shù)量、大小,都要與備份的數(shù)據(jù)庫(kù)保持一致。

      第二步:進(jìn)行物理恢復(fù),可以采用如下命令,在第一步創(chuàng)建的數(shù)據(jù)庫(kù)上進(jìn)行數(shù)據(jù)恢復(fù)。

      dbuser> isql -S{DBServerName} -U{username}P{password}

      load database dbname from "path/filename"

      go

      上述命令表示從path/filename備份文件中,將數(shù)據(jù)直接導(dǎo)入到數(shù)據(jù)庫(kù)dbname。

      第三步:激活數(shù)據(jù)庫(kù),可以采用如下命令,在第二步導(dǎo)入數(shù)據(jù)庫(kù)后進(jìn)行數(shù)據(jù)庫(kù)激活。

      dbuser> isql -S{DBServerName)-U{username) -P{password)

      online database dbname

      go

      2 整表文本備份恢復(fù)

      2.1整表文本備份

      整表文本備份主要采用文本導(dǎo)出的方式,將數(shù)據(jù)庫(kù)中數(shù)據(jù)表的數(shù)據(jù),按照csv格式導(dǎo)出為文本文件。整表文本備份只能進(jìn)行數(shù)據(jù)表的數(shù)據(jù)的備份,無(wú)法將數(shù)據(jù)庫(kù)結(jié)構(gòu)、頁(yè)面信息、數(shù)據(jù)庫(kù)日志等信息導(dǎo)出。

      整表文本備份,可以使用Sybase數(shù)據(jù)庫(kù)提供的bcp命令進(jìn)行,具體的命令實(shí)現(xiàn)為:

      dbuser> isql -S{DBServerName)-U{username) -P{password)

      use dbname

      go

      checkpoint

      90

      quit

      dbuser>bcp {tablename) out “path/filename" 一c -t{字段間隔符)-r{記錄間隔符)-S{DBServerName) -U{username)-P{password)

      默認(rèn)的字段間隔符為\t;默認(rèn)的記錄間隔符為\n。如果表中字段本身有\t\n等特殊字符,可以采用較為復(fù)雜的字符串作為字段間隔符或者記錄間隔符,以避免出現(xiàn)恢復(fù)失敗。

      如果要對(duì)整個(gè)數(shù)據(jù)庫(kù)進(jìn)行備份,需要對(duì)數(shù)據(jù)庫(kù)中所有的數(shù)據(jù)表逐個(gè)執(zhí)行bcp命令進(jìn)行備份,可以用一個(gè)命令來(lái)生成備份的語(yǔ)句,實(shí)現(xiàn)對(duì)一個(gè)數(shù)據(jù)庫(kù)的所有數(shù)據(jù)表進(jìn)行備份:

      dbuser> isql -S{DBServerName)-U{username) -P{password)

      select 'bcp ‘+name+out ‘+path/filename -c -t{字段間隔符)-r{記錄間隔符)- S{DBServerName) -63U{username) -P{password) from sysobjects where type='U'

      go

      2.2整表文本恢復(fù)

      當(dāng)數(shù)據(jù)庫(kù)中某個(gè)數(shù)據(jù)表,或者整個(gè)數(shù)據(jù)庫(kù)出現(xiàn)故障需要恢復(fù)時(shí),可以采用整表文本恢復(fù)的方式進(jìn)行恢復(fù)。采用整表文本恢復(fù),需要的前提是:(1)數(shù)據(jù)庫(kù)已經(jīng)存在;(2)數(shù)據(jù)表已經(jīng)創(chuàng)建,并且和備份時(shí)的字段名稱(chēng)、順序完全相同。

      因此,整表文本恢復(fù)需要如下4個(gè)步驟。

      第一步:創(chuàng)建準(zhǔn)備恢復(fù)的數(shù)據(jù)庫(kù)設(shè)備(包括數(shù)據(jù)設(shè)備和日志設(shè)備)以及數(shù)據(jù)庫(kù),如果數(shù)據(jù)庫(kù)已經(jīng)存在,則可以跳過(guò)。具體創(chuàng)建數(shù)據(jù)庫(kù)設(shè)備和數(shù)據(jù)庫(kù)的命令,可以參考“整庫(kù)二進(jìn)制恢復(fù)”的內(nèi)容。

      第二步:創(chuàng)建要恢復(fù)的數(shù)據(jù)表,如果該數(shù)據(jù)表已經(jīng)存在,則可以跳過(guò)??梢圆捎萌缦旅?,在第一步創(chuàng)建的數(shù)據(jù)庫(kù)上創(chuàng)建數(shù)據(jù)表。

      dbuser> isql -S{DBServerName)-U{username) -P{password)

      use dbname

      90

      create tabletablename}

      90

      創(chuàng)建數(shù)據(jù)表的create table命令格式如下:

      CREATE TABLE table-name

      {{ column-definition I table-constraint(pctfree)….)

      [{ IN(ON) dbspace-name]

      [ ENCRYPTED]

      [ ON COMMIT{ DELETE(PRESERVE) ROWS

      [NOT TRANSACTIONAL]

      [ AT location-string]

      [ SHARE BY ALL]

      column- definition:

      column-name data-type

      [ COMPRESSED]

      [ INLINE{ inline-length I USE DEFAULT)]

      [ PREFIX{ prefix-length l USE DEFAULT)]

      [[ NO] INDEX]

      [[ NOT] NULL]

      [ DEFAULT default-value|IDENTITY]

      [ column-constraint…]

      column-constraint:

      [ CONSTRAINT constraint-name]{

      UNIQUE[ CLUSTERED]

      [PRIMARY KEY[ CLUSTERED][ASC | DESC]

      [REFERENCES table-name[(column-name)]

      [ MATCH[ UNIQUE]{SIMPLE[ FULL)]

      [ action-list][CLUSTERED]

      [CHECK( condition)

      }

      COMPUTE ( expression )table-constraint :

      [ CONSTRAINT constraint-name]{

      UNIQUE[ CLUSTERED](column-name[ ASC『DESC]….)

      [PRIMARY KEY[ CLUSTERED](column-name[ASC[ DESC]….)

      [CHECK( condition)

      [foreign-key-constraint

      }

      foreign-key-constraint:

      [ NOT NULL] FOREIGN KEY[ role-name]

      [( column-name[ ASC[DESC]….)]

      REFERENCES table-name

      [(coluinn-name,.)]

      [ MATCH[ UNIQUE]{ SIMPLE l FULL)]

      [ action-list][CHECK ON COMMIT][CLUSTERED][FOR OLAP WORKLOAD]

      第三步:刪除表中已有的數(shù)據(jù),避免導(dǎo)入沖突,此步驟在表中已有數(shù)據(jù)的情況下執(zhí)行即可,如果是新建的表,可以跳過(guò)此步驟。可以采用如下命令,將表中的數(shù)據(jù)清空。

      dbuser> isql -S{DBServerName)-U{username) -P{password)

      truncate table {tablename)

      go

      第四步:將數(shù)據(jù)導(dǎo)入,可以采用如下命令,將備份出的整表文本數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)中指定的數(shù)據(jù)表中。

      bcp{dbname}.{tablename} in“path/filename”一c -t{字段間隔符)-r{記錄間隔符)-S{DBServerName) -U{username)-P{password

      3 兩種備份方法的對(duì)比分析

      整庫(kù)二進(jìn)制備份,可以對(duì)Sybase數(shù)據(jù)庫(kù)的數(shù)據(jù)、相關(guān)的表結(jié)構(gòu)和數(shù)據(jù)庫(kù)事務(wù)日志都進(jìn)行備份,但是備份的文件容量比較大,一般約等于數(shù)據(jù)庫(kù)的真實(shí)容量(不做壓縮情況下),同時(shí)由于采用整庫(kù)備份(也支持?jǐn)?shù)據(jù)庫(kù)事務(wù)日志備份),因此,在備份效率、備份一致性以及信息完整性上有明顯優(yōu)勢(shì)。

      整表文本備份,只針對(duì)數(shù)據(jù)表中存儲(chǔ)的數(shù)據(jù)進(jìn)行備份,因此備份的文件容量較小,一般約等于數(shù)據(jù)庫(kù)真實(shí)容量的20% -50%(一般文本數(shù)據(jù),不做壓縮情況下),由于采用數(shù)據(jù)表粒度進(jìn)行備份,因此,可以靈活選擇需要備份的內(nèi)容進(jìn)行備份,甚至對(duì)備份的數(shù)據(jù)進(jìn)行調(diào)整和處理,同時(shí)也可以針對(duì)不同重要程度的數(shù)據(jù)表進(jìn)行有差異的備份(比如不同的備份周期,重要的數(shù)據(jù)表以較短的備份周期進(jìn)行備份)。但是采用整表文本備份也有明顯的缺陷,如果數(shù)據(jù)庫(kù)的數(shù)據(jù)表結(jié)構(gòu)發(fā)生損壞,通過(guò)此備份方式將無(wú)法恢復(fù),需要先恢復(fù)或者重建表結(jié)構(gòu);另外對(duì)于數(shù)據(jù)庫(kù)中Image,Blob等二進(jìn)制存儲(chǔ)類(lèi)型的數(shù)據(jù),此方法容易產(chǎn)生亂碼,不建議使用。

      如果備份的磁盤(pán)空間比較大,建議可以?xún)煞N備份方式都采用,在恢復(fù)的時(shí)候,根據(jù)具體的需要采取恢復(fù)的手段。4實(shí)驗(yàn)測(cè)試結(jié)果

      具體的實(shí)驗(yàn)環(huán)境為:服務(wù)器:CPU 2*Xeon E5 4650;內(nèi)存128 G;磁盤(pán)容量2T(磁盤(pán)陣列RAID l+0);操作系統(tǒng):RedHat Linux 7;數(shù)據(jù)庫(kù)服務(wù)器:Sybase ASE 15.7;數(shù)據(jù)庫(kù)容量:約50 G; 336個(gè)數(shù)據(jù)表。實(shí)驗(yàn)效果如表所示,需要注意的是,不同的存儲(chǔ)內(nèi)容以及存儲(chǔ)格式對(duì)備份時(shí)長(zhǎng)及備份文件大小有一定的影響。兩種數(shù)據(jù)庫(kù)備份方法的比較如表1所示。

      5結(jié)語(yǔ)

      Linux平臺(tái)下Sybase數(shù)據(jù)庫(kù)備份的兩種方法各有優(yōu)劣勢(shì),也有不同的應(yīng)用場(chǎng)景,信息系統(tǒng)管理人員在進(jìn)行數(shù)據(jù)備份時(shí),可以因地制宜,選擇合適的備份方法進(jìn)行數(shù)據(jù)備份。

      [參考文獻(xiàn)]

      [1]王暉媛SQL Server中數(shù)據(jù)庫(kù)備份和恢復(fù)方法的研究[J]計(jì)算機(jī)光盤(pán)軟件與應(yīng)用,2011(2):112-113

      宾川县| 泾川县| 诏安县| 惠州市| 横峰县| 永嘉县| 屏东市| 河池市| 南漳县| 棋牌| 伊宁县| 中超| 铜陵市| 三都| 邯郸县| 锦屏县| 容城县| 皋兰县| 高邑县| 铜梁县| 花垣县| 彭水| 浦北县| 沭阳县| 道孚县| 蕲春县| 崇仁县| 静安区| 巩义市| 嵩明县| 贵南县| 兖州市| 新疆| 南京市| 鱼台县| 大方县| 亚东县| 横峰县| 社旗县| 上饶市| 岳西县|