Cách tốt nhất để sao lưu và cắt bớt nhật ký giao dịch theo lịch


9

Tôi không phải là DBA, nhưng mọi thứ vẫn như cũ, tôi phải đội mũ DBA và thiết lập các kế hoạch bảo trì trên máy chủ SQL của tôi.

Vì vậy, trong một thời gian tôi đã có quy trình SSIS qua đêm của mình chạy Tác vụ SQL thực thi để thực hiện sao lưu - về cơ bản là chạy master.dbo.xp_create_subdirđể đảm bảo các thư mục đích tồn tại, sau đó BACKUP DATABASE [DbName] TO DISK = 'G:\Backups\DbName\DbName.bak' WITH INIT.

Bất cứ khi nào nhiệm vụ đó thất bại, phần còn lại của quá trình sẽ hủy bỏ và tôi nhận được thông báo, và đến sáng hôm sau, thông báo ổ đĩa cho nhật ký giao dịch đã được lấp đầy, và vì vậy tôi đã tự cắt bỏ chúng và tiếp tục. .. cho đến khi câu chuyện lặp lại và bản ghi giao dịch đã vượt quá dung lượng đĩa trống.

Kịch bản "cắt ngắn thủ công" trông như thế này:

use Staging;
alter database Staging set recovery simple
alter database Staging set recovery full
dbcc shrinkfile ('Staging_log', 0, truncateonly);
go

Vì vậy, tôi ngày càng mệt mỏi vì điều này và tôi quyết định thử và làm mọi thứ đúng cách , và làm theo các bước ở đây và tạo một kế hoạch bảo trì thực tế :

Kế hoạch bảo trì máy chủ SQL

Điều đó là, tôi chưa bao giờ làm điều này trước đây, vì vậy tôi có một vài câu hỏi:

  • Sẽ sao lưu nhật ký giao dịch như thế này sẽ tự động cắt bớt chúng, hoặc tôi còn cần phải làm gì nữa không?
  • Có thể chạy đồng thời dữ liệu và sao lưu nhật ký giao dịch không? Nếu không, thì một cách thích hợp để làm điều này là gì?
  • Các tệp sao lưu đang được chọn qua đêm bởi một quy trình khác lấy tất cả các tệp trên máy chủ và lưu trữ chúng ở nơi khác - có phải là một ý tưởng tốt để hết hạn sao lưu sau 2 ngày không? Tôi có cần phải làm cho chúng hết hạn không?
  • Nhiệm vụ dọn dẹp tương ứng loại bỏ các tệp .bak và .trn "cũ" dưới các thư mục con của G:\Backups. Điều đó có ý nghĩa?
  • Sẽ tốt hơn nếu làm điều này trong SSIS, vì vậy tôi có thể thất bại ETL của mình nếu / khi sao lưu thất bại? Hoặc quá trình ETL của tôi thậm chí nên quan tâm?

Xin lỗi nếu đây là quá nhiều câu hỏi cho một bài đăng, nếu cần tôi sẽ chỉnh sửa và đặt nhiều câu hỏi thay vào đó - tôi nghĩ rằng tất cả chúng đều liên quan chặt chẽ với nhau.


3
Bạn có thể giải thích những gì bạn có nghĩa là "cắt ngắn"? Bạn có nghĩa là bạn mong đợi một bản sao lưu nhật ký để thu nhỏ tệp nhật ký? Cho mục đích gì? Vậy nó có thể phát triển trở lại?
Aaron Bertrand

3
Ngoài ra, tôi khuyên bạn nên đọc câu hỏi này và câu trả lời cho câu hỏi trước khi đi xa hơn: dba.stackexchange.com/q/29829/1186
Aaron Bertrand

3
Nếu bạn chỉ cần phục hồi hàng ngày, sau đó dính vào chế độ đơn giản. (Tại sao bạn lại thay đổi thành đơn giản, sau đó trở lại đầy đủ? Bạn nghĩ điều gì sẽ đạt được?) Nhưng nếu ban ngày tất cả đều đọc nhật ký của bạn thì không nên thay đổi trong ngày. Trong mọi trường hợp, không, sao lưu nhật ký sẽ không bao giờ thu nhỏ tệp nhật ký.
Aaron Bertrand

3
Nếu bạn đi 6 tháng trong chế độ khôi phục hoàn toàn mà không bao giờ thực hiện sao lưu nhật ký, vâng, các tệp nhật ký của bạn sẽ phát triển. Tuy nhiên, nếu như bạn nói, bạn chỉ có hoạt động đọc trong ngày, sử dụng chế độ khôi phục hoàn toàn là một sự lãng phí, chỉ cần làm cho nó đơn giản. Sau đó, tệp nhật ký nói chung sẽ hoàn toàn không phát triển (vì trong chế độ khôi phục đơn giản, không gian cho tất cả các giao dịch đang hoạt động có thể được sử dụng lại). Các DBA biết những gì họ đang làm thường sử dụng chế độ khôi phục hoàn toàn (để họ có thể khôi phục đến một thời điểm), kích thước tệp nhật ký của họ một cách thích hợp và thực hiện sao lưu nhật ký đủ thường xuyên để các tệp nhật ký không phát triển.
Aaron Bertrand

3
Vì bạn nói rằng bạn không cần phục hồi tại thời điểm, tôi không chắc tại sao bạn thậm chí coi mô hình khôi phục hoàn toàn là một tùy chọn.,
Aaron Bertrand

Câu trả lời:


7

Chỉ SSIS qua đêm mới thực hiện viết, ban ngày là tất cả các lần đọc - tôi chỉ cần phục hồi hàng ngày.

Bạn nên chọn mô hình phục hồi dựa trên nhu cầu kinh doanh của mình:

  • Làm thế nào nhiều doanh nghiệp dữ liệu có thể mất và đồng thời tồn tại?

Dựa trên câu trả lời trên, bạn nên cẩn thận chọn mô hình phục hồi cơ sở dữ liệu của mình .

Nói một cách đơn giản (không thảo luận về mô hình phục hồi đã đăng nhập hàng loạt) ,

  • Một mô hình khôi phục đầy đủ cho phép sao lưu nhật ký cho phép phục hồi tại thời điểm.
    • Việc cắt bớt nhật ký có thể xảy ra khi bạn thực hiện sao lưu nhật ký giao dịch, tức là không gian tệp nhật ký sẽ được sử dụng lại sau mỗi lần sao lưu nhật ký và không bị phình to!
  • Một mô hình phục hồi đơn giản chỉ cho phép bạn thực hiện sao lưu FULL. Phục hồi tại thời điểm là không thể.
    • Việc cắt bớt nhật ký chỉ có thể xảy ra khi điểm kiểm tra xảy ra (thủ công hoặc tự động) tức là do bạn thực hiện sao lưu toàn bộ thường xuyên, bạn không phải lo lắng về nhật ký giao dịch vì CHECKPOINT sẽ xử lý việc sử dụng lại phần không hoạt động của tệp nhật ký.

Hãy nhớ rằng việc cắt bớt nhật ký KHÔNG phải là giảm vật lý kích thước của tệp nhật ký giao dịch Điều đó có nghĩa là phần không hoạt động của tệp nhật ký giao dịch được đánh dấu là có thể sử dụng lại .

Do đó, bạn nên chỉ định đúng tệp nhật ký giao dịch của mình (và tệp dữ liệu). Phát triển tệp nhật ký sẽ khởi động các sự kiện tự động phát triển (nếu cơ sở dữ liệu của bạn được đặt thành tự động phát triển như là phương sách cuối cùng). Kiểm tra câu trả lời của tôi - Tự động phát triển - Tỷ lệ sử dụng?


Tôi đặc biệt khuyên bạn nên bỏ các kế hoạch bảo trì và thực hiện [một giải pháp bảo trì thông minh - dễ dàng, linh hoạt và tuân theo các thực tiễn tốt nhất] - 5 . - Giải pháp sao lưu của Ola (và cả giải pháp bảo trì Index ).


hãy giải quyết câu hỏi của bạn:

Sẽ sao lưu nhật ký giao dịch như thế này sẽ tự động cắt bớt chúng, hoặc tôi còn cần phải làm gì nữa không?

Vui lòng không nối các bản sao lưu hoặc đặt chúng hết hạn. Họ tạo ra một mớ hỗn độn lớn. Sử dụng INITvà lấy bản sao lưu nhật ký riêng biệt với tem datetime. Dễ bảo trì. Sử dụng giải pháp sao lưu của Ola cho điều đó. Giải pháp là linh hoạt để xóa các bản sao lưu cũ là tốt.

Có thể chạy đồng thời dữ liệu và sao lưu nhật ký giao dịch không? Nếu không, thì một cách thích hợp để làm điều này là gì?

Một bản sao lưu đầy đủ không ảnh hưởng đến bản sao lưu T-log. Một bản sao lưu đầy đủ chỉ chứa đủ nhật ký giao dịch cần thiết để trong trường hợp khôi phục, cơ sở dữ liệu có thể được giao dịch nhất quán theo thời gian mà phần đọc dữ liệu của bản sao lưu đầy đủ hoàn tất. Kiểm tra - bao nhiêu bản ghi giao dịch một bản sao lưu đầy đủ bao gồm?

Ngoài ra, một bản sao lưu nhật ký trong một bản sao lưu đầy đủ sẽ không cắt bớt nhật ký giao dịch. Một (vài) bản sao lưu nhật ký / s sau khi sao lưu đầy đủ kết thúc sẽ cắt bớt nhật ký.

Các tệp sao lưu đang được chọn qua đêm bởi một quy trình khác lấy tất cả các tệp trên máy chủ và lưu trữ chúng ở nơi khác - có phải là một ý tưởng tốt để hết hạn sao lưu sau 2 ngày không? Tôi có cần phải làm cho chúng hết hạn không?

Nhiệm vụ dọn dẹp tương ứng loại bỏ các tệp .bak và .trn "cũ" trong các thư mục con của G: \ Sao lưu. Điều đó có ý nghĩa? Sẽ tốt hơn nếu làm điều này trong SSIS, vì vậy tôi có thể thất bại ETL của mình nếu / khi sao lưu thất bại? Hoặc quá trình ETL của tôi thậm chí nên quan tâm?

Đối với cả hai, sử dụng giải pháp bảo trì sao lưu của Ola. Nó sẽ chăm sóc xóa các tập tin cũ.


Tuyệt vời. Vì vậy, tôi đã thay đổi mô hình khôi phục thành 'Đơn giản' cho tất cả các cơ sở dữ liệu của mình và chạy tập lệnh của Ola. Có vẻ như tất cả những gì tôi cần làm bây giờ là thực sự lên lịch cho các công việc được tạo ra?
Mathieu Guindon

Vâng, làm ơn. Ngoài ra, đừng quên đánh dấu là answer / upvote nếu câu trả lời là giải pháp hoặc hữu ích - theo cách này nó sẽ không gắn cờ như chưa được trả lời.
Kin Shah
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.