it-swarm-vi.tech

SQL Server (2005/2008): Sao lưu toàn bộ có thể cắt bớt nhật ký ở chế độ khôi phục hoàn toàn không

Tôi vừa đọc qua rất nhiều tài liệu MSDN và tôi nghĩ rằng tôi hiểu các mô hình phục hồi khác nhau và khái niệm về chuỗi dự phòng. Tôi vẫn còn một câu hỏi:

Có một bản sao lưu cơ sở dữ liệu đầy đủ cắt ngắn nhật ký giao dịch (sử dụng chế độ phục hồi đầy đủ) không?

  • Nếu có: Điều này được đề cập ở đâu trong MSDN? Tất cả những gì tôi có thể tìm thấy là chỉ có BACKUP LOG cắt bớt nhật ký.

  • Nếu không: Tại sao? Vì một bản sao lưu cơ sở dữ liệu đầy đủ bắt đầu một chuỗi sao lưu mới, điểm quan trọng trong việc giữ các giao dịch bị phạt trước đó sao lưu toàn bộ hoạt động trong nhật ký là gì?

41
Heinzi

Không - nó chắc chắn không. Điều chỉ cho phép xóa nhật ký/cắt bớt trong các mô hình khôi phục FULL hoặc BULK_LOGGED là bản sao lưu nhật ký - không có ngoại lệ. Tôi đã tranh luận một lúc trước và đăng một bài đăng blog dài và chi tiết với lời giải thích và một kịch bản mà bạn có thể sử dụng để chứng minh điều đó cho chính mình tại Những quan niệm sai lầm về bản sao lưu nhật ký và nhật ký: làm thế nào để thuyết phục chính mình .

Hãy theo dõi với nhiều câu hỏi hơn. Btw - cũng xem bài viết dài tôi đã viết cho Tạp chí TechNet trên Hiểu về ghi nhật ký và khôi phục trong SQL Server .

Cảm ơn

43
Paul Randal

Một bản sao lưu đầy đủ KHÔNG cắt bớt nhật ký, bạn phải thực hiện thao tác nhật ký sao lưu. Một bản sao lưu đầy đủ KHÔNG thiết lập lại chuỗi nhật ký - điều đó hoàn toàn làm hỏng việc sao chép/vận chuyển nhật ký, v.v.

Bạn sẽ phải xem xét kỹ cách SQL Server thực hiện sao lưu nhưng biết rằng các giao dịch trong chuyến bay/chạy dài không được bao gồm trong bản sao lưu (nếu không thì bản sao lưu có thể không bao giờ hoàn thành) vì vậy không hoàn toàn chính xác khi nói rằng bản sao lưu đầy đủ của một cơ sở dữ liệu trực tuyến được đảm bảo để làm cho bản sao lưu nhật ký tiếp theo bị lỗi thời.

http://msdn.Microsoft.com/en-us/l Library/ms175477.aspx

13
Matt Rogish

Theo hiểu biết của tôi điều duy nhất cắt ngắn nhật ký giao dịch là bản sao lưu nhật ký .

Một bản sao lưu đầy đủ chỉ sao chép đủ nhật ký để nó phù hợp với giao dịch, vì phải mất một thời gian để hoạt động sao lưu hoàn tất & trong thời gian đó, các trang được sao chép có thể đã thay đổi.

Bạn vẫn cần sao lưu nhật ký để phục hồi tại thời điểm.

Tôi không có MSDN để liên kết, nhưng tôi có thể liên kết bạn với blog của Paul Randal , người là nhà phát triển trong nhóm SQL Server, đã viết DBCC CHECKDB và các phần của Sách trực tuyến.

Anh ấy cũng trả lời các câu hỏi trên diễn đàn này, vì vậy đó sẽ là một cơ quan thậm chí còn tốt hơn sau đó thông tin bàn tay thứ 2/3 từ tôi :)

8
Nick Kavadias

Mọi người thường có một quan niệm sai lầm về sao lưu toàn bộ và sao lưu nhật ký. Để sao lưu hoạt động trong mô hình phục hồi sao lưu FULL, phải sử dụng nhật ký t, vì trong quá trình sao lưu, vẫn có thể có các giao dịch diễn ra trong cơ sở dữ liệu (trừ khi bạn thực hiện cái gọi là COLD sao lưu khi bạn tắt cơ sở dữ liệu). Oracle sử dụng khái niệm tương tự khi bạn có cơ sở dữ liệu ở chế độ ARCHIVELOG. Trình tự của một bản sao lưu làm rõ điều này:

  1. Bắt đầu sao lưu - tạm dừng tất cả các hành động trong các tệp thực và ghi vào nhật ký t.
  2. Thực hiện sao lưu - tất cả các giao dịch tiếp tục, nhưng không được ghi vào tệp thực, chúng được ghi vào nhật ký t
  3. Kết thúc sao lưu - tiếp tục viết các giao dịch cơ sở dữ liệu vào các tập tin thực.
  4. Nếu cần, hãy xóa những gì trong nhật ký T vào các tệp thực.

Đó là lý do tại sao các nhật ký t không được cắt/thu hẹp theo mặc định, vì chúng là một phần quan trọng của việc tiếp tục giao dịch trong giai đoạn sao lưu.

5
Peter

Đừng nhầm lẫn việc cắt khúc gỗ với việc thu nhỏ nhật ký.

  • Để TRUNCATE là xóa các giao dịch trong nhật ký trước điểm kiểm tra cuối cùng, (điểm kiểm tra là khi các giao dịch được tuôn ra chính cơ sở dữ liệu). Điều này được thực hiện bằng cách sử dụng lệnh BACKUP.

  • Để SHRINK nhật ký là để giảm kích thước tệp nhật ký thực tế. Điều này được thực hiện bằng cách sử dụng các lệnh DBCC.

1
Lee Matthews

Về cơ bản, bạn không cần phải tự động thu nhỏ nhật ký giao dịch vì nhật ký giao dịch cần không gian để hoạt động và nếu bạn tự động cắt ngắn thì nó sẽ giữ nguyên kích thước.

1
zz