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


41

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 khi sao lưu toàn bộ hoạt động trong nhật ký là gì?

Câu trả lời:


43

Không - nó chắc chắn không. Điều duy nhất 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 đã có lập luận này một thời gian 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 đó với 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 bản thân .

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 về Tìm hiểu về ghi nhật ký và khôi phục trong SQL Server .

Cảm ơn


Cảm ơn bạn rất nhiều vì SIÊU TRẢ LỜI của bạn và bài báo đã trả lời một triệu câu hỏi trong tâm trí của tôi.
M.Ali

13

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


8

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à sao lưu nhật ký .

Một bản sao lưu đầy đủ chỉ sao chép đủ bản ghi để 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 , một 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 :)


5

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 FULLmô hình phục hồi sao lưu, 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 COLDsao lưu được gọi là 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 trong ARCHIVELOGchế độ. Trình tự 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 ghi 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.


1

Đừ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

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

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.