[MSDA]Backup and Restore Database in SQL Server

Sao Lưu và Phục Hồi Cơ Sở Dữ Liệu Trong SQL Server

I.Introduction

Việc sao lưu và phục hồi cơ sở dữ liệu là một trong những công việc khá quan trọng của một quản trị viên CSDL trong một hệ Quản trị CSDL.

Trong bài này mình xin chia sẻ cách sao lưu và phục hồi CSDL trong SQL Server 2005

II.Backup and Restore

1.Database Recovery Models : (Các kiểu phục hồi CSDL)

1.1 Full Recovery Model:

-Đối với kiểu phục hồi này, tất cả cơ sở dữ liệu sẽ được phục hồi.

-Khi thực thi các câu lệnh, các thao tác sẽ được ghi nhận trong Transaction log file (.log).chính vì vậy CSDL Có thể phục hồi  từng thời điểm mong muốn.

-Các thao tác có thể phục hồi đầy đủ (nếu có sự cố).

-Nhược điểm : File Log tăng dung lượng rất nhanh.

Có thể phục hồi Cơ Sở Dữ Liệu ở mọi thời điểm.

1.2 Bulk-Logged Recovery Model:

Kiểu phục hồi này cũng chiếm dung lượng khá lớn, dĩ nhiên là ko bằng Full Logged. Như đã đề cập ở trên, Đối với kiểu Full Logged sẽ phục hồi tất cả trên CSDL ở mọi thời điểm, vì lý đo đó nên dung lượng file log sẽ răng rất nhanh. Để giải quyết vấn đề đó, Bulk Log tối ưu hơn việc sao lưu, và hạn chế đến mực tối thiểu sao lưu vào log file thông tin của :

  • Index creation

  • Index rebuild

  • Bulk copy operations

  • BULK INSERT

  • SELECT INTO

  • BLOB operations

VD : CSDL chúng ta đã backup full với một bảng có 10 row, và sau đó chúng ta cho thêm 2 row thành 12 row. lở như có gì xảy ra với CSDL, Bây giờ với Bulk Log sẽ giúp chúng ta phục hồi từ Full log(gồm 10 row) + 2 row vừa thêm.

1.3 Simple Recovery Model:

-File Log sẽ được khóa cho đến khi tới một checkpoint nào đó.

-Kích thước file log hầu như không tăng.

-Các giao thức có sự cố sẽ không được phục hồi

Cách phục hồi này khá đơn giản và hiệu quả, nhưng chỉ phục hồi ở một giởi hạn nào đó.

2.SQL Server Database Backup:

2.1 Tổng quan

Backup Device:ổ đĩa băng từ hay đường dẫn file lưu backup

Các bước thực hiện khi backup(nguyên văn sách):

1. Logs the BACKUP statement in the transaction log.

2. Issues a checkpoint causing all outstanding dirty buffer pages to be written to the disk.

3. Writes all data pages specified by the FULL, DIFFERENTIAL, FILE, or FILEGROUP backup options to the backup media.

4. Writes all data modifications recorded in the transaction log that occurred during the backup to the backup media.

5. Logs the completion of the backup in the transaction log.

Các kiểu backup:

Full Backup : backup toàn bộ dữ liệu tại một thời điểm

Differential Backup: backup dữ liệu phát sinh sau thời điểm xảy ra Full Backup

File/Filegroup Backup: backup những file và filegroup

Transaction Log Backup: 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.

Partial Backup: sao lưu một phần

Copy Only Backup :Chỉ sao chép các bản sao lưu có thể được thực hiện trên các tập tin cơ sở dữ liệu và các bản ghi giao dịch để tạo ra mộtbản sao lưu mà không ảnh hưởng tới chuỗi của các sao lưucần thiết để khôi phục lại một cơ sở dữ liệu.

2.2 Cú Pháp lệnh :

a.Full Backup:

 

--Full database backup of SmallWorks

BACKUP DATABASE SmallWorks

TO DISK = 'C:\SQLBackups\SmallWorksFull.BAK'

WITH DESCRIPTION = 'SmallWorks FULL Backup';

 

b.Differential Backup

--Differential database backup of SmallWorks

BACKUP DATABASE SmallWorks

TO DISK = 'C:\SQLBackups\SmallWorksDiff.BAK'

WITH DIFFERENTIAL, DESCRIPTION = 'SmallWorks Differential Backup';

c.File/Filegroup Backup

--Backup of the "SWUserData1" User-Defined Filegroup

BACKUP DATABASE SmallWorks

FILEGROUP = 'SWUserData1'

TO DISK = 'C:\SQLBackups\SmallWorksUserData1FG.BAK'

WITH DESCRIPTION = 'SmallWorks SWUserData1 Filegroup Backup';

 

//To back up a file instead of a filegroup, the logical name of the file is specified in the backup command, as the following example illustrates

 

--Differential Filegroup Backup of the "SWUserData1" User-Defined Filegroup

BACKUP DATABASE SmallWorks

FILEGROUP = 'SWUserData1'

TO DISK = 'C:\SQLBackups\SmallWorksUserData1FGDIFF.BAK'

WITH DIFFERENTIAL, DESCRIPTION = 'SmallWorks Filegroup Differential Backup';

d.Partial Backup

BACKUP DATABASE SmallWorks READ_WRITE_FILEGROUPS

TO DISK = 'C:\SQLBackups\SmallWorksPartial.BAK'

WITH DESCRIPTION = 'Partial Backup of all Read/Write filegroups';

e.Transaction Log Backup

--Pure or Bulk Log Backup of SmallWorks

BACKUP LOG SmallWorks

TO DISK = 'C:\SQLBackups\SmallWorksLog.TRN'

WITH DESCRIPTION = 'SmallWorks Log Backup';

 

--Tail Log Backup of SmallWorks

BACKUP LOG SmallWorks

TO DISK = 'C:\SQLBackups\SmallWorksTailLog.TRN'

WITH NO_TRUNCATE, DESCRIPTION = 'SmallWorks Tail Log Backup';

f.Copy Only Backup

BACKUP DATABASE SmallWorks

TO DISK = 'C:\SQLData\SmallWorksCopyOnly.BAK'

WITH COPY_ONLY, DESCRIPTION = 'Copy only backup';

3. Sao Lưu và phục hồi Cơ Sở Dữ Liệu với SQL Server 2005 Management Studio:

B1: Mở SQL Server 2005 Management Studio lên vào tạo mới một CSDL

Right Click vào Database và chọn New Database

image

-Đặt tên cho CSDL là TempDataBase và chọn OK:

image

B2: Right Click vào Table và chọn Add New Table, và tạo một CSDL đơn giản:

image

B3: Nhập liệu :

image

B4: Bây chúng ta tiến hành backup :

-Các bạn chọn Right Click vào tên CSDL –> Task –> Backup

image

Trước tiên chúng ta Backup Full, nên chọn ở Backup Type là Full:

Chọn Add để ghi tên File và chọn nơi lưu file Backup:

image

Chọn OK : vậy là backup full xong

B6: Delete CSDL đi và thử Restore nó lại :

-Delete CSDL

-Right Click và Database chọn Restore Database :

image

-Điền tên CSDL vào To Database, chọn From Devide, kế tiếp chọn vào Button như hình dưới và đưa đường dẫn đến File Backup(.bak) :

image

image

Sau khi chọn OK chúng ta sẽ được kết quả:

image

One thought on “[MSDA]Backup and Restore Database in SQL Server

Leave a reply to trungtayninh2010 Cancel reply