Không thể cắt bớt nhật ký giao dịch, log_Vuse_wait_desc - AVAILABILITY_REPLICA


9

Sáng nay tôi thức dậy bởi một cảnh báo đầy đủ về nhật ký giao dịch trên một trong những cơ sở dữ liệu của chúng tôi. Máy chủ này là một cụm luôn luôn và cũng là một thuê bao nhân rộng giao dịch. Tôi đã kiểm tra log_Vuse_wait_desc và nó hiển thị logbackup. Ai đó đã vô tình vô hiệu hóa các công việc đăng nhập lại 4 ngày trước đó, tôi kích hoạt lại công việc sao lưu nhật ký và nhật ký đã bị xóa. Vì lúc đó là 4 giờ sáng, tôi nghĩ rằng tôi sẽ đến văn phòng vào sáng hôm sau và đăng nhập nhật ký vì nó đã tăng lên 400GB.

10 giờ sáng - Tôi đang ở trong văn phòng và tôi kiểm tra việc sử dụng nhật ký trước khi thu hẹp và khoảng 16%. Tôi đã rất ngạc nhiên và kiểm tra log_Vuse_wait_desc, cho thấy sự sao chép. Tôi đã nhầm lẫn vì đây là một thuê bao nhân rộng. Sau đó, chúng tôi đã thấy rằng db đã được kích hoạt cho CDC và nghĩ rằng đó có thể là nguyên nhân, vì vậy CDC đã bị vô hiệu hóa và bây giờ log numuse_wait_desc hiển thị AVAILABILITY_REPLICA.

Việc sử dụng nhật ký trong khi đó vẫn tăng đều đặn và hiện ở mức 17%. Tôi kiểm tra bảng điều khiển luôn luôn và kiểm tra hàng đã gửi và làm lại và cả hai đều gần như bằng không. Tôi không chắc tại sao việc sử dụng lại nhật ký lại hiển thị dưới dạng AVAILABILITY_REPLICA và không thể xóa nhật ký.

Bất cứ ý tưởng tại sao điều này đang xảy ra?

Câu trả lời:


7

Nếu bạn làm điều này:

SELECT * FROM sys.databases

Và log_Vuse_wait_desc hiển thị AVAILABILITY_REPLICA, điều đó có nghĩa là SQL Server đang chờ để gửi dữ liệu nhật ký đến một trong các bản sao Nhóm Luôn sẵn sàng của bạn. Một trong những bản sao có thể bị tụt lại phía sau do mạng chậm hoặc có thể bị hỏng hoàn toàn.

Nếu bạn kiểm tra bảng điều khiển AG và nó không hiển thị hàng đợi, bạn có thể là nạn nhân của tình trạng cạn kiệt luồng. Đây là một vấn đề được biết rằng bảng điều khiển AG ngừng cập nhật sau khi cạn kiệt luồng công nhân. Bạn sẽ cần kiểm tra trạng thái trực tiếp trên mỗi bản sao thay vì dựa vào bản chính. Lưu ý của Nick trong mục Connect nói rằng bạn chỉ có thể thay đổi các thuộc tính của bản sao để khởi động lại bản sao, nhưng điều đó không phải lúc nào cũng hoạt động (đặc biệt là nếu bạn có hàng trăm cơ sở dữ liệu trên một bản sao với một lượng lớn dữ liệu cần được gửi và khởi động lại sao chép chỉ có thể gây ra sự cạn kiệt luồng công nhân một lần nữa.)

Nếu người cuối cùng thiết lập một bản sao AG và nó không còn tồn tại nữa, thì đã đến lúc loại bỏ AG và / hoặc bản sao đó. Hãy cẩn thận rằng các ứng dụng không trỏ đến tên người nghe để kết nối với Máy chủ SQL của bạn.


Sẽ có vấn đề gì nếu thứ cấp được đặt ở chế độ Async? Nếu phụ là TẮT (chờ sửa), nhật ký chính có tiếp tục phát triển không? Cảm ơn!
Michael

Chừng nào thứ cấp vẫn còn trong AG (cho dù nó được bật hay tắt, đồng bộ hóa hoặc không đồng bộ) thì dữ liệu nhật ký sẽ tiếp tục chồng chất. Rốt cuộc, khi bạn bật nguồn thứ cấp trở lại, nó phải lấy dữ liệu từ đâu đó, phải không? Đó là lý do tại sao nếu nó bị hỏng trong một khoảng thời gian, bạn thường nên loại bỏ nó khỏi AG và tái cấu trúc lại nó khỏi bản sao lưu.
Brent Ozar
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.