Cách tốt nhất để duy trì kích thước tệp nhật ký SQL


13

Tôi là một phần của một DBA mới và tôi đang quản lý một phiên bản SQL Server 2012 có số lượng hoạt động khá lớn. Tôi đang chạy ở chế độ Full Recovery vì chúng tôi cần khôi phục theo thời gian.

Ngay bây giờ, tôi đang sao lưu toàn bộ cơ sở dữ liệu và nhật ký mỗi ngày vào lúc 5 giờ sáng. Một số tệp nhật ký đã tăng lên tới 300gb và thậm chí sau khi sao lưu, chúng không giảm kích thước. Tôi có thể khiến chúng giảm kích thước bằng cách chạy một cái gì đó tương tự:

BACKUP LOG db1 TO DISK = '\\server\share\db1_log1.trn';
DBCC ShrinkFile([db1_log], 0);

BACKUP LOG db1 TO DISK = '\\server\share\db1_log2.trn';
DBCC ShrinkFile([db1_log], 0);

BACKUP LOG db1 TO DISK = '\\server\share\db1_log3.trn';
DBCC ShrinkFile([db1_log], 0);

Khi tôi kiểm tra LSN của các tệp sao lưu, tôi thấy một cái gì đó như:

RESTORE headeronly FROM DISK = N'\\server\share\db1_log1.trn'
FirstLSN:  15781000014686200001
SecondLSN: 15802000000665000001

RESTORE headeronly FROM DISK = N'\\server\share\db1_log2.trn'
FirstLSN:  15802000000665000001
SecondLSN: 15805000000004100001

RESTORE headeronly FROM DISK = N'\\server\share\db1_log3.trn'
FirstLSN:  15805000000004100001
SecondLSN: 15808000000004200001

Tôi không tin rằng tôi đang phá vỡ chuỗi nhật ký của mình bằng cách thu nhỏ các tệp nhật ký. Đọc về điều này, tôi tin rằng tôi đang làm tổn thương hiệu suất của mình vì những tệp nhật ký bị thu hẹp đó phải tự phát triển lại.

Câu hỏi:

  1. Tại sao tệp nhật ký không co lại sau khi sao lưu của tôi? Có phải vì có những giao dịch không được cam kết?
  2. Lúc đầu, tôi đã nghĩ rằng tôi nên thu nhỏ các tệp nhật ký sau mỗi 5:00 AM sao lưu. Sau khi đọc về việc điều đó có hại như thế nào đối với hiệu suất, bây giờ tôi tin rằng tôi cần phải sao lưu nhật ký thường xuyên mỗi vài giờ trong ngày. Đúng không?
  3. Sao lưu toàn bộ cơ sở dữ liệu / nhật ký bình thường của tôi xảy ra mỗi ngày vào lúc 5:00 sáng và đôi khi mất 3 giờ. Nếu tôi lên lịch sao lưu nhật ký xảy ra mỗi giờ, điều gì sẽ xảy ra khi sao lưu nhật ký va chạm với sao lưu 5:00 SA?

Câu trả lời:


10
  1. Tại sao tệp nhật ký không co lại sau khi sao lưu của tôi? Có phải vì có những giao dịch không được cam kết?

Tệp nhật ký NTFS thực tế không "thu nhỏ" từ bản sao lưu nhật ký giao dịch, nhưng các VLF (Tệp nhật ký ảo) trong nhật ký giao dịch được đánh dấu để sử dụng lại (vì hiện tại chúng đã được sao lưu và duy trì trên phương tiện truyền thông) cho phép bao quanh sử dụng nhật ký giao dịch để xảy ra. Nếu bạn không sao lưu nhật ký giao dịch hoặc không đủ thường xuyên thì sẽ không có các VLF khả dụng và điều đó sẽ khiến nhật ký giao dịch tăng lên (với điều kiện là chế độ tự động được đặt) để phù hợp với các mục nhật ký giao dịch bổ sung.

2.Trong lần đầu tiên tôi đã nghĩ rằng tôi nên thu nhỏ các tệp nhật ký sau mỗi 5:00 SA sao lưu. Sau khi đọc về việc điều đó có hại như thế nào đối với hiệu suất, bây giờ tôi tin rằng tôi cần phải sao lưu nhật ký thường xuyên mỗi vài giờ trong ngày. Đúng không?

Thu hẹp tập tin thường xuyên và theo lịch trình không phải là một ý tưởng tốt. Chỉ khi bạn cần lấy lại nhiều không gian cần thiết, bạn mới nên xem xét a DBCC SHINKFILE. Ngoài ra, khi bạn liên tục phát triển nhật ký giao dịch của mình, bạn có thể cản trở những việc khác như khôi phục cơ sở dữ liệu. Với quá nhiều VLF trong nhật ký giao dịch (một vấn đề phổ biến khi nhật ký giao dịch chỉ tăng theo mức tăng lưu trữ nhỏ), thời gian để khôi phục cơ sở dữ liệu có thể lâu hơn mong muốn.

3. Sao lưu toàn bộ cơ sở dữ liệu / nhật ký bình thường của tôi xảy ra mỗi ngày vào lúc 5:00 sáng và đôi khi mất 3 giờ. Nếu tôi lên lịch sao lưu nhật ký xảy ra mỗi giờ, điều gì sẽ xảy ra khi sao lưu nhật ký va chạm với sao lưu 5:00 SA?

Sẽ không có gì xảy ra, đó là một hoạt động hoàn toàn hợp pháp. Xem biểu đồ dưới đây từ MSDN . Khi có một chấm đen, hai thao tác đó không thể xảy ra cùng một lúc. Như bạn có thể thấy, sao lưu cơ sở dữ liệu và nhật ký giao dịch được cho phép đồng thời.

nhập mô tả hình ảnh ở đây

Điều đáng nói ở đây là bạn nên sao lưu nhật ký giao dịch của mình thường xuyên hơn. Tăng trưởng tệp NTFS không phải là vấn đề duy nhất bạn có thể gặp phải bằng cách không sao lưu nhật ký giao dịch thường xuyên hơn. Nếu bạn gặp lỗi lưu trữ và nhật ký giao dịch của bạn bị mất, thì bạn chỉ có thể khôi phục về thời điểm sao lưu nhật ký giao dịch cuối cùng của mình. Nếu nhật ký giao dịch bị mất, bạn sẽ không thể sao lưu phần đuôi của nhật ký và khôi phục lại thời điểm xảy ra lỗi. Trong trường hợp của bạn, bạn có khả năng mất dữ liệu trong 24 giờ. Nhưng nếu bạn sao lưu nhật ký giao dịch của mình cứ sau 30 phút thì mất dữ liệu tối đa của bạn sẽ là 30 phút. Trong trường hợp đó, nếu nhật ký giao dịch của bạn không còn nữa, và bạn có bản sao lưu đầy đủ và chuỗi nhật ký nguyên vẹn của mình, bạn có thể khôi phục lại bản sao lưu nhật ký cuối cùng đó.

Tài liệu của TechNet về Cắt ngắn Nhật ký Giao dịch


5

Vấn đề chính mà bạn đang giải quyết là bạn sao lưu nhật ký của mình mỗi ngày một lần. Hành vi của công cụ là các bản ghi nhật ký (không gian đã sử dụng) trong tệp nhật ký sẽ chỉ bị xóa sau khi sao lưu nhật ký thành công. Không gian này được lấy lại khi điểm kiểm tra xảy ra, nhưng nếu cơ sở dữ liệu của bạn đang trong quá trình khôi phục Nhật ký đầy đủ / hàng loạt thì các bản ghi nhật ký sẽ chỉ bị xóa nếu chúng được sao lưu thành công.

Sao lưu nhật ký dự định sẽ được sử dụng cùng với Sao lưu toàn bộ và nên chạy ở một khoảng thời gian đều đặn giữa các bản sao lưu đầy đủ. Khoảng thời gian này có thể là bất kỳ khoảng thời gian nào, mặc dù tôi thường chạy sao lưu nhật ký cứ sau 15 phút. Khoảng thời gian của bạn phụ thuộc vào Mục tiêu điểm khôi phục (RPO) của bạn và số lượng dữ liệu bạn có thể mất trong trường hợp khôi phục.

Nếu bạn đang thực hiện sao lưu nhật ký thường xuyên, bạn không cần phải thực hiện thu nhỏ tệp thường xuyên vì bạn sẽ quản lý không gian tệp nhật ký trước khi buộc phải phát triển.


-1

Tôi đã có cùng một vấn đề như bạn trước đây. Tệp nhật ký của tôi luôn tăng thay vì tôi sử dụng sao lưu cơ sở dữ liệu đầy đủ mỗi đêm. Vì vậy, đây là giải pháp của tôi:

  1. sao lưu tệp nhật ký hiện tại của bạn.

  2. Đặt cơ sở dữ liệu của bạn để phục hồi đơn giản

    • Trở thành Phục hồi hoàn toàn -> Tệp nhật ký không xóa giao dịch đã cam kết, nó chỉ sắp xếp lại dữ liệu của bạn -> Tệp Shink không ảnh hưởng nhiều -> và ngược lại đối với Phục hồi đơn giản.
  3. Chuyển tệp nhật ký của bạn xuống còn 1 MB hoặc ít hơn (tùy bạn)

  4. Đặt Cơ sở dữ liệu của bạn trở lại Phục hồi hoàn toàn.

Hy vọng nó sẽ giúp

Phong Trần

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.