Làm cách nào tôi có thể sao lưu và khôi phục một FILEGROUP trong Sql Server 2008


7

Trước đây, trên ServerFault, tôi đã hỏi một câu hỏi về việc sao lưu và khôi phục Sql Server 2008 Filegroup.

Hôm nay, khi tôi thử RESTOREmột trong những FILEGROUPbản sao lưu này , tôi đã gặp phải lỗi sau: -

Processed 1895080 pages for database 'XWing', file 'XWing' on file 1.
Processed 4 pages for database 'XWing', file 'XWing_log' on file 1.
The database cannot be recovered because the log was not restored.
The database cannot be recovered because the log was not restored.
The roll forward start point is now at log sequence number (LSN) 221218000000010400001. Additional roll forward past LSN 221218000000010400001 is required to complete the restore sequence.
This RESTORE statement successfully performed some actions, but the database could not be brought online because one or more RESTORE steps are needed. Previous messages indicate reasons why recovery cannot occur at this point.
RESTORE DATABASE ... FILE=<name> successfully processed 1895084 pages in 69.504 seconds (213.014 MB/sec).

Tôi đã sử dụng mã Sql sau đây ...

alter Database [XWing] SET SINGLE_USER With ROLLBACK IMMEDIATE

restore database [XWing] filegroup = 'PRIMARY'
FROM  DISK = N'C:\Temp\XWing Manual Full Primary Filegroup.bak'
with
    MOVE N'XWing' TO N'D:\XWing.mdf',
    MOVE N'XWing_log' TO N'L:\XWing_Log.ldf',
    replace, recovery

Vì vậy, tôi cho rằng DB không được sao lưu chính xác?

Đây là kịch bản tôi sed để sao lưu PRIMARY FILEGROUP

BACKUP DATABASE [XWing] FILEGROUP = N'PRIMARY' 
TO  DISK = N'F:\Sql DB Backups\XWing Manual Full Primary Filegroup.bak' WITH NOFORMAT, INIT,
NAME = N'XWing-Full Filegroup Backup', SKIP, NOREWIND, NOUNLOAD, COMPRESSION,  STATS = 10
GO
declare @backupSetId as int
select @backupSetId = position from msdb..backupset where database_name=N'XWing' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'XWing' )
if @backupSetId is null begin raiserror(N'Verify failed. Backup information for database ''XWing'' not found.', 16, 1) end
RESTORE VERIFYONLY FROM  DISK = N'F:\Sql DB Backups\XWing Manual Full Primary Filegroup.bak' WITH  FILE = @backupSetId,  NOUNLOAD,  NOREWIND
GO

Câu hỏi

  1. Cú pháp Khôi phục có đúng không?
  2. Điều gì về cú pháp sao lưu của tôi?

Chúc mừng!

Câu trả lời:


3

Bạn cần khôi phục nhật ký giao dịch để có cơ sở dữ liệu nhất quán. Hiện tại filegroup mà bạn đã khôi phục ở một thời điểm khác so với phần còn lại của cơ sở dữ liệu. Khi các bản ghi đã được chuyển tiếp và mọi thứ đều nhất quán, bạn có thể mang cơ sở dữ liệu trực tuyến.

Nếu bạn xem dữ liệu trong cơ sở dữ liệu msdb, bạn sẽ có thể xem tệp nhật ký giao dịch nào bạn cần khôi phục để đưa cơ sở dữ liệu trực tuyến.

Không có gì sai với cú pháp sao lưu và phục hồi của bạn.


Xin chào Denny - cảm ơn vì đã trả lời :) Nhưng tôi vẫn không hiểu đỏ mặt :( Vì vậy, lần đầu tiên, cú pháp sao lưu và khôi phục của tôi có vẻ ổn. Đánh dấu. Nhưng .. tôi cũng cần khôi phục nhật ký tx? Tập đoàn của tôi PRIMARY? Tôi không chắc mình cần phải làm gì (cú pháp khôn ngoan) để sao lưu nhật ký và sau đó khôi phục chúng vào db ... ??
Pure.Krom

Nhật ký giao dịch không được lưu trữ trong bất kỳ nhóm tập tin. Cơ sở dữ liệu dưới dạng tệp riêng biệt là nhật ký giao dịch (thường có phần mở rộng tệp ldf). Bạn sao lưu nhật ký bằng cách sử dụng câu lệnh BACKUP LOG để tách các tệp. Từ đó bạn sẽ cần khôi phục nhật ký trên cơ sở dữ liệu để có được mọi thứ đồng bộ.
mrdenny

@AHh .. vì vậy tôi cần thêm hai kịch bản. một để sao lưu FILEGROUP .. và bây giờ một để sao lưu nhật ký. Sau đó khôi phục cả hai. Đó là những gì bạn đang nói, bây giờ? Nếu vậy, bất kỳ gợi ý cho BACKUP LOGkịch bản?
Pure.Krom

Đúng rồi. "BACKUP LOG XWing TO DISK = 'D: \ somePath \ File.trn" Bạn sẽ muốn sao lưu vào một tệp riêng biệt mỗi khi bạn sao lưu nhật ký và bạn sẽ muốn sao lưu nhật ký thường xuyên. Hầu hết mọi người sao lưu nhật ký trong khoảng từ 10 đến 20 phút tùy thuộc vào lượng dữ liệu bạn sẵn sàng để mất.
mrdenny

Vì vậy, nếu tôi có một tập lệnh thực hiện 2 bản sao lưu này, liệu tôi có sao lưu tệp FILEGROUP trước không, sau đó LOG ... nén hai tệp lại với nhau .. tải xuống .. khôi phục FILEGROUP sau đó LOG <--- theo thứ tự đó?
Pure.Krom

2

Như thông báo trong thông báo, bạn phải khôi phục các bản sao lưu nhật ký cho đến thời điểm sao lưu filegroup. Để đưa cơ sở dữ liệu trực tuyến, nó cần phát nhật ký trở lại cùng một thời điểm để cơ sở dữ liệu được nhất quán. Tuy nhiên, việc khôi phục chỉ nhóm tệp chính là một tình huống đặc biệt. Tôi tin rằng để khôi phục filegroup chính, bạn phải thực hiện khôi phục hoàn toàn, không chỉ là filegroup. (Tôi không tích cực về điều đó nhưng tin rằng văn bản dưới đây chỉ ra yêu cầu đó.)

Hiểu cách Khôi phục và Khôi phục Sao lưu Hoạt động trong SQL Server

Làm lại tính nhất quán

Trong pha làm lại, dữ liệu luôn được chuyển tiếp đến một điểm được làm lại phù hợp với trạng thái của cơ sở dữ liệu tại điểm khôi phục. Tất cả các dữ liệu đã được chuyển tiếp đến một điểm mà tại đó hoàn tác có thể xảy ra.

Trạng thái của cơ sở dữ liệu được xác định bởi tệp chính, như sau:

Nếu tệp chính đang được khôi phục, điểm khôi phục sẽ xác định trạng thái của toàn bộ cơ sở dữ liệu. Ví dụ: nếu một cơ sở dữ liệu đang được khôi phục đến một thời điểm ngay trước khi một bảng vô tình bị hủy, toàn bộ cơ sở dữ liệu phải được khôi phục về cùng một thời điểm.

Nếu tệp chính không được khôi phục, trạng thái cơ sở dữ liệu được biết và dữ liệu được khôi phục được chuyển tiếp đến điểm khôi phục phù hợp với cơ sở dữ liệu. SQL Server thi hành điều này.

Tuy nhiên, cơ sở dữ liệu có thể chứa các thay đổi được thực hiện bởi các giao dịch không được cam kết tại điểm khôi phục. Để khôi phục trực tuyến, dữ liệu được khôi phục đến một thời điểm phù hợp với trạng thái hiện tại của phần trực tuyến của cơ sở dữ liệu.


Vậy tại sao họ cung cấp FILEGROUPsao lưu nếu bạn cần khôi phục hoàn toàn dù sao? Khôi phục đầy đủ == sao lưu cơ sở dữ liệu, sau đó khôi phục? Có lẽ tôi đã hiểu nhầm câu trả lời của bạn. Tôi không ngại lấy một FILEGROUPbản sao lưu MỚI và khôi phục, nếu tôi đã làm gì đó sai trong bước sao lưu của mình.
Pure.Krom
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.