做網站,數據庫同步是最重要的了吧,其他需要使用需要使用SQL Server數據庫的CS系統,SQL數據庫的備份也是非常重要的,數據庫備份是維護數據正確,防止數據丟失的重要手段。備份點恢復策略可以讓數據還原到備份點,通過觸發備份的方法,可以提高備份的有效性;采用即時點備份策略,可將數據恢復到任意點,提高數據的安全性;通過性能警報監視事務日志使用情況,及時優化日志文件,可以提高系統性能。
一、備份數據庫步驟
1、第一步:在開始—>程序(P)—>MicrosoftSQLserver2005—>SQLServerManagementStudio(如下圖)
2、第二步:登錄數據庫服務器,在打開企業管理器后,逐一展開,找到并展開“數據庫”這一項,然后會看到需要備份的數據庫“gxbtoc”(如下圖)
3、第三步:選擇要備份的數據庫單擊右鍵(如下圖)
4、第四步:點擊上圖的“備份”,進入下圖(一般情況用默認設置就可以了)(如下圖)
5、第五步:單擊上圖的“添加”,進入“選擇備份目標”對話框(如下圖)
6、第六步:點擊上圖“選擇備份目標”右邊的三點框打開備份文件的路徑,見下圖,在“定位數據庫文件”窗口指定目錄并填寫備份的文件名,然后點確定,返回“備份目錄”窗口。
7、第七步:點擊確實返回“備份目錄”后再點擊“確定”后,即開始備份(如下圖)
8、第八步:打開步驟五中確定的那個盤符就可以看到備份的數據庫(如下圖)
二、還原數據庫步驟
1、第一步:在開始—>程序集(P)—>MicrosoftSQLserver2005—>SQLServerManagementStudio(如下圖)
2、第二步:登錄需要備份的數據庫服務器,打開企業管理器后,逐一展開,看到有數據庫項后,選中數據庫節點單擊右鍵(如下圖)
3、第三步:選擇“還原”后進入“還原數據庫”窗口,目標數據庫默認已經選擇需要還原的數據,接著在“還原的源”中的選擇“源設備(D)”,單擊“源設備((D)”右邊的“…”按鈕.見下圖
4、進入“指定備份對話框”,點擊“添加”,進入指定數據庫文件窗口。
5、第四步:瀏覽并找到需要還原的數據庫備份文件,點擊“確定”
6、第六步:點擊“確定”后回到指“定備份”對話框,此時需要還原的文件已經列出來了,接著點擊“確定”,返回“還原數據庫”。
注:有些備份文件有多個備份集,可根據實際情況選擇備份集還原數據庫。
8、在左邊的功能導航框中選擇“選項”并選擇“在現有數據庫上強制還原(F)”點擊“確定”。
9、系統自動還原數據庫,成功后系統提示還原數據庫成功,點擊確定或OK即可。
三、數據庫數據恢復步驟
1、通過日志恢復SQLSERVER2005數據(也可通過LogExplorer工具查找進行恢復數據)
(A)......通過日志和時間點來恢復數據的前提條件:數據庫的故障恢復改為非簡單模式,去掉自動關閉和自動收縮兩個選項,如果是簡單模式:類似下面的語句操作數據就不會記錄到日志中:select*intotfrom[表名].【采用LogExplorer工具可以在線操作,通過恢復日志(指定時間點恢復)來恢復數據,必須停止數據庫或者再另一個數據庫恢復(前提是必須有一個完全備份和日志備份)】
這時為保證數據的完整要將數據庫的恢復模式改成“完整.
如果沒做個數據庫完整備份,是不能做事務日志備份的
1.1、這時對數據庫事務日志做備份(注意,)
這時新建一個數據庫zp(將以前的數據庫改名),恢復數據庫
這時我們看到,有兩個還原的數據庫備份,因為我對zp數據庫備份了兩次,兩次的備份的數據文件都一樣。這里我們選擇最近時間的備份默認在數據庫的設置如下:是追加到備份集里,所以會有兩個備份,如下圖:
同時,在”選項“里設置”不回滾“事務,
注意:通過事務日志還原數據庫,必須選擇"不回滾"事務
確定后:出現下面情況:
這時發現,數據庫一直是”正在還原“,這時還原數據庫事務日志,
1.2、“常規”里選擇時間,(剛刪除的時間)
1.3、“選項”里將恢復狀態設置為”回滾未提交“事務
確定后,查詢數據庫,發現數據回來了.
2、無日志的數據恢復
2.1.新建一個同名的數據庫
2.2再停掉sqlserver(注意不要分離數據庫)
2.3用原數據庫的數據文件覆蓋掉這個新建的數據庫
2.4再重啟sqlserver
2.5此時打開企業管理器時會出現置疑,先不管,執行下面的語句(注意修改其中的數據庫名)
2.6完成后一般就可以訪問數據庫中的數據了,這時,數據庫本身一般還要問題,解決辦法是,利用
數據庫的腳本創建一個新的數據庫,并將數據導進去就行了.
USEMASTER
SP_CONFIGURE'ALLOWUPDATES',1RECONFIGUREWITHOVERRIDE
UPDATESYSDATABASESSETSTATUS=32768WHERENAME='數據庫名'
sp_dboption'數據庫名','singleuser','true'
DBCCCHECKDB('數據庫名')
updatesysdatabasessetstatus=28wherename='數據庫名'
sp_configure'allowupdates',0reconfigurewithoverride
sp_dboption'數據庫名','singleuser','false'
四、數據庫壓縮
1、執行M_CompressDataBase_T存儲過程對非活動的服務器的所有數據庫進行壓縮.
五、常見異常處理
1、磁盤空間不夠
解決方法:擴充磁盤空間或選擇空間足夠的磁盤
2、如果還原后,遇到SQL問題:錯誤21002:[sql-dmo]用戶“***”已經存在錯誤。
解決方法:1.打開SQLSERVER2005Management→數據庫→展開出問題的數據庫如"mydb"→"用戶"→在右側窗口中選擇出問題的用戶名如:"***"→右擊鼠標→刪除
3、在還原數據庫時遇到"在數據還原時候出現"試圖擴大物理文件時,MODIFYFILE遇到操作系統錯誤112(磁盤空間不足)。未能調整文件xxx_log'的空間分配。RESTOREDATABASE操作異常終止."的問題.
解決方法:運行cmd輸入:convert盤符:/FS:NTFS如:convertC:/FS:NTFS
4、無法將設備'xxx'上的備份應用于數據庫'yyy',restoredatabase操作異常終止.
解決方法:更改還原數據庫名
5、問題5:恢復過程中出現“因為數據庫正在使用,所以未能獲得對數據庫的排它訪問權。”
解決方法:出現這種問題主要是由于數據庫的會話還沒有中斷,可以采用kill會話進程或重啟服務器
6、為備份或還原操作指定的設備太多;只允許指定64個設備。RESTOREHEADERONLY操作異常終止。(MicrosoftSQLServer,Error:3205)
解決方法:如果系統同時安裝了sqlserver2000跟sqlserver2005,在還原時可能會出現上述錯誤,解決方法---于數據庫屬性-選項-兼容級別->sqlsever2000(80),或在安裝時為sqlserver2000跟sqlserver2005一個或兩個都指定實例名.
7、問題3:無法更改數據庫中對象的所有者:
解決方法:使用如下代碼:
execsp_changeobjectowner'原所有者名',[dbo]
執行存儲過程changename
execchangename'原所有者名','新所有者名'
8、問題7:如何將SQLSERVER數據庫備份到網絡上
解決方法:
[@physicalname=]'physical_name'
備份設備的物理名稱。物理名稱必須遵照操作系統文件名稱的規則或者網絡設備的通用命名規則,并且必須包括完整的路徑。physical_name的數據類型為nvarchar(260),沒有默認值,并且不能為NULL。
當創建遠程網絡位置上的備份設備時,請確保在其下啟動SQLServer的名稱對遠程的計算機有適當的寫入能力。
B.添加網絡磁盤備份設備
下面的示例顯示一個遠程磁盤備份設備。在其下啟動SQLServer的名稱必須對該遠程文件擁有權限。
USEmasterEXECsp_addumpdevice'disk','networkdevice','\servernamesharenamepathilename.ext'"
以前曾看到過有人問,怎么樣才能將數據備份到網絡上,一直沒有答案,然后我就試驗了一把.
在服務器上建了一個目錄,然后確保共享并有權限,如果需要建在共享目錄下的目錄下,那還得保證用戶有權限
當然,SQLSERVER系統啟動早于登錄,一般用戶會在登錄中使用本地系統賬戶,我想在登錄到系統之前一直是administrator用戶模擬,因此,我將登錄的賬戶改為了網絡用戶,因為我公司有域,因此我將域用戶設置為本機的系統管理員,以確保該服務能啟動.
接下來更簡單了:
sp_addumpdevice'DISK','NetWork','\serverd$databakxuzh.bak'gobackupdatabasexuzhtonetwork
得到的結果如下:
成功完成網絡備份
六、總結
1、這是一般大型網站數據安全的一個辦法,因為數據庫比較大(可能有幾百G)數據,做一次完整備份時間很長,而且影響數據庫服務器的性能,為保證數據安全,大多采用完整備份+事務日志備份來保證數據安全。例如:一天做一次或者2天做一次完整備份,幾個小時內做一次日志備份。(當然可以用寫一個job來實現)
2、如SQLserver2005里的鏡像就是采用的這種事務日志同步的方法保證數據的同步。
3、如果恢復的日志數據出現”LSN“太早和太晚說明了事務日志間的不連續。這時要注意備份的時間和順序。
七、附錄:
I.數據庫的文件和備份的文件是兩個不同的慨念.
每個數據庫都至少由兩個文件組成:
一個數據文件,默認擴展名的.mdf
一個日志文件,默認擴展名為.ldf
如果是用直接備份這兩個數據文件來實現數據庫備份,則備份的文件就是兩個.
如果通過SQL的backupdatabase來備份,則SQL把這兩個文件打包在一齊,所以只有一個文件.
II.sqlserver提供了三種恢復模式,他們決定了有多少和什么樣的數據可以被備份下來.
1.簡單恢復模式
主要應用于小型數據庫和不經常改變的數據
2.完整恢復模式
可以在最大范圍內防止出現故障時丟失數據,它包括數據庫備份和食物日志備份,并提供全面保護.這個模式使用數據庫和所有日志的備份恢復數據庫
3.大容量日志恢復模式
在完整恢復模式下,所有大批量的數據導入導出操作產生的日志更加的少,他會進行日志的最小化記錄,部分事務不會被記錄下來.
III.數據庫備份可以分為4個備份類型。
1、完全備份:創建備份完成時數據庫內存在的數據的副本。
2、差異備份:只記錄自上次數據庫備份后發生更改的數據。差異數據庫備份比數據庫備份小,而且備份速度快,因此可以更經常地備份,經常備份將減少丟失數據的危險。
3、日志備份:是自上次備份事務日志后對數據庫執行的所有事務的一系列記錄。可以使用事務日志備份將數據庫恢復到特定的即時點(如輸入多余數據前的那一點)或恢復到故障點。
4、文件組備份:可以備份和還原數據庫中的個別文件。可以只還原已損壞的文件,而不用還原數據庫的其余部分,從而加快了恢復速度。
不同的備份類型適用的范圍也不同。全備份,可以只用一步操作完成數據的全部備份,但執行時間比較長。差異備份和日志備份,都不能獨立作為一個備份集來使用,需要進行一次全備份。文件備份必須與事務日志備份一起使用,所以文件備份只適用于完全恢復模型和大容量日志記錄恢復模型。
每一種備份類型都有不足之處,要針對需要選擇備份類型,或者使用幾種備份方式的配合來完成數據庫的備份。
經常使用備份方式組合有以下幾種:
1、全備份+差異備份:以一周為周期,星期日進行全備份,星期一到星期六每天進行差異備份。
2、全備份+日志備份:以一周為周期,星期日進行全備份,星期一到星期六每天進行日志備份。
3、文件組備份+日志備份:備份周期取決于數據庫的大小和能力,每周期分別進行一部分數據文件備份,每天進行日志備份。