TR NG Đ I H C L C H NGƯỜ Ạ Ọ Ạ Ồ KHOA CÔNG NGH THÔNG TINỆ ỆHO Đ TÀI BÁO CÁOỀ 30% CH C NĂNG BACKUP/ RESTOREỨ TRONG SQL SERVER 2005 Giáo viên h ng d nướ ẫ : NGUY N ĐÌNH LIÊNỄ Sinh viên th c hi nự ệ : Đ NG DUY NH T MASV:409000181Ặ Ậ LÊ QUANG TÚ MASV:409000477 L pớ : 09TH401 Đ ng Nai, ngàyồ 15 tháng 11 năm 2010 L I M Đ UỜ Ở Ầ Theo s ch đ o và h ng d n c a th y ự ỉ ạ ướ ẫ ủ ầ Nguy n Đình Liênễ , giáo viên b môn SQL,ộ nhóm chúng em g m có 2 thành viên: Đ ng Duy Nh t-MASSV 409000181 và Lê Quangồ ặ ậ Tú-MASSV 409000477 xin th c hi n đ tài trình bày ự ệ ề BACKUP/ RESTORE. Qua báo cáo này chúng em mong nh n đ c nh ng l i nh n xét, đánh giá và quanậ ượ ữ ờ ậ tr ng h n h t là ch ra nh ng khuy t đi m thi u sót c n c i thi n đ i v i bài này nóiọ ơ ế ỉ ữ ế ể ế ầ ả ệ ố ớ riêng và trong môn h c SQL cũng nh trong các lĩnh v c khác nói chung đ chúng emọ ư ự ể v ng vàng h n trong ngành h c và công vi c trong t ng lai. ữ ơ ọ ệ ươ Chúng em xin chân thành c m n !ả ơ L I NH N XÉT C A GIÁO VIÊN:Ờ Ậ Ủ GI I THI UỚ Ệ Trong su t chu kỳ s ng c a m t database (c s d li u), vi c x y ra s c làm h h ngố ố ủ ộ ơ ở ữ ệ ệ ả ự ố ư ỏ m t mát d li u là chuy n khó tránh kh i. ấ ữ ệ ệ ỏ Các d ng bi n c hay tai h a có th x y ra nh :ạ ế ố ọ ể ả ư - Ðĩa ch a data file hay Transaction Log File hay system file b m t, b h h ng ứ ị ấ ị ư ỏ - Nh ng th m h a t nhiên nh bão l t, đ ng đ t, h a ho n ữ ả ọ ự ư ụ ộ ấ ỏ ạ - Toàn b server b đánh c p ho c phá h yộ ị ắ ặ ủ - Các thi t b dùng đ backup - restore b đánh c p hay h h ng ế ị ể ị ắ ư ỏ - Nh ng l i do vô ý c a user nh l tay xóa, thao tác sai làm h c s d li uữ ỗ ủ ư ỡ ư ơ ở ữ ệ - Nh ng hành vi mang tính phá ho i c a nhân viên nh c ý đ a vào nh ng thông tin sai l c. ữ ạ ủ ư ố ư ữ ạ - B hack (n u server có k t n i v i internet). ị ế ế ố ớ Vì v y chúng ta ph i luôn có bi n pháp b o v c s d li u m t cách an toàn nh t, bênậ ả ệ ả ệ ơ ở ữ ệ ộ ấ c nh đó chúng ta cũng ph i t h i khi các v n đ trên x y ra thì ph i làm sao đ khôi ph c l i dạ ả ự ỏ ấ ề ả ả ể ụ ạ ữ li u đã h , m t và ph c h i m t cách nhanh nh t đ đ a server tr l i ho t đ ng m t cách bìnhệ ư ấ ụ ồ ộ ấ ể ư ở ạ ạ ộ ộ th ng.ườ Đ tránh và ho c ít nh t là h n ch t i đa ể ặ ấ ạ ế ố m t mát d li u do các s c nêu trên, là m tấ ữ ệ ự ố ộ ng i qu n ườ ả lý h th ng c s d li u b n c n ph i b o qu n c s d li u c a mình m t cáchệ ố ơ ở ữ ệ ạ ầ ả ả ả ơ ở ữ ệ ủ ộ h p ợ lý nh t, gi m t i đa s l n ph i ph c h i d li u, luôn theo dõi, ki m tra th ng xuyên đ phátấ ả ố ố ầ ả ụ ồ ữ ệ ể ườ ể hi n các tr c tr c tr c khi nó x y ra. ệ ụ ặ ướ ả Và đ có th ph c h i d li u khi g p các bi n c trên b nể ể ụ ồ ữ ệ ặ ế ố ạ ph i bi t cách backup (sao l u) và restore (khôi ph c) d li u và s p x p l ch trình backup d li uả ế ư ụ ữ ệ ắ ế ị ữ ệ m t cách ộ hợp lý đ b o qu n c s d li u c a mình m t cách an toàn nh t. Đ i v i m t th m cể ả ả ơ ở ữ ệ ủ ộ ấ ố ớ ộ ư ụ hay nh ng t p tin bình th ng thì vi c sao l u và copy ng c tr l i là vô cùng đ n gi n là ch c nữ ậ ườ ệ ư ượ ở ạ ơ ả ỉ ầ copy vào m t thi t b l u tr khác, đ phòng khi g p s c gây m t mát d li u thì có th copyộ ế ị ư ữ ể ặ ự ố ấ ữ ệ ể ng c tr l i. Còn đ i v i database trong SQL thì vi c backup di n ra có khác h n, khi h th ngượ ở ạ ố ớ ệ ễ ơ ệ ố đang v n hành thì b n không th đ n gi n copy các data file và log file vì chúng b khóa hoàn toàn.ậ ạ ể ơ ả ị B n ph i d a vào c ch backup c a h QTCSDL. Sau đây chúng tôi xin nói s l c v Backạ ả ự ơ ế ủ ệ ơ ượ ề up/Restore trong SQL Server và h ng d n các b n các thao tác trong hai ch c năng này. ướ ẫ ạ ứ a. Backup (sao l u) CSDL trong SQL Server:ư Backup là vi c sao l u d li u t c c d li u SQL Server vào m t thi t b l u tr khác.ệ ư ữ ệ ừ ơ ở ữ ệ ộ ế ị ư ữ Sau đây là các lo i Backup mà chúng tôi mu n chia s v i các b n.ạ ố ẻ ớ ạ 1> Các Lo i Backup và m t s h ng d n chungạ ộ ố ướ ẫ · Full backup: Là backup toàn b d li u t i th i đi m th c hi n. Đây có l là lo i đ c dùngộ ữ ệ ạ ờ ể ự ệ ẽ ạ ượ th ng xuyên nh t.ườ ấ · Differential backup: Là backup các trang d li u m i đ c c p nh t k t l n backup full tr cữ ệ ớ ượ ậ ậ ể ừ ầ ướ đó. · File or File Group Backup: Copy m t data file đ n hay m t file group. ộ ơ ộ · Differential File or File Group Backup: T ng t nh differential database backup nh ng chươ ự ư ư ỉ copy nh ng thay đ i trong data file đ n hay m t file group.ữ ổ ơ ộ · Transaction log backup: Là backup các log record hi n có trong log file, nghĩa là nó sao l u cácệ ư hành đ ngộ (các thao tác x y ra đ i v i database) ch không sao l u d li u. Đ ng th i nó cũng c tả ố ớ ứ ư ữ ệ ồ ờ ắ b (truncate) log file, lo i b các log record v a đ c backup ra kh i log file. Vì th khi th y logỏ ạ ỏ ừ ượ ỏ ế ấ file tăng quá l n, có nhi u kh năng là b n ch a t ng backup transaction log bao gi . ớ ề ả ạ ư ừ ờ đây chúng ta hãy đ c bi t chú 3 lo i backup là Full backup, Differential backup và TransactionỞ ặ ệ ạ log backup. M t nguyên t c chung đ gi m b t l ng d li u m t mát khi có s c là tăng t n su t backup.ộ ắ ể ả ớ ượ ữ ệ ấ ự ố ầ ấ Tuy nhiên v i m t database có dung l ng l n và đ c c p nh t liên t c, thì vi c th c hi n fullớ ộ ượ ớ ượ ậ ậ ụ ệ ự ệ backup v i t n su t cao là không kh thi, vì nó dùng r t nhi u CPU và I/O. Nh có differentialớ ầ ấ ả ấ ề ờ backup và transaction log backup, b n có th t o l p các ph ng án sao l u thích h p, đ m b o dạ ể ạ ậ ươ ư ợ ả ả ữ li u đ c backup th ng xuyên h n mà không chi m nhi u tài nguyên c a h th ng.ệ ượ ườ ơ ế ề ủ ệ ố Chú ý: Trong lúc backup SQL Server cũng copy t t c các ho t đ ng c a database k c ho t đ ngấ ả ạ ộ ủ ể ả ạ ộ x y ra trong quá trình backup cho nên ta có th backup trong khi SQL đang ch y mà không c n ph iả ể ạ ầ ả ng ng l i.ư ạ Recovery Models · Full Recovery Model : Ðây là model cho phép ph c h i d li u v i ít r i ro nh t. N u m tụ ồ ữ ệ ớ ủ ấ ế ộ database trong mode này thì t t c các ho t đ ng không ch insert, update, delete mà k c insertở ấ ả ạ ộ ỉ ể ả b ng ằ Bulk Insert, hay bcp đ u đ c log vào transaction log file. Khi có s c thì ta có th ph c h iề ượ ự ố ể ụ ồ l i d li u ng c tr l i t i m t th i đi m trong quá kh . Khi data file b h n u ta có th backupạ ữ ệ ượ ở ạ ớ ộ ờ ể ứ ị ư ế ể đ c transaction log file thì ta có th ph c h i database đ n th i đi m transaction g n nh t đ cượ ể ụ ồ ế ờ ể ầ ấ ượ commited. · Bulk-Logged Recovery Model : mode này các ho t đ ng mang tính hàng lo t nh Bulk Insert,Ở ạ ộ ạ ư bcp, Create Index, WriteText, UpdateText ch đ c log minimum vào transaction log file đ đ choỉ ượ ủ ể bi t là các ho t đ ng này có di n ra mà không log toàn b chi ti t nh trong Full Recovery Mode.ế ạ ộ ễ ộ ế ư Các ho t đ ng khác nh Insert, Update, Delete v n đ c log đ y đ đ dùng cho vi c ph c h i sauạ ộ ư ẫ ượ ầ ủ ể ệ ụ ồ này. · Simple Recovery Model : mode này thì Transaction Log File đ c truncate th ng xuyên vàỞ ượ ườ không c n backup. V i mode này b n ch có th ph c h i t i th i đi m backup g n nh t mà khôngầ ớ ạ ỉ ể ụ ồ ớ ờ ể ầ ấ th ph c h i t i m t th i đi m trong quá kh . ể ụ ồ ớ ộ ờ ể ứ Mu n bi t database c a b n đang mode nào b n có th ố ế ủ ạ ở ạ ể Right-click lên m t database nàoộ đó trong SQL Server Enterprise Manager ch n ọ Properties->Options->Recovery Sau đây là m t ví d v l ch backup đ các b n d hi u h n:ộ ụ ề ị ể ạ ễ ể ơ Ví d : ụ Chúng tôi xây d ng m t th i gian bi u cho vi c backup d li u c a chúng tôi nh sauự ộ ờ ể ệ ữ ệ ủ ư · Full backup: M i tu n 2 l n vào bu i chi u th 4 và th 4 sau gi làm vi c (17h PM)ỗ ầ ầ ổ ề ứ ứ ờ ệ · Differential backup: M i tu n 4 l n vào bu i chi u th 2,3,5,6 sau gi làm vi c (5h PM)ỗ ầ ầ ổ ề ứ ờ ệ · Transaction log backup: M i ngày 1 l n vào bu i tr a (12 AM)ỗ ầ ổ ư L u ý là differential backup luôn sao l u các trang đã thay đ i k t l n full backup tr c,ư ư ổ ể ừ ầ ướ ch không ph i t l n differential backup tr c đó. Ví d b n different backup lúc 5h PM ngày thứ ả ừ ầ ướ ụ ả ứ 5 s bao g m các thay đ i k t th i gian full backup ngày c a ngày th 4, còn b n different lúc 5hẽ ồ ổ ể ừ ờ ủ ứ ả PM ngày th 6 thì s bao g m các thay đ i k t th i gian full backup ngày c a ngày th 4 k cứ ẽ ồ ổ ể ừ ờ ủ ứ ể ả nh ng thay đ i đã đ c l u trong l n different backup c a ngày th 5… Transaction log backup thìữ ổ ượ ư ầ ủ ứ ng c l i, ch sao l u các log record k t l n transaction log backup tr c đó.ượ ạ ỉ ư ể ừ ầ ướ Chú ý: L ch backup trên đây ch là m t ví d đ chúng tôi nói rõ h n v tác d ng c a các lo iị ỉ ộ ụ ể ơ ề ụ ủ ạ backup và th i gian backup thôi. Còn s p x p th i gian sao cho h p lý đ không tiêu t n quá nhi uờ ắ ế ờ ợ ể ố ề th i gian mà l i an toàn cho c s d li u là s linh đ ng và tính toán phù h p t phía các b n.ờ ạ ơ ở ữ ệ ự ộ ợ ừ ạ 2> H ng d n các b c th c hi n Backup (Sao l u) m t c s d li u trong SQL Server.ướ ẫ ướ ự ệ ư ộ ơ ở ữ ệ N u b n ch a m s n giao di n SQL Server Management Studio thì hãy kh i đ ng nó lên theo cácế ạ ư ở ẵ ệ ở ộ b c sau:ướ Vào StartV Programs Microsoft SQL Server 2005 và ch n SQL Server Management Studio.ọ Sau khi ch n các đ i t ng phù h p t i các m c Server type, Server name và Authenticationọ ố ượ ợ ạ ụ Connect. Trong giao di n SQL Server Management Studio b n ch n m t database mà b n c n backup.ệ ạ ọ ộ ạ ầ Ví d tôi ch n database ụ ọ “Hoadon” nh d i đây.ư ướ Trên c a s Backup c s d li u, b n có th đi u ch nh l i c u hình thông tin v sao l uử ổ ơ ở ữ ệ ạ ể ề ỉ ạ ấ ề ư theo ý b n. N u b n không quen thu c c u hình này, b n có th đ giá tr m c đ nh. ạ ế ạ ộ ấ ạ ể ể ị ặ ị Đây là m t s mô t ng n đ cho b n d hi u v ý nghĩa c a các m c ch n và t đó b nộ ố ả ắ ể ạ ễ ể ề ủ ụ ọ ừ ạ có th đi u ch nh theo ý c a mình.ể ề ỉ ủ - Database: M t c s d li u mà b n mu n sao l u.ộ ơ ở ữ ệ ạ ố ư - Backup type: B n có th ch n 1 trong 3 l a ch n: ạ ể ọ ự ọ Full ho c ặ Differential ho cặ Transaction log nh chúng tôi đã gi i thi u v tác d ng c a m i ki u ph n trên ư ớ ệ ề ụ ủ ỗ ể ở ầ (Chú ý: Đây là ph n r tầ ấ quan tr ng, các b n nên đ c bi t chú ý khi ch n kiọ ạ ặ ệ ọ eåu Back up). - Name: Tên c a các sao l u này, b n có th đ t tên b t c đi u gì nh b n mu n.ủ ư ạ ể ặ ấ ứ ề ư ạ ố - Backup component: Trong m c này b n có th ch n m t trong hai l a ch n sau.ụ ạ ể ọ ộ ự ọ Database: Backup t t c các file hay nhóm file đã đ c t o c a database này. Chúng tôiấ ả ượ ạ ủ khuyên b n nên ch n m c này đ tránh vi c sao chép d li u không đ y đ .ạ ọ ụ ể ệ ữ ệ ầ ủ Files and Filegroups: N u c s d li u c a b n r t l n và khi t o c s d li u b nế ơ ở ữ ệ ủ ạ ấ ớ ạ ơ ở ữ ệ ạ đã phân b c s d li u c a mình thành các nhóm file l u tr nh ng ổ ơ ở ữ ệ ủ ư ữ ở ữ oå đĩa/v trí khácị nhau trong h đi u hành và nay b n ch mu n ch n m t hay m t s file c n backup chệ ề ạ ỉ ố ọ ộ ộ ố ầ ứ không backup t t c các file thì b n ch n m c này và ch đ nh file c n backup (ví d nhấ ả ạ ọ ụ ỉ ị ầ ụ ư hình d i).ướ Trong h p th ai này b n cũng có th ch n ch c năng backup t t c các file.ộ ọ ạ ể ọ ứ ấ ả - Backup set will expire” Có th đ c s d ng khi backup vào băng ho c t o các nhóm backupể ượ ử ụ ặ ạ “Media Sets”. Trong ví d này, chúng tôi s backup vào m t đĩa c ng vì v y m c đ nh s làụ ẽ ộ ổ ứ ậ ặ ị ẽ “sau 0” ngày. - Destination: Đi m đ n các t p tin đó s đ c sao l u vào. B n có th đ nh m c đ nh.ể ế ậ ẽ ượ ư ạ ể ể ư ặ ị M c đ nh s sao l u vào "C: \ Program Files \ Microsoft SQL Server \ MSSQL.1 \ MSSQL \ặ ị ẽ ư Backup". N u b n ch n l i v trí l u m i, thì ch n ế ạ ọ ạ ị ư ớ ọ Add sau đó s xu t hi n h p th ai m iẽ ấ ệ ộ ọ ớ nh hình 5. T i File name b n có th t gõ đ ng d n t i v trí c s d li u c n sao l uư ạ ạ ể ự ườ ẫ ớ ị ơ ở ữ ệ ầ ư ho c nh n vào d u ba ch m “ặ ấ ấ ấ …” đ ch đ nh v trí cho nó (Trong bài này tôi ch nể ỉ ị ị ọ G:\SQL\Backup\Hoadon.bak v trí l u là trong th m c Backup là th m c con c a thị ư ở ư ụ ư ụ ủ ư m c SQL trong đĩa G v i tên file là Hoadon.bak).ụ ổ ớ N u b n nh n vào d u ba ch m “ế ạ ấ ấ ấ …” đ ch đ nh v trí l u thì s th y xu t hi n h p th aiể ỉ ị ị ư ẽ ấ ấ ệ ộ ọ nh hình 6 d i đây. T i đây b n ch n v trí l u sau đó gõ ư ướ ạ ạ ọ ị ư tên file.bak (ví d : ụ Hoadon.bak) vào m c File name.ụ Đ ki m tra các l a ch n, b n hãy ch n “ể ể ự ọ ạ ọ Options” t menu phía trên bên ph i (hình 7)ừ ả T p các tùy ch n đ u tiên đ c dán nhãn “ậ ọ ầ ượ Overwrite Media” T p này đ c s d ng đi n hình khi backup vào băng. Còn khi backup vào đĩa c ng, n u b n sậ ượ ử ụ ể ổ ứ ế ạ ử d ng tên duy nh t cho backup c a b n trên màn hình tr c thì các tùy ch n này có th đ c b qua.ụ ấ ủ ạ ướ ọ ể ượ ỏ N u tên backup không duy nh t, hãy ch n nút “ế ấ ọ Overwrite All existing backup sets”. Thao tác này s t o m t file ch có backup g n nh t trong đó. Khi mu n khôi ph c t file này, b n s đ c nh cẽ ạ ộ ỉ ầ ấ ố ụ ừ ạ ẽ ượ ắ nh ch n thi t l p backup nào c trú đ khôi ph c. ở ọ ế ậ ư ể ụ Trong ph n ầ Reliability, ch n “ọ Verify backup when finished” đ b o đ m backup c a b n h p l . ể ả ả ủ ạ ợ ệ Ph n ầ Transaction Log s đ c hi n th màu xám vì Full Backup s t đ ng b b t file b n ghi.ẽ ượ ể ị ẽ ự ộ ỏ ớ ả Kích nút OK đ b t đ u quá trình backup.ể ắ ầ Khi backup hoàn t t, m t thông báo s xu t hi n và nói r ng quá trình đã hoàn t t. Nh v yấ ộ ẽ ấ ệ ằ ấ ư ậ là công vi c Backup c a b n đã thành công.ệ ủ ạ T o file Backup cũng có th th c hi n b ng cách vi t câu l nh.ạ ể ự ệ ằ ế ệ Đ th c thi m t backup b ng TSQL, b n hãy m m t Query Window m i (Đ m Query Window,ể ự ộ ằ ạ ở ộ ớ ể ở t Management Studio, b n kích nút New Query góc trên bên ph i). ừ ạ ở ả Đ backup d li u b n có th s d ng th t c h th ng nh sau có tên backupể ữ ệ ạ ể ử ụ ủ ụ ệ ố ư database nh cú pháp sau:ư BACKUP DATABASE { database_name | @database_name_var } TO < backup_device > [ , n ] [ WITH [ BLOCKSIZE = { blocksize | @blocksize_variable } ] [ [ , ] DESCRIPTION = { 'text'| @text_variable } ] [ [ , ] DIFFERENTIAL ] [ [ , ] EXPIREDATE = { date | @date_var } | RETAINDAYS = { days | @days_var } ] [ [ , ] FORMAT | NOFORMAT ] [ [ , ] { INIT | NOINIT } ] [ [ , ] MEDIADESCRIPTION = { 'text'| @text_variable } ] [ [ , ] MEDIANAME = { media_name | @media_name_variable } ] [ [ , ] NAME = { backup_set_name | @backup_set_name_var } ] [ [ , ] { NOSKIP | SKIP } ] [ [ , ] { NOUNLOAD | UNLOAD } ] [ [ , ] RESTART ] [ [ , ] STATS [ =percentage ] ] ] Đ backup d li u vào m t t p tin ch đ nh, b n có th s d ng th t c h th ng cóể ữ ệ ộ ậ ỉ ị ạ ể ử ụ ủ ụ ệ ố tên backup database nh cú pháp sau:ư BACKUP DATABASE { database_name | @database_name_var } < file_or_filegroup > [ , n ] TO < backup_device > [ , n ] [ WITH [ BLOCKSIZE = { blocksize | @blocksize_variable } ] [ [ , ] DESCRIPTION = { 'text'| @text_variable } ] [ [ , ] EXPIREDATE = { date | @date_var } | RETAINDAYS = { days | @days_var } ] [ [ , ] FORMAT | NOFORMAT ] [ [ , ] { INIT | NOINIT } ] [ [ , ] MEDIADESCRIPTION = { 'text'| @text_variable } ] [ [ , ] MEDIANAME = { media_name | @media_name_variable } ] [ [ , ] NAME = { backup_set_name | @backup_set_name_var } ] [ [ , ] { NOSKIP | SKIP } ] [ [ , ] { NOUNLOAD | UNLOAD } ] [ [ , ] RESTART ] [ [ , ] STATS [ =percentage ] ] Đ backup m t t p tin log, b n có th s d ng th t c h th ng có tên backup log nhể ộ ậ ạ ể ử ụ ủ ụ ệ ố ư cú pháp sau: BACKUP LOG { database_name | @database_name_var } {