Mô hình phục hồi SIMPLE hoặc FULL cho cơ sở dữ liệu?


38

Khi nào tôi nên sử dụng mô hình khôi phục đầy đủ và khi nào tôi nên sử dụng mô hình khôi phục đơn giản cho cơ sở dữ liệu?

Tôi luôn sử dụng mô hình khôi phục đầy đủ vì nó là mặc định, nhưng hôm nay tôi gặp phải lỗi này:

Nhà cung cấp Microsoft OLE DB cho SQL Server (0x80040E14) Nhật ký giao dịch cho cơ sở dữ liệu 'TÊN TÊN ĐƯỜNG' đã đầy. Để tìm hiểu lý do tại sao không gian trong nhật ký không thể được sử dụng lại, hãy xem cột log numuse_wait_desc trong sys.database

Cơ sở dữ liệu cụ thể thực sự là một trong những cơ sở dữ liệu nhỏ nhất và không hoạt động nhất trên máy chủ của tôi, vì vậy tôi không biết làm thế nào để nhật ký có thể đầy trên cơ sở dữ liệu này chứ không phải các cơ sở dữ liệu khác.

Để thu nhỏ nhật ký và làm cho cơ sở dữ liệu có thể truy cập lại được, tôi đã thay đổi mô hình khôi phục từ FULL thành SIMPLE và thu nhỏ nhật ký tệp logic, bằng lệnh sau

alter database myDbName SET recovery simple
go
dbcc shrinkfile('LOG FILE LOGICAL NAME', 100)
go

Nó giúp, nhưng bây giờ tôi cần phải hiểu tại sao nó giúp, CÁCH tình trạng này bắt đầu và LÀM THẾ NÀO để ngăn chặn điều này trong tương lai?

CHỈNH SỬA:

Mỗi đêm vào lúc 1 giờ, chúng tôi đang thực hiện sao lưu theo kịch bản của mọi cơ sở dữ liệu trên máy chủ. Điều này đang được thực hiện bởi một kịch bản 31 dòng trong đó phần quan trọng nhất là

set @Filename = 'D:\backup\' + convert(varchar, getDate(), 112) + ' - ' + @DBName + '.bak'
set @Description = 'Full backup of database ' + @Filename
BACKUP DATABASE @DBName TO DISK = @Filename WITH INIT , NOUNLOAD , NAME = @Description, NOSKIP , STATS = 10, NOFORMAT

Là mô hình phục hồi mới và databaseshrink sẽ là một xung đột với kịch bản này?

Chúng tôi không thực hiện bất kỳ loại sao lưu cơ sở dữ liệu nào khác, và do đó không phải là nhật ký giao dịch, phải không?


Một điều đáng chú ý bây giờ là ngay bây giờ đây không phải là một lựa chọn trong Azure SQL - nó luôn sử dụng phục hồi FULL. azure.microsoft.com/en-us/blog/ từ
jocull 16/03/18

Câu trả lời:


60

Khi nào tôi nên sử dụng mô hình khôi phục đầy đủ và khi nào tôi nên sử dụng mô hình khôi phục đơn giản cho cơ sở dữ liệu?

Bạn nên sử dụng mô hình khôi phục đầy đủ khi bạn yêu cầu khôi phục tại thời điểm cơ sở dữ liệu của bạn. Bạn nên sử dụng mô hình khôi phục đơn giản khi bạn không cần khôi phục tại thời điểm cơ sở dữ liệu của mình và khi sao lưu toàn bộ hoặc sao lưu cuối cùng là đủ làm điểm khôi phục. (Lưu ý: có một mô hình khôi phục khác, đã đăng nhập hàng loạt. Để biết thêm thông tin về mô hình khôi phục được đăng nhập hàng loạt, hãy xem tham khảo này )

Nhà cung cấp Microsoft OLE DB cho SQL Server (0x80040E14) Nhật ký giao dịch cho cơ sở dữ liệu 'TÊN TÊN ĐƯỜNG' đã đầy. Để tìm hiểu lý do tại sao không gian trong nhật ký không thể được sử dụng lại, hãy xem cột log numuse_wait_desc trong sys.database

Lý do bạn gặp lỗi đó (rất có thể) là vì bạn chưa sao lưu nhật ký giao dịch của mình. Khi không được sao lưu, nó sẽ tiếp tục phát triển vật lý tệp nhật ký giao dịch (với điều kiện tự động bật được bật và tối đa hóa cho phép) vì nó không thể sử dụng lại bất kỳ "phần" nào của nhật ký giao dịch (tệp nhật ký ảo). Nó chỉ có thể đánh dấu các VLF đó để sử dụng lại và cho phép bản chất "bao bọc" của nhật ký giao dịch khi bạn thực hiện sao lưu nhật ký giao dịch (và một vài yêu cầu khác, như không có giao dịch hoạt động, một số khía cạnh sao chép, v.v.).

Để thu nhỏ nhật ký và làm cho cơ sở dữ liệu có thể truy cập lại được, tôi đã thay đổi mô hình khôi phục từ FULL thành SIMPLE và thu nhỏ nhật ký tệp logic, bằng lệnh sau

......

Nó đã giúp, nhưng bây giờ tôi cần hiểu TẠI SAO nó đã giúp, làm thế nào tình huống này bắt đầu và LÀM THẾ NÀO để ngăn chặn điều này trong tương lai?

Điều này giúp bạn vì bằng cách đặt cơ sở dữ liệu của bạn thành mô hình khôi phục đơn giản mà bạn đã nói với SQL Server rằng bạn không còn quan tâm đến việc khôi phục tại thời điểm và yêu cầu đảm bảo rằng các tệp nhật ký ảo không còn cần được bảo tồn và được đánh dấu là hoạt động, bây giờ một quy trình điểm kiểm tra đánh dấu các VLF này là không hoạt động.

Trích / trích dẫn lấy từ tài liệu tham khảo MSDN này :

Trong mô hình khôi phục đơn giản, trừ khi một số yếu tố đang trì hoãn cắt ngắn nhật ký, một điểm kiểm tra tự động cắt ngắn phần không sử dụng của nhật ký giao dịch. Ngược lại, trong các mô hình khôi phục được ghi nhật ký đầy đủ và hàng loạt, một khi chuỗi sao lưu nhật ký đã được thiết lập, các điểm kiểm tra tự động không gây ra sự cắt bớt nhật ký.

Sau đó, bạn đã thu nhỏ tệp cơ sở dữ liệu vật lý và vì có không gian trống trong nhật ký giao dịch của bạn, giờ đây nó có thể thu nhỏ vật lý tệp NTFS.

Đọc đáng để dành một chút thời gian trên:

  1. Mô hình phục hồi
  2. Quản lý Nhật ký giao dịch (Gail Shaw)
  3. Các yếu tố có thể trì hoãn việc cắt khúc gỗ

EDIT sau khi chỉnh sửa của bạn :

Là mô hình phục hồi mới và databaseshrink sẽ là một xung đột với kịch bản này?

BACKUP DATABASELệnh đó sẽ làm việc với một trong hai mô hình phục hồi. Đối với cơ sở dữ liệu thường xuyên thu nhỏ ... ĐỪNG LÀM NÓ !!!! Nghiêm túc, kích thước cơ sở dữ liệu của bạn phù hợp và nếu bạn sử dụng mô hình khôi phục đầy đủ thì hãy đảm bảo rằng bạn đang thực hiện các tệp nhật ký giao dịch thường xuyên và thường xuyên, không chỉ để giữ kích thước nhật ký giao dịch mà còn đáp ứng các đối tượng điểm khôi phục.

Chúng tôi không thực hiện bất kỳ loại sao lưu cơ sở dữ liệu nào khác, và do đó không phải là nhật ký giao dịch, phải không?

Nếu cơ sở dữ liệu của bạn đang sử dụng mô hình khôi phục đầy đủ, thì có, bạn nên thực hiện sao lưu nhật ký giao dịch. Nếu cơ sở dữ liệu của bạn đang trong quá trình khôi phục đơn giản, thì về mặt vật lý, bạn không thể thực hiện sao lưu nhật ký giao dịch.

Đối với mô hình khôi phục nào sẽ sử dụng (đơn giản so với đầy đủ), chúng tôi không thể đưa ra quyết định đó cho bạn. Chỉ có bạn, nhóm kinh doanh và SLA của bạn có thể.


Bạn cũng có thể muốn thêm rằng nếu bạn đang sử dụng phản chiếu cơ sở dữ liệu, bạn cần sử dụng Mô hình khôi phục hoàn toàn vì nó sử dụng tệp nhật ký để giữ cho bản sao được cập nhật.
Holger

Đó là một câu trả lời tuyệt vời . Phần tôi không hiểu là cũng gặp các đối tượng điểm khôi phục. Bạn có phiền khi làm rõ cụm từ đó? Trước tiên tôi nghĩ rằng bạn có ý định viết các mục tiêu của Google, nhưng tôi không chắc chắn về giả định đó.
Anthony G - công lý cho Monica
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.