Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 22 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
22
Dung lượng
1,4 MB
Nội dung
TRƯỜNG ĐẠI HỌC LẠC HỒNG KHOA CÔNG NGHỆ THÔNG TIN ĐỀ 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. I. 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 Start ProgramsMicrosoft 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 kieå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 } { [...]... phục hoàn thành Sử dụng chức năng này cẩn thận vì bạn có khả năng có thể khôi phục lại cơ sở dữ liệu thông tin sao lưu trên đầu trang của tập tin dữ liệu từ một cơ sở dữ liệu hoàn toàn khác nhau Nói chung, bạn có thể cho biết các cơ sở dữ liệu khác nhau dựa trên các 'Tên gốc File' mà là tên nội bộ SQL Server sử dụng để tham khảo các tập tin tương ứng Sau khi đã lựa chọn các tùy chọn trong các bước của... cần restore Các thông tin này được SQL Servicer chứa trong msdb database và sẽ cho ta biết backup device nào, ai backup vào thời điểm nào và cần restore để có được dữ liệu như thế nào Sau đó mới tiến hành restore 2> Hướng dẫn các bước thực hiện restore (khôi phục) một cơ sở dữ liệu trong SQL Server Ðể thực hiện restore trước hết bạn hãy khởi động chương trình SQL Server lên sau đó nhấn phải chuột vào... nhiệm vụ trong đó có nhóm tất cả các cơ sở dữ liệu Câu lệnh tiếp theo chỉ định rằng chúng ta sẽ backup vào đĩa và đích của file Nếu chúng ta backup vào băng, hãy sử dụng “To TAPE” thay cho “To Disk” Cuối cùng, “With Format” có nghĩa tạo một file mới Không có câu lệnh cuối cùng nếu backup đã tồn tại thì backup mới của bạn sẽ gắn thêm vào nó II Restore (Khôi phục) CSDL trong SQL Server: 1> Hướng dẫn chung... CSDL trong SQL Server: 1> Hướng dẫn chung về cách restore (Khôi phục) một cơ sở dữ liệu đã được backup trong SQL Server Quay lại với ví dụ về lịch trình backup dưới đây để các bạn dễ hiểu hơn về restore (Khôi phục) một cơ sở dữ liệu đã được backup trong SQL Server Theo như lịch trình backup trên, giả sử database bị hỏng vào thời điểm 3h PM ngày thứ 6, bạn cần khôi phục lại database theo trình tự sau:... Chú ý: Sự khác nhau giữa Database Restoration và Database Recovery trong SQL Server khác nhau ở chỗ Database Restoration là restore database từ một file backup nghĩa là chỉ đơn giản tái tạo lại database từ những file backup và thực thi lại những transaction đã được commit nhưng database có thể ở trong trạng thái inconsistent và không sử dụng được Nhưng khi nói đến recover nghĩa là ta không chỉ phục hồi... additional transaction logs" trong Enterprise Manager) Với lựa chọn này bạn sẽ có luôn đặc tính của hai lựa chọn trên : các incomplete transaction sẽ được roll back để đảm bảo database consistent và có thể sử dụng được nhưng chỉ dưới dạng Readonly mà thôi, đồng thời sau đó bạn có thể tiếp tục restore các file backup còn lại (SQL Server sẽ log các transaction được roll back trong undo log file và khi... như dưới đây Khôi phục dữ liệu (Restore Database) sử dụng bằng câu lệnh (TSQL) Cũng tương tự như Backup một cơ sở dữ liệu, chúng ta cũng có thể dùng bằng câu lệnh cho việc Restore Để thực thi restore 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) Phục hồi dữ liệu sử dụng thủ tục sau: RESTORE DATABASE { database_name... đặt SQL Server khác nhau Để xem lại và thay đổi các thiết lập hệ thống tập tin, nhấp vào “Options” ở bên trái trong hộp thoại Restore Database Trên trang tùy chọn, bạn sẽ muốn chắc chắn rằng các 'Restore Khi' điểm cột vị trí thư mục hợp lệ (bạn có thể thay đổi chúng khi cần thiết) Các tập tin của tôi không có để tồn tại, tuy nhiên đường dẫn thư mục phải tồn tại Nếu các tập tin tương ứng có tồn tại, SQL. .. @logical_filegroup_name_var } } Diễn giải một số tham số trên: - BLOCKSIZE: Tham số này tự động khi sử dụng đĩa cứng để lưu trữ tập tin backup dữ liệu , nếu sử dụng backup trên đĩa Tape thì cần cung cấp tham số tape backup - DIFFERENTAL: Differenttal backup chỉ backup những dữ liệu thay đổi so với lần backup trước đó Trong trường hợp này thời gian backup nhỏ và nhanh và không gây ảnh hưởng đến dữ liệu đã backup... bình thường nhưng ta không thể restore thêm backup file nào nữa, thường lựa chọn này được chọn khi restore file backup cuối cùng trong chuỗi backup Nếu chọn WITH NORECOVERY các transaction chưa được commited sẽ không được roll back do đó SQL Server sẽ không cho phép ta sử dụng database nhưng ta có thể tiếp tục restore các file backup kế tiếp, thường option này được chọn khi sau đó ta còn phải restore . 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. I. 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. ProgramsMicrosoft 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. ĐẠI HỌC LẠC HỒNG KHOA CÔNG NGHỆ THÔNG TIN ĐỀ 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Ê