




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章數(shù)據(jù)文件安全與恢隨著的發(fā)展和計(jì)算機(jī)的普及,越來(lái)越多的數(shù)據(jù)以比特的形式保存到數(shù)據(jù)庫(kù)中,數(shù)據(jù)文件作為數(shù)據(jù)的載體其安全性受到了極大視。在發(fā)生火災(zāi)、人為操作、客破壞和服務(wù)器故障等時(shí),通過(guò)什么措施保證數(shù)據(jù)文件的安全和恢復(fù)就業(yè)務(wù)可持 9的系統(tǒng)可用性”來(lái)表示系統(tǒng)的可用性情況。9的個(gè)數(shù)越多,系統(tǒng)的可用性就越高,為此付出的代價(jià)也越大。如表6.1列出了1~59的可用性時(shí)間。6.1高可用性時(shí)多少個(gè)可用12345故障SQLServer2008高可用性技SQLServer2008在災(zāi)備恢復(fù)上有著不同的策略,在高可用技術(shù)上,按照數(shù)據(jù)備份的方式分類,分為3種技術(shù)。SQLServer上的溫備技術(shù)主要有事務(wù)性、日志傳送和數(shù)據(jù)庫(kù)鏡像——高性能SQLServer中的技術(shù)實(shí)現(xiàn)有除了災(zāi)備恢復(fù)以外,SQLServer2008還對(duì)人為做出了相應(yīng)的功能,那就是數(shù)據(jù)庫(kù)SQLServer2000及以前的數(shù)據(jù)庫(kù)版本中,若是由于用戶、應(yīng)用程序或者數(shù)據(jù)庫(kù)管理員操作造成了數(shù)據(jù)的破壞,就只有通過(guò)從數(shù)據(jù)庫(kù)的備份中才能恢復(fù),但是備份也可能不是的數(shù)據(jù),從而造成數(shù)據(jù)丟失。如果使用日志傳送的方式,則又會(huì)有一定的數(shù)據(jù)延遲,而使用數(shù)據(jù)庫(kù)快照可以快速恢復(fù)人為的破壞。另外,在數(shù)據(jù)庫(kù)的管理與上,SQLServer2008也提供了索引操作、數(shù)據(jù)庫(kù)快6.1SQLServer2008在高可用性上對(duì)應(yīng)的
6.1SQLServer2008數(shù)據(jù)庫(kù)備份簡(jiǎn)對(duì)數(shù)據(jù)庫(kù)的備份是最基本的一種數(shù)據(jù)庫(kù)管理。在考慮備份時(shí)可以采用一個(gè)簡(jiǎn)單的規(guī)備份能夠提供針對(duì)數(shù)據(jù)的意外或修改、應(yīng)用程序錯(cuò)誤、自然的解決方案。如數(shù)據(jù)庫(kù)備份可以上環(huán)境中運(yùn)行,所以根本不需要數(shù)據(jù)庫(kù)離線。使用數(shù)據(jù)庫(kù)備份能壞的情況下將無(wú)法找回,這是數(shù)據(jù)庫(kù)備份的主要缺點(diǎn)。SQLServer2008中提供了以下幾種增量備份:是只自上次完整備份以后發(fā)生修改的區(qū)(extent,1個(gè)區(qū)中有8個(gè)頁(yè))。這些修改的區(qū)會(huì)被到一個(gè)指定的備份設(shè)備上。SQLServer是通過(guò)校驗(yàn)數(shù)據(jù)庫(kù)中每個(gè)數(shù)據(jù)文件的“DCM頁(yè)”(增量變化映射頁(yè))中的比特位來(lái)分辨哪些說(shuō)明:DCM頁(yè)是一個(gè)很大的位圖,用一個(gè)比特位來(lái)代表文件中的一個(gè)區(qū)。每次執(zhí)行完DCM8個(gè)數(shù)據(jù)頁(yè)有任何一個(gè)修改時(shí),其對(duì)應(yīng)的DCM中的比特位就會(huì)置1。文件和文件組備份:SQLServer中使用了文件和文件組的概念,將數(shù)據(jù)存放在多SQLServer中并不關(guān)心所有數(shù)據(jù)是備份到物理硬盤上還是磁帶上。在數(shù)據(jù)庫(kù)備份中,T-SQL、SSMS、DMO和WMI來(lái)創(chuàng)建備份設(shè)備。在SQLServer2008中,系統(tǒng)提供了sp_addumpdevice系統(tǒng)過(guò)程用于創(chuàng)建備份設(shè)備。sp_addumpdevice的語(yǔ)法如代碼6.16.1sp_addumpdevice語(yǔ)sp_addumpdevicesp_addumpdevice[@devtype=],[@logicalname=],[@physicalname=]'physical_name'[,{[@cntrltype=]controller_type|[@devstatus=]'device_status']Disklogical_name是在BACKUP和RESTORE語(yǔ)句中使用的備份設(shè)備的邏輯名稱。physical_name是備份設(shè)備的物理名稱。物理名稱必須遵從操作系統(tǒng)文件名規(guī)則或網(wǎng)絡(luò)設(shè)備的通用命名約定,并且必須包含完整路徑。例如需要將數(shù)據(jù)庫(kù)備份到硬盤中的“D:\DbBackup\Db1.bak”文件中,那么添加該設(shè)備的SQL如代碼6.2所示。6.2添加硬盤作為設(shè)USEUSEmaster;EXECsp_addumpdevice'disk','mydisckbackup',6.3添加網(wǎng)絡(luò)共享硬盤作為設(shè)USEUSEmaster;EXECsp_addumpdevice'disk','mynetbackup','\\\ShareBak\說(shuō)明:要使用網(wǎng)絡(luò)共享硬盤作為設(shè)備則必須具有對(duì)該路徑的讀寫權(quán)限。儲(chǔ)過(guò)程。sp_dropdevice的語(yǔ)法為:sp_dropdevicesp_dropdevice[@logicalname=]'device'[,[@delfile=]'delfile']其中device為需要?jiǎng)h除設(shè)備的邏輯名稱。第2個(gè)參數(shù)delfile為可選參數(shù),表示是否刪mynetbackup,則對(duì)應(yīng)的SQL如代碼6.4所示。6.4刪除備份設(shè)USEUSEmaster;EXECsp_dropdeviceSSMS的對(duì)象資源管理器中展開(kāi)“服務(wù)器對(duì)象”節(jié)點(diǎn)下的“備份設(shè)備”節(jié)點(diǎn),統(tǒng)將彈出“備份設(shè)備”框,如圖6.2所示。圖6.2“備份設(shè)備”注意:備份設(shè)備只能新建和刪除,不能修改,若要修改某個(gè)備份設(shè)備,只有先刪除該設(shè)數(shù)據(jù)庫(kù)備前面已經(jīng)講到,SQLServer2008提供了多種備份類型。SQLServer為數(shù)據(jù)庫(kù)備份提供了BACKUP命令,無(wú)論是完整備份、增量備份、日志備份還是文件組備份都是使用該命令。BACKUP命令的語(yǔ)法格式如代碼6.5所示。6.5BACKUP語(yǔ)BACKUPDATABASE|LOG{database_name|@database_name_var}BACKUPDATABASE|LOG{database_name|@database_name_var} <read_only_filegroup>[,...n]]]TO<backup_device>[,...n][WITH{DIFFERENTIAL|<general_WITH_options>[,...n]}<general_WITH_options>[,...n]::=[,|{COMPRESSION PRESSION|DESCRIPTION={'text'|@text_variable|NAME={backup_set_name|@backup_set_name_var|PASSWORD={password|@password_variable|{EXPIREDATE={'date'|@date_var|RETAINDAYS={days|@days_var}BACKUPDATABASE命BACKUPLOG命說(shuō)明:進(jìn)行完整數(shù)據(jù)庫(kù)備份或差異數(shù)據(jù)庫(kù)備份時(shí),SQLServer會(huì)備份足夠的事務(wù)日志,<file_or_filegroup>[,...n]BACKUPDATABASE一起使用,用于指定某DIFFERENTIALBACKUPDATABASE一起使用,指定數(shù)據(jù)庫(kù)備份或COPY_ONLY:指定備份為“僅備份”,該備份不影響正常的備份順序。 DESCRIPTION255個(gè)PASSWORD:為備份集設(shè)置。PASSWORD是一個(gè)字符串,但是該功能安全性很低,下一版SQLServer將刪除該功能,所以不建議使用。EXPIREDATERETAINDAYS:指定必須經(jīng)過(guò)多少天才可以覆蓋該備份集 PRESSION是SQLServer2008中新添加的功能選項(xiàng),6.6完整備份數(shù)據(jù)BACKUPBACKUPDATABASETestDB1TOWITHname='TestDB1Backup',TestDB1數(shù)據(jù)庫(kù)備份到設(shè)備mydisk1,那么對(duì)應(yīng)的SQL如代碼6.7所示。6.7備份數(shù)據(jù)庫(kù)到備BACKUPBACKUPDATABASEWITHname='TestDB1Backup',在SSMS的對(duì)象資源管理器中右擊要備份的數(shù)據(jù)庫(kù)節(jié)點(diǎn)(如TestDB1),在彈出的6.3TestDB1,在“備單擊“刪除”按鈕,刪除默認(rèn)的備份設(shè)備,然后單擊“添加”按鈕,系統(tǒng)彈出“選擇備份目標(biāo)”框,如圖6.4所示。 圖6.3“備份數(shù)據(jù)庫(kù)” 圖6.4“選擇備份目標(biāo)”數(shù)據(jù)庫(kù)恢備份數(shù)據(jù)庫(kù)類似,恢復(fù)數(shù)據(jù)庫(kù)使用RESTORE命令,其語(yǔ)法格式如代碼6.8所示。6.8RESTORE語(yǔ)法格RESTORERESTOREDATABASE|LOG{database_name|@database_name_var}[FROM<backup_device>[,...n]][{[RECOVERY|NORECOVERY|STANDBY]|,<general_WITH_options>[,...n|,|,|,<service_broker_WITH}[,...n]<general_WITH_options>[,...n--RestoreOperationMOVE'logical_file_name_in_backup'TO'operating_system_file_name'[,...n]||||FILE={backup_set_file_number|@backup_set_file_number|PASSWORD={password|@password_variableRESTOREDATABASERESTORELOG用于日志備NORECOVERY和RECOVERY,也沒(méi)STANDBY,則默認(rèn)為RECOVERY。NORECOVERYSTANDBY:指定一個(gè)允許撤銷恢復(fù)效果的備用文件。STANDBY選項(xiàng)可以用于如果不提供該值,SQLServer將默認(rèn)從的備份中恢復(fù)。MOVE據(jù)庫(kù)文件在C:\Data 下,那么對(duì)應(yīng)的SQL如代碼6.9所示。6.9還原數(shù)據(jù)RESTOREDATABASE[db1]FROMDISKRESTOREDATABASE[db1]FROMDISK='C:\db1.bak'WITHFILE=1,MOVE'TestDB1'TO'C:\DATA\db1.mdf',--還原后的數(shù)據(jù)文件路徑MOVETestDB1_logTOC:\DATA\db1_1.ldf還原后的日志文件路徑“還原數(shù)據(jù)庫(kù)”選項(xiàng),系統(tǒng)將彈出“還原數(shù)據(jù)庫(kù)”框,如圖6.5所示。定備份”框,如圖6.6所示。圖6.5“還原數(shù)據(jù)庫(kù)” 圖6.6“指定備份” 圖6.7所示。6.7“選項(xiàng)SQLServer2008中提供了完整、簡(jiǎn)單和大容量日志等3種恢復(fù)模式。INSERT執(zhí)行的插入操作、UPDATE執(zhí)行的更新操作以及DELETEbcpBULKINSERT等批量操作插入的每一行另外,在完整恢復(fù)模式下,SQLServerCREATEINDEX操作。當(dāng)從包大容量日志恢復(fù)模式簡(jiǎn)單地記錄了大多數(shù)大容量操作(BULKINSERT、CREATEINDEX、SELECTINTO等),而不是每一條數(shù)據(jù)操作都完整記錄,但是完整地記錄了其他事務(wù)。當(dāng)在該恢復(fù)模式下的數(shù)據(jù)庫(kù)中執(zhí)行了大容量操作時(shí),SQLServer只會(huì)記錄該操作簡(jiǎn)單恢復(fù)模式提供了最簡(jiǎn)單的備份恢復(fù)策略。簡(jiǎn)單恢復(fù)模式簡(jiǎn)略地記錄了大多數(shù)事務(wù),所記錄的信息只是為了確保在系統(tǒng)或還原數(shù)據(jù)備份之后的一致性。由于舊的事務(wù)已經(jīng)提交,已不再需要其日志,所以日志將會(huì)被截?cái)?。由于日志?jīng)常會(huì)被截?cái)啵?0M大小。為經(jīng)常會(huì)發(fā)生日志截?cái)?,所以不能進(jìn)行日志備份,如果試圖進(jìn)行日志備份,系統(tǒng)將拋出異常。注意:簡(jiǎn)單恢復(fù)模式并不適合于生產(chǎn)系統(tǒng),因?yàn)閷?duì)生產(chǎn)系統(tǒng)而言,丟失的更是無(wú)法當(dāng)進(jìn)行之前、發(fā)生硬件故障之后或者更換了系統(tǒng)硬件時(shí)就需要將數(shù)據(jù)庫(kù)進(jìn)行轉(zhuǎn)移,這時(shí)就需要用到數(shù)據(jù)庫(kù)的分離和附加。數(shù)據(jù)庫(kù)是創(chuàng)建一個(gè)備份開(kāi)發(fā)環(huán)境或測(cè)試環(huán)境常用的方法,數(shù)據(jù)庫(kù)也可以通過(guò)分離和附加來(lái)完成。分離數(shù)據(jù)注意:在未分離數(shù)據(jù)庫(kù)也未關(guān)閉數(shù)據(jù)庫(kù)服務(wù)的情況下是無(wú)法數(shù)據(jù)庫(kù)文件的,嘗試SQLServerSQLServer中不會(huì)留下該數(shù)據(jù)庫(kù)的痕跡。說(shuō)明:刪除數(shù)據(jù)庫(kù)和分離數(shù)據(jù)庫(kù)都會(huì)從SQLServer中清除該數(shù)據(jù)庫(kù)的所有痕跡,但是刪除在T-SQL中分離數(shù)據(jù)庫(kù)使用系統(tǒng)過(guò)程sp_detach_db。該過(guò)程的語(yǔ)法如代6.106.10sp_detach_db語(yǔ)sp_detach_dbsp_detach_db[@dbname=]'database_name'[,[@skipchecks=]'skipchecks'][,[@keepfulltextindexfile=]'KeepFulltextIndexFile'STATISTIC。若要跳過(guò)UPDATESTATISTICS,則為true。若要顯式運(yùn)行UPDATESTATISTICSfalse。KeepFulltextIndexFile指定在數(shù)據(jù)庫(kù)分離操作過(guò)程中不會(huì)刪除與所分離的數(shù)據(jù)庫(kù)關(guān)聯(lián)的全文索引文件,默認(rèn)為true。需要先將該數(shù)據(jù)庫(kù)設(shè)置為單用戶模式,然后再分離數(shù)據(jù)庫(kù),其操作執(zhí)行的SQL如代碼6.11所示。6.11分離數(shù)據(jù)USEUSEmaster;ALTERDATABASETestDb1修改數(shù)據(jù)庫(kù)為單用戶模式SETSINGLE_USER;“任務(wù)”選項(xiàng)下的“分離”命令,系統(tǒng)將彈出“分離數(shù)據(jù)庫(kù)”框,如圖6.8所示。圖6.8“分離數(shù)據(jù)庫(kù)”附加數(shù)據(jù)為了附加一個(gè)數(shù)據(jù)庫(kù),可以使用系統(tǒng)過(guò)程sp_attach_db,但是現(xiàn)在已經(jīng)不再推薦使用,而且可能會(huì)在將來(lái)的版本中刪除該過(guò)程,微軟建議使用帶FORATTACH選項(xiàng)的CREATEDATABASE命令。系統(tǒng)過(guò)程sp_attach_db限制了最多只能附加16個(gè)文件,而CREATEDATABASE則3276732767個(gè)文件組。使用CREATEDATABASE命令附加數(shù)據(jù)庫(kù)的語(yǔ)法如代碼6.12所示。6.12CREATEDATABASE附加數(shù)據(jù)庫(kù)語(yǔ)CREATECREATEDATABASEdatabase_nameON<filespec>[,...n]FOR{ATTACH|其中database_name就是附加數(shù)據(jù)庫(kù)后的數(shù)據(jù)庫(kù)名,該名可以與要附加的數(shù)據(jù)庫(kù)文件而ATTACH_REBUILD_LOG則表示在附加數(shù)據(jù)庫(kù)時(shí)重建數(shù)據(jù)庫(kù)的日志。例如前面已經(jīng)將TestDB1TestDB2,那么對(duì)應(yīng)的SQL如代碼6.13所示。6.13附加USE CREATEDATABASEON(FILENAME'D:\DATA\TestDB1.mdf')FORATTACH--附加操作注意:SQLServer2008SQLServer2000SQLServer2000以前的數(shù)據(jù)庫(kù)文件則不能附加。如果一個(gè)可讀寫的數(shù)據(jù)庫(kù)含有當(dāng)前不可用的日志文件,如果該數(shù)據(jù)庫(kù)在附加操作之FORATTACHATTACH_EBUILD_LOG選項(xiàng)來(lái)重建日志文件。技巧如果是需要將生存環(huán)境中的數(shù)據(jù)庫(kù)到測(cè)試環(huán)么只需要數(shù)據(jù)文件,而不需要龐大日志文。然后測(cè)試環(huán)中用ATAH_EUD_LOG重建日志。在SSMS的對(duì)象資源管理器中右擊“數(shù)據(jù)庫(kù)”節(jié)點(diǎn),在彈出的快捷菜單中選擇“附加”選項(xiàng),系統(tǒng)將彈出“附加數(shù)據(jù)庫(kù)”框,如圖6.9所示。圖6.9“附加數(shù)據(jù)庫(kù)”單擊“添加”按鈕,添加要進(jìn)行附加的數(shù)據(jù)庫(kù)主文件(mdf文件),系統(tǒng)將根據(jù)注意:SQLServerSQLServer2008中還原或附加,但是一旦還本的SQLServer中還原或附加。SQLServer2005中添加的新功能。數(shù)據(jù)數(shù)據(jù)庫(kù)快照原前,系統(tǒng)先將原始頁(yè)從源數(shù)據(jù)庫(kù)到快照。此過(guò)程稱為“寫入時(shí)操作”??煺諏⒋鍿QLServer中使用了一種叫做“稀疏文件”的文件來(lái)的原始頁(yè)。最初,稀疏個(gè)快照文件,SQLServer創(chuàng)建了一個(gè)保存在高速緩存中的比特圖,數(shù)據(jù)庫(kù)文件的每一個(gè)頁(yè)面對(duì)于一個(gè)比特位,表示該頁(yè)面是否以及被到快照中。當(dāng)源數(shù)據(jù)庫(kù)發(fā)生改變時(shí),SQLServer會(huì)查看比特圖來(lái)檢查該頁(yè)面是否已經(jīng)被,如果沒(méi)有被,那么馬上將其到快照中,然后再更新源數(shù)據(jù)庫(kù),這種操作叫寫入時(shí)(copy-on-write)操作。當(dāng)然,注意:NTFS格式的盤上創(chuàng)建,因?yàn)樵摳袷绞俏ㄒ恢С窒∈栉募夹g(shù)的文件對(duì)于用戶而言,數(shù)據(jù)庫(kù)快照似乎始終保持不變,因?yàn)閷?duì)數(shù)據(jù)庫(kù)快照的讀操作始終原始數(shù)據(jù)頁(yè),而與頁(yè)駐留的位置無(wú)關(guān)。當(dāng)一個(gè)查詢從快照中數(shù)據(jù),它首先通過(guò)比特圖一個(gè)快照查詢對(duì)數(shù)據(jù)庫(kù)的情況。源數(shù)據(jù)庫(kù)的9個(gè)頁(yè)面被到,有1個(gè)頁(yè)面是通過(guò)快照?qǐng)D6.10包含來(lái)自源數(shù)據(jù)庫(kù)中一個(gè)頁(yè)的數(shù)據(jù)庫(kù)快 圖6.11數(shù)據(jù)庫(kù)快時(shí)使用。當(dāng)SQLServer關(guān)閉時(shí),比特圖會(huì)丟失,然后再在數(shù)據(jù)庫(kù)啟動(dòng)時(shí)進(jìn)行重建。當(dāng)SQLServer被時(shí)它會(huì)判斷每一個(gè)頁(yè)面是否在稀疏文件中,然后將這些信息保存在比特圖中建立數(shù)據(jù)庫(kù)快任何具有創(chuàng)建數(shù)據(jù)庫(kù)權(quán)限的用戶都可以創(chuàng)建數(shù)據(jù)庫(kù)快照。數(shù)據(jù)庫(kù)快照功能只有SQLServer企業(yè)版才可用。ASSNAPSHOTCREATEDATABASE命令。創(chuàng)建數(shù)據(jù)庫(kù)快照的語(yǔ)法如代碼6.14所示。6.14創(chuàng)建數(shù)據(jù)庫(kù)快照語(yǔ)CREATECREATEDATABASEdb_snapshot_nameASSNAPSHOTOFdb_snapshot_name是要?jiǎng)?chuàng)建的快照的名字,name用于指定要備份的源數(shù)據(jù)庫(kù)的數(shù)據(jù)文件的邏輯名稱,file_path用于指定快照稀疏文件的物理路徑,db_name便是要用于創(chuàng)建快照的源數(shù)據(jù)庫(kù)。稀疏文件以64K為單位增長(zhǎng),因此磁盤上稀疏文件的大小總是64KAdventureWorksT-SQL語(yǔ)句如代碼6.15所示。6.15AdventureWorks建立數(shù)據(jù)庫(kù)快USEUSEmasterCREATEDATABASEAdventureWorks_SnapshotASsnapshotOF沒(méi)有數(shù)據(jù)到快照文件中,所以其占用空間卻十分小。如圖6.12所示為AdventureWorks數(shù)據(jù)庫(kù)的快照文件的屬性,其大小為179M,但是占用空間卻只有128K。6.12快照文件的屬管理數(shù)據(jù)庫(kù)快RESTORE命令,從數(shù)據(jù)庫(kù)快照中還原數(shù)據(jù)庫(kù)的語(yǔ)法格式如代碼6.16所示。6.16RESTORE從數(shù)據(jù)庫(kù)快照中還原數(shù)據(jù)庫(kù)RESTORERESTOREDATABASEFROMDATABASE_SNAPSHOT=例如先對(duì) 6.17從快照中恢復(fù)數(shù)據(jù)DELETEFROMdbo.DatabaseLog刪除數(shù)據(jù)SELECTCOUNT(*)--0USEmasterRESTOREDATABASEAdventureWorks--從快照中還原數(shù)據(jù)庫(kù)FROMDATABASE_SNAPSHOTAdventureWorks_Snapshot'SELECTCOUNT(*)--0,因?yàn)閿?shù)據(jù)庫(kù)已經(jīng)被還原回來(lái)了FROMdbo.DatabaseLog注意:當(dāng)同一個(gè)數(shù)據(jù)庫(kù)存在多個(gè)數(shù)據(jù)庫(kù)快照時(shí),是不能還原其中的任何一個(gè)快照的,據(jù)庫(kù)。刪除數(shù)據(jù)庫(kù)快照使用DROPDATABASE命令。 數(shù)據(jù)庫(kù)鏡像概SQLServer2005中添加的一個(gè)新功能,鏡像基于每個(gè)數(shù)據(jù)庫(kù)實(shí)現(xiàn),注意:不能鏡像master、msdb、tempdb或model等系統(tǒng)數(shù)據(jù)庫(kù)鏡像實(shí)際上就是在不同的SQLServer數(shù)據(jù)庫(kù)引擎服務(wù)器實(shí)例上一個(gè)數(shù)提交到鏡像服務(wù)器中,由鏡像服務(wù)器又將事務(wù)記錄日志當(dāng)中。與邏輯級(jí)別執(zhí)行的同,數(shù)據(jù)庫(kù)鏡像在物理日志記錄級(jí)別執(zhí)行。在數(shù)據(jù)庫(kù)鏡像中提交一個(gè)修改命令的過(guò)程如圖6.13所示。6.13數(shù)據(jù)庫(kù)鏡像原進(jìn)行角色切換時(shí),鏡像服務(wù)器將接管主體角色,并使其數(shù)據(jù)庫(kù)的副本以作為新的像數(shù)據(jù)庫(kù)。這些角色可以反復(fù)地來(lái)回切換。SQLServer中存在以下3種角色切換形式。自動(dòng)故障轉(zhuǎn)移。這要求使用高安全性模式并具有鏡像服務(wù)器和服務(wù)器。數(shù)據(jù)庫(kù)必須已同步,并且服務(wù)器必須連接到鏡像服務(wù)器。服務(wù)器通過(guò)心跳線完整的數(shù)據(jù)冗余。數(shù)據(jù)庫(kù)鏡像伙伴在會(huì)在無(wú)法頁(yè)時(shí)向其他伙伴請(qǐng)求新副本,數(shù)據(jù)庫(kù)鏡像模功寫入后,主服務(wù)器才返回客戶端消息,這樣會(huì)延長(zhǎng)事務(wù)滯后時(shí)間。SQLServer2008支持3來(lái)支持自動(dòng)故障轉(zhuǎn)移。只有在鏡像服務(wù)器和服務(wù)器與主體服務(wù)器斷開(kāi)連接之后而保持況下,鏡像數(shù)據(jù)庫(kù)將標(biāo)記為DISCONNECTED,但仍可以作為備用數(shù)據(jù)庫(kù)。使用T-SQL配置數(shù)據(jù)庫(kù)鏡解,這里就去掉服務(wù)器,以最簡(jiǎn)單的2臺(tái)數(shù)據(jù)庫(kù)服務(wù)器:主服務(wù)器和鏡像服務(wù)器的配SP2SQzyIPB服務(wù)器:Windows2003SP2,SQLServer2008,服務(wù)器名ms-zy2,IP技巧:VirtualPC在虛擬機(jī)中安裝SQLServer,然后在虛擬機(jī)中配置。實(shí)際上微軟很多產(chǎn)品的實(shí)驗(yàn)環(huán)境都是在VirtualPC中搭建的。由于服務(wù)器并沒(méi)有加入域,所以這里只能使用的方式,首先在A數(shù)據(jù)庫(kù)上創(chuàng)建,關(guān)于已經(jīng)在第5章的數(shù)據(jù)加密部分進(jìn)行了介紹。此處創(chuàng)建的SQL如代碼6.18所示。6.18A數(shù)據(jù)庫(kù)創(chuàng)USEmaster;CREATEMASTERKEYENCRYPTIONBYPASSWORD'yourpassword創(chuàng)建主密鑰 MIR_A_certWITHSUBJECT='MIR_A forWITHSUBJECT='MIR_A fordatabasemirroring',start_date='01/01/2008',EXPIRY_DATE='10/31/2099'根據(jù)創(chuàng)建的,為A數(shù)據(jù)庫(kù)創(chuàng)建鏡像端點(diǎn),創(chuàng)建端點(diǎn)使用CREATEENDPOINT命令,關(guān)于該命令的語(yǔ)法這里就不做詳細(xì)介紹,讀者可以通過(guò)聯(lián)機(jī)了解詳細(xì)信息,創(chuàng)建鏡像端點(diǎn)的SQL如代碼6.19所示。代碼代碼6.19使 USEmaster;CREATEENDPOINTEndpoint_Mirroring--鏡像端點(diǎn)的名字STATE=STARTEDASTCPLISTENER_IPALL允許所)FORDATABASE_MIRRORINGAUTHENTICATION ,ENCRYPTION=REQUIREDALGORITHM,ROLE=Mirroring便可看到當(dāng)前服務(wù)器已有的鏡像端點(diǎn),如圖6.14所示。6.14查看鏡像端將A服務(wù)器上創(chuàng)建的備份并到B服務(wù)器上,該就是B服務(wù)器與A服務(wù)器通信的有效憑證。備份使用BACKUP 命令,具體SQL如代碼6.20所示。MIR_A_cert備TOFILE=6.20A服務(wù)器上創(chuàng)建使用同樣的方法為B服務(wù)器創(chuàng)建MIR_B_cert并使用該的鏡像端點(diǎn)Endpoint_Mirroring,然后再將B服務(wù)器上的備份并到A服務(wù)器上。具體SQL腳本如代碼6.21所示。代碼代碼6.21為B服務(wù)器創(chuàng) ,ENCRYPTION=REQUIREDALGORITHM,ROLE= TOFILE='C:\MIR_B_cert.cer';FORDATABASE_MIRRORINGAUTHENTICATIONUSEmaster;CREATEMASTERKEYENCRYPTIONBYPASSWORD'yourpassword WITHSUBJECT='MIR_B fordatabasemirroring',start_date='01/01/2008',EXPIRY_DATE='10/31/2099'CREATEENDPOINTEndpoint_MirroringSTATE=STARTEDASTCP,LISTENER_IP=AB服務(wù)器,創(chuàng)建登錄名和用戶的SQL如代碼6.22所示。6.22A服務(wù)器上創(chuàng)建用B服務(wù)器的登錄名和用USEUSEmaster;CREATELOGINMIR_B_loginWITHPASSWORDyourpassword創(chuàng)建登錄名CREATEUSERMIR_B_userFORLOGIN --將B服務(wù)器上創(chuàng)建的在A服務(wù)器還原,同時(shí)將的使用授予剛創(chuàng)建的用SQL如代碼6.23所示。AUTHORIZATIONFROMFILE=6.23A服務(wù)器上還使用GRANT命令將鏡像端點(diǎn)連接的權(quán)限授予登錄名。后A服務(wù)器同B服 GRANTCONNECTONENDPOINT::Endpoint_MirroringTO 使用同樣的方法在B服務(wù)器上創(chuàng)建登錄名、用戶,然后將A服務(wù)器上的還原到B服務(wù)器中并授予登錄名對(duì)鏡像端點(diǎn)的連接權(quán)限,具體操作SQL如代碼6.24代碼代碼6.24在B服務(wù)器上創(chuàng)建登錄名、用戶并還 USEmaster;CREATELOGINMIR_A_loginWITHPASSWORD='yourpassword';CREATEUSERMIR_A_userFORLOGINMIR_A_login MIR_A_cert還原AUTHORIZATIONMIR_A_userFROMFILE=GRANTCONNECTONENDPOINT::Endpoint_MirroringTO--A--ABACKUPDATABASECreditTODISK=--BRESTOREDATABASECreditFROMDISK='C:\Credit.bak'WITHNORECOVERYBAAB服務(wù)器為鏡像伙伴。配置完成后A與B即完成了鏡像功能,配置鏡像伙伴的SQL如代碼6.26所示。注意:必須先配置鏡像服務(wù)器,然后再配置主服務(wù)器。6.26配置鏡像伙--B--BALTERDATABASESETPARTNERTCP://ms-zy:5024';----AALTERDATABASESETPARTNERTCP://ms-zy2:5024A服務(wù)器并提交數(shù)據(jù)更改,在鏡像模式下B服務(wù)器的鏡像數(shù)據(jù)庫(kù)是無(wú)法的,只需在A服務(wù)器上運(yùn)行代碼6.27即可將角色進(jìn)行互換。也就是說(shuō),角色互換后A服務(wù)器將作為鏡像服務(wù)器,而B服務(wù)器作為主服務(wù)器,此時(shí)便可查看到對(duì)A服務(wù)器提交的數(shù)據(jù)更改已經(jīng)通過(guò)數(shù)據(jù)庫(kù)鏡像功能同步到B服務(wù)6.27鏡像角色互USEUSEALTERDATABASESETPARTNERFAILOVER通過(guò)以上步驟,已經(jīng)在兩臺(tái)服務(wù)器上配置完成了數(shù)據(jù)庫(kù)鏡像,通過(guò)手動(dòng)的鏡像角色互換可以將鏡像中的主體服務(wù)器和鏡像服務(wù)器進(jìn)行互換。若要實(shí)現(xiàn)自動(dòng)的鏡像角色互換,那使用SSMS配置數(shù)據(jù)庫(kù)沒(méi)有差別,都是建立、交換、建立登錄名和用戶、建立鏡像端點(diǎn)等操作。在SSMS中配置數(shù)據(jù)庫(kù)鏡像的主要操作如下所述。在主服務(wù)器的對(duì)象資源管理器中,右擊需要進(jìn)行數(shù)據(jù)庫(kù)鏡像配置的數(shù)據(jù)庫(kù),在彈出的快捷菜單中選擇“任務(wù)”選項(xiàng)下的“鏡像”命名,系統(tǒng)打開(kāi)鏡像配置框,如圖6.15所示。說(shuō)明:也可以右擊該數(shù)據(jù)庫(kù),然后在彈出的快捷菜單中選擇“屬性”選項(xiàng),在彈出的數(shù)一步”按鈕,系統(tǒng)詢問(wèn)是否配置中包括服務(wù)器,如圖6.16所示。圖6.15數(shù)據(jù)庫(kù)鏡像配置界 圖6.16包括服務(wù)器選此處不配置使用服務(wù)器,所以選擇“否”單選框,然后單擊“下一步”按鈕,向?qū)нM(jìn)入主體服務(wù)器配置界面,如圖6.17所示。注意:這里也可以通過(guò)向?qū)У姆绞絹?lái)添加端點(diǎn),但是由于向?qū)е兄荒芴砑右话愕亩它c(diǎn),由于面的步驟中已經(jīng)使用T-SQL建立了鏡像端點(diǎn),所以此處系統(tǒng)已經(jīng)列出了端點(diǎn)名稱,單擊“下一步”按鈕,向?qū)нM(jìn)入鏡像服務(wù)器實(shí)例配置界面,如圖6.18圖6.17主體服務(wù)器實(shí)例配 圖6.18鏡像服務(wù)器實(shí)例配改,直接單擊“下一步”按鈕,系統(tǒng)進(jìn)入服務(wù)賬號(hào)設(shè)置界面,如圖6.19所示。由于此處不是使用域賬號(hào)進(jìn)行通信,而是使用和對(duì)應(yīng)的數(shù)據(jù)庫(kù)用戶進(jìn)行鏡配置完成后,系統(tǒng)彈出框詢問(wèn)是否開(kāi)始鏡像,此處選否,回到了數(shù)據(jù)庫(kù)鏡6.20所示。圖6.19服務(wù)賬號(hào)設(shè) 圖6.20數(shù)據(jù)庫(kù)鏡像配單擊“確定”按鈕,完成數(shù)據(jù)庫(kù)鏡像的配置,在主體服務(wù)器的SSMS中可以看到該數(shù)據(jù)庫(kù)旁有“(主體,已同步)6.21所示。說(shuō)明數(shù)據(jù)庫(kù)鏡像配置成功,6.21鏡像中的主體服務(wù)器數(shù)據(jù)日志傳送操作的歷史記錄及狀態(tài)。監(jiān)視服務(wù)器還可以在無(wú)法按計(jì)劃執(zhí)行這些操作時(shí)警報(bào)。日志傳送由以下3項(xiàng)操作組成:注意:日志傳送配置不會(huì)自動(dòng)從主服務(wù)器故障轉(zhuǎn)移到輔助服務(wù)器。如果主數(shù)據(jù)庫(kù)變?yōu)椴蝗罩緜魉偷姆?wù)器角與數(shù)據(jù)庫(kù)鏡像中的定義一樣,日志傳送配置中的主服務(wù)器是作為生產(chǎn)服務(wù)器的通過(guò)SSMS進(jìn)行的所有日志傳送配置管理都是在主數(shù)據(jù)庫(kù)中執(zhí)行的。注意:主數(shù)據(jù)庫(kù)必須使用完整恢復(fù)模式或大容量日志恢復(fù)模式,將數(shù)據(jù)庫(kù)切換為簡(jiǎn)單恢日志傳送配置中的輔助服務(wù)器是用于還原日志在其中保留主數(shù)據(jù)庫(kù)備用副本的服務(wù)監(jiān)視服務(wù)器應(yīng)獨(dú)立于主服務(wù)器和輔助服務(wù)器,否則由于主服務(wù)器或輔助服務(wù)器的宕日志傳送的定時(shí)作日志傳送是以SQLServer作業(yè)的方式定時(shí)執(zhí)行,涉及4SQLServer作況下,備份作業(yè)每2分鐘執(zhí)行一次,但是間隔是可自定義的。SQLServer2008 啟用日志傳送后,將在輔助服務(wù)器實(shí)例上創(chuàng)建SQLServer作業(yè)類別“日志傳送日志傳送將會(huì)有多個(gè)還原作業(yè)。此作業(yè)將的備份文件還原到輔助數(shù)據(jù)庫(kù),同時(shí)將歷史在啟用日志傳送時(shí),輔助服務(wù)器實(shí)例上會(huì)創(chuàng)建SQLServer作業(yè)類別“日志傳送還原作業(yè)的執(zhí)行頻率可以按照作業(yè)的頻率計(jì)劃,也可以延遲還原作業(yè)。使用相同務(wù)器的數(shù)據(jù)庫(kù)。如果在指定的閾值內(nèi)未能成功完成備份和還原操作,警報(bào)作業(yè)將主數(shù)在啟用日志傳送時(shí),監(jiān)視服務(wù)器實(shí)例上會(huì)創(chuàng)建SQLServer作業(yè)類別“日志傳送錯(cuò)誤。如果在指定的閾值內(nèi)未能成功完成本地和還原操作,輔助服務(wù)器實(shí)例上的使用T-SQL配置日志傳必須要?jiǎng)?chuàng)建共享文件夾,用于輔助服務(wù)器。這里假設(shè)有數(shù)據(jù)庫(kù)logTrans1需要進(jìn)行日志傳送,共享文件夾為“C:\data”,在T-SQL中配置日志傳送主要有以下幾步操作。具體操作如代碼6.28所示。6.28備份和還原數(shù)據(jù)backupbackupdatabaselogTrans1--在主數(shù)據(jù)庫(kù)上備份todisk='c:\logt.bak'restoredatabaselogTrans2fromdisk='c:\logt.bak'withmove'logTrans'to'c:\logTrans2.mdf',move'logTrans_log'to'c:\logTrans2.ldf'sp_add_log_ship_primary_database以添加主數(shù)據(jù)庫(kù)。存儲(chǔ)過(guò)程將返回備份作業(yè)IDIDSQL如代碼6.29所示。6.29配置日志傳送主數(shù)據(jù)DECLAREDECLARE@LS_BackupJobIdASuniqueidentifierDECLARE@LS_PrimaryIdASuniqueidentifierEXEC _primary_database@database=,@backup_directory=,@backup_share=,@backup_job_name=,@backup_retention_period=,@monitor_server=,@backup_threshold=,@threshold_alert_enabled=,@backup_job_id=@LS_BackupJobId,@primary_id=@LS_PrimaryId,@overwrite=sp_add_jobschedule以添加使用備份作業(yè)的計(jì)劃。為了能夠境中,一般是用不到這么高的執(zhí)行頻率的。添加計(jì)劃的如代碼6.30所示。6.30添加備份計(jì)DECLAREDECLARE@schedule_id,,@schedule_id=@schedule_idOUTPUTselect@schedule_id報(bào)作業(yè)并按計(jì)劃每2分鐘運(yùn)行一次。添加警報(bào)作業(yè)如代碼6.31所示。6.31添加警報(bào)作USEUSEmasterEXEC在主服務(wù)器上,啟用備份作業(yè)。啟用作業(yè)使用sp_update_job過(guò)程,只需要輸入作業(yè)名并設(shè)置狀態(tài)為1即可。具體SQL如代碼6.32所示。6.32啟用備份作EXECmsdb.dbo.sp_update_jobEXECmsdb.dbo.sp_update_job數(shù)據(jù)庫(kù)的詳細(xì)信息。此過(guò)程返回輔助ID以及和還原作業(yè)ID,具體SQL如代碼6.33代碼代碼6.33設(shè)置 DECLARE@LS_SecondaryCopyJobIduniqueidentifierDECLARE@LS_SecondaryRestoreJobIduniqueidentifierDECLARE@LS_SecondarySecondaryIduniqueidentifierEXEC _secondary_primary--設(shè) @primary_server=,@primary_database=,@copy_job_name=,@restore_job_name=,@file_retention_period=,@copy_job_id=@LS_SecondaryCopyJobId,@restore_job_id=@LS_SecondaryRestoreJobId,@secondary_id=@LS_SecondarySecondaryId在輔助服務(wù)器上,執(zhí)行sp_add_jobschedule以設(shè)置和還原作業(yè)的計(jì)劃。這里作業(yè)的頻率設(shè)置為每2分鐘執(zhí)行一次,具體SQL如代碼6.34和代碼6.35所示。代碼代碼6.34設(shè) DECLARE@schedule_id--設(shè) @schedule_id=@schedule_idOUTPUTselect@schedule_id6.35設(shè)置還原作業(yè)的計(jì)DECLAREDECLARE@schedule_idEXECmsdb.dbo.sp_add_jobschedule設(shè)置還原作業(yè)的計(jì)劃,,@schedule_id=@schedule_idselect在輔助服務(wù)器上,執(zhí)行sp_add_log_ship_secondary_database以添加輔助數(shù)據(jù)庫(kù),具體操作如代碼6.36所示。6.36添加輔助數(shù)據(jù)EXECmaster.dbo.sp_add_log_ship _secondary_databaseEXECmaster.dbo.sp_add_log_ship _secondary_database添加輔助數(shù)據(jù)庫(kù)@secondarydatabase=N'logTrans2',@primary_server=,@primary_database=,@restoredelay=,@restore_mode=,@disconnect_users=,@restorethreshold=,@threshold_alert_enabled=,@history_retention_period=1440新輔助數(shù)據(jù)庫(kù)的必需信息,具體SQL如代碼6.37所示。6.37向主服務(wù)器添加輔助數(shù)據(jù)庫(kù)的必EXECmaster.dbo.sp_add_log_ship EXECmaster.dbo.sp_add_log_ship @primary_database=N'logTrans1',@secondary_database=6.38代碼代碼6.38啟 EXECmsdb.dbo.sp_update_job--啟 --102分鐘,系統(tǒng)將會(huì)把主服務(wù)器中的日志備份到共享文件夾中,輔助服務(wù)器共享文件夾將日志備份到本地硬盤上,然后由還原作業(yè)將到本地的日志還原到數(shù)據(jù)庫(kù),從而完成了日志的傳送。用戶使用SSMS配置日志傳將主服務(wù)器的數(shù)據(jù)庫(kù)logTrans1備份,然后將數(shù)據(jù)庫(kù)在輔助服務(wù)器上還原為數(shù)據(jù)logTrans2。SSMS的對(duì)象資源管理器中,右擊要進(jìn)行日志傳送的數(shù)據(jù)庫(kù)。在彈出話框,如圖6.22所示。圖6.22“數(shù)據(jù)庫(kù)屬性” 圖6.23“事務(wù)日志備份設(shè)置”在“備份文件夾的網(wǎng)絡(luò)路徑”文本框中輸入共享文件夾“\\6\data”,框,如圖6.25所示。圖6.24“作業(yè)計(jì)劃屬性” 圖6.25“輔助數(shù)據(jù)庫(kù)設(shè)置”切換到“文件”選項(xiàng)卡,輸入日志備份要到輔助數(shù)據(jù)庫(kù)的具置,C:\log文件夾為日志存放的文件夾。然后單擊“計(jì)劃”按鈕,設(shè)置每2分鐘執(zhí)行一次操作。設(shè)置完后如圖6.26所示。切換到“還原事務(wù)日志”選項(xiàng)卡,通過(guò)使用輔助
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版境外投資協(xié)議書
- 機(jī)電工程施工總承包資質(zhì)標(biāo)準(zhǔn)二零二五年
- 物業(yè)委托管理協(xié)議
- 2025年日用織物制品項(xiàng)目建議書
- 供電外包勞務(wù)合同樣本
- 青島版小學(xué)二年級(jí)上冊(cè)數(shù)學(xué)教學(xué)計(jì)劃
- 平面的投影-教案
- 企業(yè)門頭制作合同樣本
- 中圖版地理必修二第二章學(xué)教案
- 淘寶客服聘用合同
- 生產(chǎn)設(shè)備定期保養(yǎng)記錄
- 《數(shù)據(jù)排序-冒泡排序法》
- 《旅館建筑設(shè)計(jì)規(guī)范 JGJ62-2014》正式版
- 2022-2023學(xué)年江蘇省南京市高二下學(xué)期期中聯(lián)考數(shù)學(xué)試題【含答案】
- 中醫(yī)診斷學(xué)教材
- 穩(wěn)固結(jié)構(gòu)的探析-說(shuō)課課件
- 加油站安全生產(chǎn)風(fēng)險(xiǎn)點(diǎn)告知卡
- GB/T 31117-2014船用輔鍋爐安全技術(shù)要求
- 2022年4月自考金融法試題及答案含評(píng)分標(biāo)準(zhǔn)
- 學(xué)校膳食管理委員會(huì)組織及工作職責(zé)
- 小麥雜交育種課件
評(píng)論
0/150
提交評(píng)論