Hướng dẫn sử dụng chức năng Backup/restore trong SQL server 2005 - Pdf 17

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

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

 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

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 }
{
{[WITH {NO_LOG|TRUNCATE_ONLY}]}
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 } ]

- DESCRIPTION: Ghi chú cho phần backup.
- STATS: Hiển thị thanh program bar.
.
Dưới đây là vài ví dụ về câu lệnh thực thi backup dữ liệu vào ổ cứng để các bạn tham khảo:
VD 1. Backup database
BACKUP DATABASE Hoadon
TO DICK= ‘G:\ Hoadonbackup.bak’
WITH
DESCRIPTION = ‘Backup database Hoadon vào ổ đĩa G’,
STATS
GO
Sau khi cho thực hiện lệnh backup Databse xong bạn sẽ thấy mấy dòng thông báo cho bạn biết
quá trình backup đã thành công như dưới đây.
VD 2. Backup transaction log
BACKUP LOG Hoadon
TO DISK = ' G:\ Hoadonbackup.TRN'
WITH
DESCRIPTION= ‘Backup log Hoadon vao o dia G’,
STATS
GO
Sau khi cho thực hiện lệnh backup log xong bạn sẽ mấy dòng thông báo cho bạn biết quá trình
backup đã thành công như dưới đây.
Chú :
Câu lệnh backup bắt đầu bằng việc chỉ ra cơ sở dữ liệu được backup. Tuy nhiên không có cách
nào để có thể thực hiện backup tất cả các cơ sở dữ liệu mà chúng chỉ có thể được thực hiện một cách
riêng lẻ. Chúng tôi sẽ giới thiệu cho các bạn một kịch bản đơn giản và một 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ó.

đuôi không được truncate để đảm bảo tính consistent (nhất quán) của database.
Bước 2. Khôi phục từ bản full backup gần với thời điểm có sự cố nhất (bản full backup của ngày thứ
4). Nó sẽ làm 2 chuyện : copy data, log, index từ đĩa backup vào Data Files và sau đó sẽ lần lượt
thực thi các transaction trong transaction log. Lưu ý ta phải dùng option WITH NORECOVERY
trong trường hợp này (tức là option thứ 2 "Leave database nonoperational but able to restore
additional transaction logs" trong Enterprise Manager). Nghĩa là các transaction chưa hoàn tất
(incomplete transaction) sẽ không được roll back. Như vậy database lúc này sẽ ở trong tình trạng
inconsistent và không thể dùng được. Nếu ta chọn WITH RECOVERY (hay "Leave database
operational. No additional transaction logs can be restored " trong Enterprise Manager) thì các
incomplete transaction sẽ được roll back và database ở trạng thái consistent nhưng ta không thể nào
restore các transaction log backup được nữa.
Bước 3. Khôi phục từ bản differential backup gần với thời điểm có sự cố nhất (bản differential backup
lúc 5h PM của ngày thứ 5).
Bước 4. Khôi transaction log tại thời điểm 12h PM, và cuối cùng bản lúc 3h PM ("Cái Ðuôi" mà bạn
vừa thực hiện ở bước 1). Quá trình này gọi là Database Recovery.
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 lại data mà còn bảo đảm cho nó ở trạng thái consistent (ổn định) và sử dụng được
(usable).
Cho nên việc backup Transaction Log File sẽ giúp cho việc recovery data tới bất kỳ thời điểm nào
trong quá khứ. Ðối với Simple Recovery Model ta chỉ có thể recover tới lần backup gần nhất mà thôi.
Như vậy khi restore database ta có thể chọn WITH RECOVERY để roll back các transaction chưa
được commited và database có thể hoạt động 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 các file backup khác.
Bạn cũng có thể chọn một lựa chọn trung lập hơn là WITH STANDBY (tức là lựa chọn thứ 3

tiếp theo.
Nhấn OK tiếp
Tiếp theo, bạn hãy chọn thời điểm và lọai kiểu datafile (Full,Different hoặc Transaction) mà
bạn muốn Restore (khôi phục). Từ một tập tin sao lưu SQL có thể giữ nhiều bản sao lưu bạn có thể
thấy nhiều hơn một điểm khôi phục được liệt kê.
Tại thời điểm này, đủ thông tin đã được nhập vào cho cơ sở dữ liệu được phục hồi. Tuy nhiên,
SQL tập tin sao lưu lưu trữ thông tin về nơi tập tin dữ liệu được sao chép vì vậy nếu có bất kỳ tập tin
vấn đề hệ thống như một thư mục đích không tồn tại hoặc tập tin dữ liệu tên xung đột sẽ xảy ra lỗi.
Những vấn đề này là phổ biến khi khôi phục lại một sao lưu tạo ra trên một cài đặ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 Server sau một bộ quy tắc đơn
giản:
• Nếu “To database” (từ trang Tổng) phù hợp với bản khôi phục lại bản sao lưu cơ sở dữ liệu
(tức là khôi phục lại cơ sở dữ liệu phù hợp), các tập tin tương ứng sẽ được ghi đè như một phần
của việc khôi phục lại.
• Nếu “To database” không phù hợp với sao lưu cơ sở dữ liệu phục hồi (tức là khôi phục lại
một cơ sở dữ liệu khác nhau), thì cơ sở dữ liệu bị ghi đè lên hiện tại sẽ cần phải được kiểm tra
cho quá trình khôi 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 việc khôi phục, nhấn OK. Sau đó bạn sẽ thấy hôp
thoại thông báo quá trình restore thành công 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

Để phục hồi tập tin log, bạn có thể sử dụng thủ tục hệ thống có tên restore log như cú pháp sau .
RESTORE LOG { database_name | @database_name_var }
[ FROM < backup_device > [ , n ] ]
[ WITH
[ DBO_ONLY] [[,] FILE =file number]
[ [ , ] FILE = file_number ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] { NORECOVERY | RECOVERY | STANDBY = undo_file_name} ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] RESTART ]
[ [ , ] STATS [=percentage ] ]
[ [ , ] STOPAT = { date_time | @date_time_var }]
]
< backup_device > ::=
{
{ 'backup_device_name' | @ backup_device_name_var } | { DISK | TAPE | PIPE} =
{ 'temp_backup_device' | @temp_backup_device _var }
}
< file_or_filegroup > ::=
{
FILE = { logical_file_name | @logical_file_name_var }
|
FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var }
}
Diễn giải một số tham số trên:
DBO_ONLY: Khi cơ sở dữ liệu phục hồi thành công, cơ sở dữ liệu sễ thiết lập chế độ dbo_only.
- FILE: Cho phép chọn restore gần nhất trong một file chứa nhiều lần backup.
- MOVE: Cho phép phục hồi cơ sở dữ liệu backup khác với cơ sở dữ liệu đang sử dụng.
- REPLACE: Cho phép phục hồi và ghi đè lên cơ sở dữ liệu đang sử dụng.
Dưới đây chúng tôi xin lấy một ví dụ ngắn gọn về restore bằng câu lệnh.


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status