Làm cách nào để thu nhỏ tệp Nhật ký giao dịch vật lý khi đó là tiền gốc trong gương?


8

Chúng tôi thiết lập cơ sở dữ liệu phản chiếu vào cuối tuần và quên bật lại công việc sao lưu nhật ký giao dịch. Khi tôi đến vào sáng nay, nhật ký giao dịch đã tăng lên 58GB và chiếm phần lớn dung lượng ổ đĩa.

Tôi đã thực hiện sao lưu thủ công nhật ký giao dịch vào đĩa để cơ sở dữ liệu chạy lại, tuy nhiên việc chạy DBCC SHRINKFILE dường như không làm giảm kích thước vật lý của tệp nhật ký giao dịch.

DBCC SHRINKFILE (N'MyDatabaseName_Log', 1000)

Nếu tôi kiểm tra việc sử dụng nhật ký bằng cách sử dụng

DBCC SQLPERF(LOGSPACE)

Tôi có thể thấy rằng chỉ có 22% nhật ký hiện tại đang được sử dụng

Tên cơ sở dữ liệu Kích thước nhật ký (MB) Không gian nhật ký được sử dụng (%)
MyDatabaseName 55440.87 22.38189 0

Nếu tôi kiểm tra log_reuse_wait_desctrong sys.databses, bản ghi duy nhất tôi thấy là DATABASE_MIRRORING, vì vậy tôi đoán rằng gương đang đóng một vai trò tại sao kích thước vật lý của tệp nhật ký sẽ không co lại?

SELECT log_reuse_wait_desc
FROM sys.databases
WHERE name = N'MyDatabaseName';

Tôi cũng nhận thấy trạng thái phản chiếu cơ sở dữ liệu chính của mình bị Đình chỉ và cố gắng Tiếp tục lại ngay lập tức với lỗi sau:

Đối tác phản chiếu từ xa cho cơ sở dữ liệu 'MyDatabaseName', đã gặp lỗi 5149, trạng thái 1, mức độ nghiêm trọng 25. Phản chiếu cơ sở dữ liệu đã bị treo. Giải quyết lỗi trên máy chủ từ xa và tiếp tục phản chiếu hoặc xóa phản chiếu và thiết lập lại phiên bản máy chủ nhân bản.

Nhật ký lỗi trên máy chủ nhân bản cũng chứa lỗi này, nhưng cũng có lỗi về ổ đĩa tệp nhật ký đã đầy

MODIFY FILE gặp lỗi hệ điều hành 112 (Không có đủ dung lượng trên đĩa.) Trong khi cố gắng mở rộng tệp vật lý.

F: \ Databaselogs \ MyDatabaseName_1.ldf: Lỗi hệ điều hành 112 (Không có đủ dung lượng trên đĩa.) Đã gặp phải.

Máy chủ chính có 60GB trên ổ đĩa tệp nhật ký (có các cơ sở dữ liệu khác được lưu trữ ở đây), trong khi máy chủ được nhân đôi chỉ có 45GB.

Sao lưu tệp nhật ký làm cho cơ sở dữ liệu có thể sử dụng lại được, tuy nhiên tôi cũng muốn giảm kích thước của tệp nhật ký vật lý trên đĩa và lấy lại phản chiếu.

Làm cách nào tôi có thể thu nhỏ kích thước của tệp nhật ký giao dịch vật lý của mình mà không ảnh hưởng đến phản chiếu hoặc chuỗi sao lưu?

Tôi đang chạy SQL Server 2005


Máy chủ thứ cấp có gì trong nhật ký lỗi Máy chủ SQL? Bạn nên có một vài thông báo nhật ký lỗi chỉ ra những gì đã xảy ra để làm cho phiên phản chiếu bị đình chỉ.
Thomas Stringer

@ThomasStringer Tôi thực sự sắp đăng câu trả lời của riêng mình cho câu hỏi này ... Tôi nghĩ rằng câu trả lời của tôi là tôi không thể, ít nhất là không vô hiệu hóa gương và thiết lập lại. Không gian trên máy chủ được nhân đôi dành cho các tệp nhật ký nhỏ hơn không gian trên máy chủ chính (máy chủ chính lưu trữ các cơ sở dữ liệu khác) và tôi không có cách nào giảm kích thước của nhật ký giao dịch được nhân đôi. Tôi cũng đã cập nhật câu hỏi của mình với các thông báo lỗi từ máy chủ được nhân đôi
Rachel

Câu trả lời:


2

Từ những gì tôi có thể nói, tôi không thể.

Tôi tin rằng phần lớn tệp nhật ký đang chờ được nhân đôi vào máy chủ nhân bản, nhưng máy nhân bản bị hỏng và không thể được phục hồi vì nhật ký giao dịch được nhân đôi cũng đã phát triển để chiếm hết dung lượng trên đĩa.

Lý thuyết này được hỗ trợ thêm bởi thực tế một khi tôi loại bỏ phản chiếu, DBCC SHRINKFILElệnh thu nhỏ chính xác tệp nhật ký vật lý và log_reuse_wait_desctrở lại để chờ đợiLOG_BACKUP

Tôi không thể thu nhỏ tệp nhật ký trên máy chủ được nhân đôi vì nó hoạt động như một máy nhân bản và không thể mở được, vì vậy tôi nghĩ rằng máy nhân bản không thể phục hồi được.

Vì vậy, tôi sẽ xóa toàn bộ máy nhân bản và thiết lập lại mọi thứ (quá trình rất chậm với cơ sở dữ liệu 300 GB). Và lần này, tôi sẽ đảm bảo kích thước nhật ký giao dịch khá nhỏ trước khi khởi động máy nhân bản và các bản sao lưu nhật ký giao dịch đang chạy khi gương được sao lưu và chạy.

Tôi cũng sẽ đặt giới hạn về mức độ lớn của nhật ký giao dịch trên máy chủ sản xuất, vì vậy, nhân bản không bao giờ cố gắng tăng nhật ký giao dịch của nó vượt quá kích thước có sẵn trên đĩa.


1
Một lựa chọn khác có thể là sao lưu khác và khôi phục nó vào gương. Nó có thể không hoạt động nhưng nó đáng để thử nếu bạn hoặc bất kỳ ai khác gặp phải vấn đề này một lần nữa.
cfradenburg

@cfradenburg Vâng, tôi đã cố gắng làm điều đó nhưng nó không hoạt động trong trường hợp của tôi vì thời gian sao lưu của tôi vào cuối tuần và không gian đĩa được lấy tối đa trên gương. Nó chắc chắn đáng thử trước khi quyết định xóa hoàn toàn gương và bắt đầu lại.
Rachel

1

Hôm nay cũng gặp vấn đề tương tự với các DB của chúng tôi, vì lý do nào đó đã ngừng sao lưu nhật ký giao dịch trong 3 tháng qua và nhật ký đã được xử lý lên tới 200 GB.

Chính xác các mã lỗi giống như trong tình huống của bạn và phản chiếu sẽ không tiếp tục. Nhật ký ổ đĩa đã hoàn toàn đầy đủ trên gương.

May mắn thay, tôi đã có thể giải phóng một số không gian bằng cách xóa một vài bản ghi cũ đi lạc trên ổ đĩa Log. Sau đó, đã có thể tiếp tục phản chiếu.

Sau đó đi vào các bản sao lưu kế hoạch bảo trì và kích hoạt sao lưu cơ sở dữ liệu và nhật ký giao dịch theo cách thủ công. Ngay cả sau khi sao lưu, các tệp nhật ký giao dịch vẫn còn rất lớn. Vì vậy, tôi đã phải liên tục nói với SQL Studio thu nhỏ các tệp nhật ký (giải phóng mọi không gian không sử dụng) và sau một vài lần thử, nó đã cắt chúng xuống kích thước dễ quản lý hơn.

Hi vọng điêu nay co ich.

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.