Các kiểu backup trong windows server 2008 theo chuẩn gì

Trong bài này, chúng tôi sẽ giới thiệu cho các bạn việc backup và khôi phục cơ sở dữ liệu SQL Server. Ngoài việc giới thiệu các tùy chọn backup chuẩn như Full Backups và Differential Backups, các tính năng mới của SQL Server 2008 như Backup Compression cũng sẽ được giới thiệu trong loạt bài này. Backup từ SQL Server Management Studio cũng như từ tiện ích dòng lệnh. Bên cạnh đó còn có việc backup cơ sở dữ liệu hệ thống cho người dùng đã tạo các cơ sở dữ liệu. Xem xét đến Scheduled Backups, kiểm tra độ bảo mật và các vấn đề đăng nhập có liên quan đến việc chuyển cơ sở dữ liệu từ máy chủ test sang máy sản xuất.

Full Backup

Để bắt đầu, chúng tôi bắt đầu bằng giới thiệu về Full Backups, Full Backups có thể được hiểu là một cách đơn giản nhất để cung cấp một giải pháp backup hoàn tất. Full Backup sẽ tạo một file chứa toàn bộ cơ sở dữ liệu, gồm có Transaction Logs. (Trong phần tiếp theo chúng tôi sẽ giới thiệu về Transaction Logs và các mô hình khôi phục Recovery Models). Khi xem một cơ sở dữ liệu từ bên trong SQL Server Management Studio Object Explorer, bạn sẽ bắt gặp một số đối tượng khác nhau như Tables, Views, Stored Procedures và Security.

Các kiểu backup trong windows server 2008 theo chuẩn gì

Tất cả các đối tượng này đều được gộp bên trong một file backup đầy đủ của SQL Server. Để tạo một backup, bạn hãy kích vào cơ sở dữ liệu, chọn Tasks sau đó kích Backup. Thao tác này sẽ làm xuất hiện cửa sổ “Back Up Database” với các thiết lập General. Source sẽ được điền bằng cơ sở dữ liệu mà bạn chọn. Bảo đảm rằng tùy chọn “Full” phải được lựa chọn cho kiểu backup này.

Các kiểu backup trong windows server 2008 theo chuẩn gì

Các tùy chọn khác như Differential và Transaction Log cũng sẽ được giới thiệu đến trong phần sau. Trong phần Backup Component, bạn hãy chọn Database.

Các kiểu backup trong windows server 2008 theo chuẩn gì

Một nút tùy chọn khác là “Files and Filegroups” cũng được sử dụng khi cơ sở dữ liệu đã được tạo để mở rộng thành nhiều file trên hệ điều hành. Vấn đề này đôi khi được thực hiện trên các cơ sở dữ liệu rất lớn nhằm tăng vấn đề hiệu xuất. Nếu bạn nằm trong trường hợp này, hãy chọn cơ sở dữ liệu có bất kỳ và tất cả Filegroup.

Tiếp đến, đặt tên cho backup và phần mô tả cho nó.

Phần tiếp theo “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.

Tùy chọn cuối cùng trên màn hình này định vị địa điểm cho backup. Mặc định SQL Server sẽ đặt tất cả các backup vào thư mục MSSQL\Backup. Các backup được kết thúc bằng một mở rộng .BAK. Dù điều này là không cần thiết nhưng bạn cần lưu ý rằng có nhiều file đích có thể được chỉ định như hình bên dưới.

Các kiểu backup trong windows server 2008 theo chuẩn gì

Điều này có thể cho phép các backup SQL trải rộng trên các đĩa cứng khác. Trong ví dụ trên, cả hai file đều được yêu cầu cho Restore. Kỹ thuật này cũng có thể được sử dụng để mở rộng các backup trên nhiều băng khi môi trường của bạn quá nhỏ cho việc nắm giữ toàn bộ cơ sở dữ liệu trên một băng.

Để 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.

Các kiểu backup trong windows server 2008 theo chuẩn gì

Tập các tùy chọn đầu tiên được dán nhãn “Overwrite Media”.

Các kiểu backup trong windows server 2008 theo chuẩn gì

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 tiếp theo, “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.

Phần cuối cùng gồm có các tùy chọn cho việc nén (chỉ có cho SQL Server 2008). Tính năng nén Compression là một tính năng mới trong SQL Server 2008. Nó có thể giảm được đến 20% kích thước vật lý của file gốc. Nếu tính năng này được sử dụng, Restore sẽ tự động nhận ra file nén này. Tuy nhiên có một điểm yếu đối với tính năng này đó là chiếm dụng nhiều tài nguyên máy tính trong suốt quá trình backup.

Kích nút OK trong phần góc dưới bên phải để 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.

Dòng lệnh

Backup cũng có thể được thực hiện từ cửa sổ dòng lệnh hoặc bằng kịch bản. Để 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). Câu lệnh dưới đây sẽ thực thi Full backup vào ổ đĩa cứng.

BACKUP DATABASE AdventureWorksLT2008
TO DISK = ‘C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\test.bak’
WITH FORMAT;

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ó.

Kết luận

Quả thực có nhiều tùy chọn và nhiều kiểu backup khác nhau cho SQL Server, tuy nhiên Full Backup sẽ vẫn là tùy chọn có chứa tất cả các đối tượng có lien quan đến một cơ sở dữ liệu. Trong phần tiếp theo của loạt bài này, chúng tôi sẽ giới thiệu đến việc khôi phục cơ sở dữ liệu cũng như việc kiểm tra Transaction Logs, Recovery Methods và các tùy chọn backup khác cùng cách quản lý chúng.

Nguồn Quản Trị mạng

Copy các file Backup ra nhiều Server khác nhau trong SQL Server

Khi ta Backup nhiều Database trong SQL Server, thường ta chỉ lưu 1 chỗ.

Nhưng để an toàn, ta nên copy các file backup Database ra 1 Server hay 1 trung tâm Backup nào đó nằm ở chỗ khác.

Bây giờ mời bạn theo dõi từng bước sau:

Ví dụ ở đây tôi làm trên Windows Server 2008 R2, với Microsoft SQL Server R2.

Trước tiên ta cần SQL cho phép dùng lệnh XP_CMDSHELL, mặc định SQL Server không cho dùng lệnh này vì lý do Security

1

2

3

4

5

6

7

8

9

10

11

EXEC

sp_configure 'show advanced options', 1

GO

RECONFIGURE

GO

--Cho enable lệnh

EXEC sp_configure 'xp_cmdshell', 1

GO

--Nếu muốn disable thì ta làm như sau

EXEC sp_configure 'xp_cmdshell', 0

GO

Giả sử tôi có 1 thư mục là MyBackup nằm ở Server có IP là 103.246.220.5, tôi đã map nó thành ổ đĩa Z trong Windows

Tôi chạy lệnh sau để SQL có thể nhận ra ổ đĩa Z này, mặc định SQL Server không thể đọc được ổ đĩa mạng

1

2

3

4

EXEC xp_cmdshell 'NET USE Z: \\103.246.220.5\MyBackup MyPassword/USER:DOM\MyUser'

--MyPassword: thay bằng mật khẩu của bạn

--MyUser: thay bằng tên user của bạn

Còn nếu bạn muốn vô hiệu hóa để SQL Server không nhận ra ổ đĩa mạng Z này nữa, thì làm như sau:

1

EXEC XP_CMDSHELL 'net use Z: /delete'

SQL Server đã nhận ra ổ đĩa mạng, bây giờ ta cho chạy câu lệnh copy các file Backup vào ổ đĩa mạng, bạn có thể tạo 1 SQL Server Agent Job cho chạy hàng ngày vào lúc Server ít bận nhất.

Tôi có 1 thư mục ở ổ D của Server hiện tại là là D:\BackupLastestDB, trong đó lại có nhiều thư mục con, mỗi thư mục con chứa các file Backup của 1 Database riêng biệt. Bây giờ tôi cho chép vào ổ đĩa mạng là ổ Z

1

EXEC master.dbo.xp_cmdshell 'xcopy /y /i /s D:\BackupLastestDB Z:\'

Ta xem các tham số:

/y: tức là nếu Copy có file bị trùng, nó sẽ chép đè vào. Nếu không muốn chép đè, ta dùng /-y, nhưng tôi đã gặp sự cố khi dùng option này, nó vẫn copy được, nhưng tên file bị thay đổi

/i: Nếu thư mục gốc chứa nhiều thư mục mà thư mục đích không có, nó sẽ tạo ra cho ta

/s: Copy tất cả các thư mục con của thư mục gốc, trừ khi nó rỗng.

Để xem các tham số khác, bạn vào link sau:

http://technet.microsoft.com/en-us/library/cc771254(v=ws.10).aspx

Có 1 vấn đề là nếu ta có nhiều Database, trong đó có những database với dung lượng lớn thì việc copy rất mất thời gian, ví dụ như Full Backup, do đó ta nên giới hạn chỉ cho Backup ngày gần nhất, tôi làm như sau:

1

2

3

4

5

--Tôi lấy ngày hiện tại và trình bày dưới dạng MM-dd-yyyy

Declare @Date varchar(50)=Convert(varchar(50), GetDate(), 110)

--sau đó khai báo cú pháp sao chép các file Backup dùng tham số /d

Declare @CopyBackup varchar(1000)=’xcopy /y /i /s /d:’+@Date+’ D:\BackupLastestDB Z:\’

1

EXEC master.dbo.xp_cmdshell @CopyBackup

Vậy là xong, giờ độ an toàn của Database đã tăng lên nếu ta có file Backup thời điểm gần nhất đặt ở nhiều nơi khác nhau.

Lưu ý: 1 điều lạ là khi thực hiện các công việc trên, nếu tôi Login SQL Server dùng Windows accout thì sẽ không thao tác với ổ đĩa mạng được, còn Login bằng tài khoản sa thì mọi việc diễn ra suôn sẻ. Tìm hiểu trên các diễn đàn SQL thì cũng nhiều người gặp trường hợp như vậy, coi như đây là 1 kinh nghiệm.

Nguồn sqlvn.com