Nhật ký giao dịch và phản chiếu - tìm kiếm lời giải thích ngu ngốc nhất có thể


8

Trước hết tôi phải thừa nhận rằng tôi đấu tranh với khái niệm Nhật ký giao dịch. Ý tôi là - tôi hiểu rằng đó là Nhật ký của tất cả các Giao dịch xảy ra trên cơ sở dữ liệu, nhưng khi nói đến việc đưa nó vào đúng ngữ cảnh trong một số nhiệm vụ thì rõ ràng tôi thiếu một cái gì đó. Vì vậy, đối với bất kỳ ai sẽ trả lời câu hỏi - xin vui lòng mở rộng trên lý thuyết đằng sau Nhật ký giao dịch.

Câu hỏi chính là - Tôi có SQL Server 2008 và cơ sở dữ liệu 2 GB mà tôi cần được nhân đôi (có nhật ký giao dịch 12 GB). Nếu tôi không phản ánh cơ sở dữ liệu đó, tôi cho rằng tôi có thể chuyển sang chế độ Đơn giản hoặc cắt bớt nhật ký sau khi sao lưu. Nhưng trong trường hợp này - tôi nên làm gì nếu muốn kiểm soát nhật ký giao dịch đó? Theo tôi hiểu - tôi cần giữ toàn bộ nhật ký giao dịch nếu tôi muốn có thể dễ dàng nhân bản cơ sở dữ liệu (chỉ cần thực hiện sao lưu toàn bộ).

Có cách nào để khắc phục điều này? Lý tưởng nhất là tôi muốn có thể thực hiện sao lưu giữ cả hai tệp MDF và LDF trong 1 tệp và sau khi sao lưu xong Nhật ký giao dịch (LDF) trên cơ sở dữ liệu giảm xuống còn 0. Vấn đề với kịch bản này là sao lưu gia tăng - nếu sao lưu lần đầu tiên của tôi Nhật ký bị cắt bớt, tôi cho rằng bản sao lưu thứ hai sẽ cần tham chiếu cái đầu tiên nếu tôi muốn thực hiện phản chiếu sau (nghĩa là tôi sẽ bị mắc kẹt với việc giữ một loạt các tệp thay vì chỉ một).

Vì vậy - bất cứ ai có thể khai sáng cho tôi về chủ đề này? Tôi hiểu rằng tôi đang cố gắng lấp đầy nhiều lỗ hổng ở đây và rằng "giải pháp" được đề xuất của tôi có thể không phải là giải pháp tốt nhất, nhưng tôi chân thành đánh giá cao nếu ai đó có thể đẩy tôi đi đúng hướng vào Nhật ký giao dịch, cách chúng tác động đến phản chiếu và tốt nhất thực hành với hai người đó.

Câu trả lời:


5

Nhật ký giao dịch là một phương pháp quan trọng để khôi phục cơ sở dữ liệu của bạn trong một thời gian cụ thể. Nếu bạn có cơ sở dữ liệu lớn> 500 GB và nếu bạn phải khôi phục cơ sở dữ liệu của mình từ bản sao lưu đầy đủ, việc này sẽ tốn rất nhiều thời gian. Ngoài ra nếu bạn sao lưu toàn bộ cơ sở dữ liệu của mình mọi lúc, hãy nghĩ về việc sao lưu này có thể mất bao lâu.

Một khái niệm rất dễ dàng cho SQL Server có thể là: Đặt mô hình khôi phục cơ sở dữ liệu của bạn đầy đủ

Tạo một kế hoạch bảo trì (1) trong SQL Server:

  • Làm FullBackup mỗi tuần có thể trong D: \ yourbackup \ FullDBBackup.bak
  • Thực hiện sao lưu chênh lệch hai ngày một lần trong D: \ yourbackup \ DiffBackup.bak
  • Cứ 2 houers Sao lưu nhật ký giao dịch của bạn trong D: \ Yourbackup \ Tranlogbackup.trn

Tạo một kế hoạch bảo trì (2) trong SQL Server:

  • Xóa tất cả các tệp cũ hơn 8 ngày khỏi D: \ yourBackup * .bak
  • Xóa tất cả các tệp cũ hơn 3 ngày kể từ D: \ yourBackup * .trn

Trong trường hợp này, bạn có thể khôi phục Cơ sở dữ liệu của mình trong một thời gian cụ thể, rất nhanh rất dễ dàng. SQL Server sẽ tự động quản lý các tệp "Sao lưu" của bạn, các tệp cũ hơn sẽ bị xóa sau khoảng thời gian cụ thể của bạn.

Tôi muốn đề nghị bạn đọc về Nhật ký giao dịch SQL Server tại đây:

http://www.sqlservercentral.com/articles/Design+and+Theory/63350/

Để sử dụng Gói bảo trì trong SQL Server, chỉ cần hỏi BING / google: D

bạn nên xây dựng một db kiểm tra nhỏ và kiểm tra điều này trước khi bạn đi vào sản xuất


Tôi không gặp vấn đề với sao lưu toàn bộ & thời gian vì tôi có thể dừng toàn bộ hệ thống cho đến khi chúng kết thúc. Một câu hỏi về câu trả lời của bạn - tôi có cắt bớt Nhật ký giao dịch trong kịch bản này không? Nếu không, thì tôi hiểu rằng tôi chỉ cần FullDBBackup.bak mới nhất để mang lại cơ sở dữ liệu sao lưu? Tôi không quan tâm đến các thời điểm cụ thể - tất cả những gì tôi quan tâm là phiên bản DB mới nhất mà tôi nhận được khi sao lưu. Ý nghĩa - Tôi không cần nhật ký giao dịch; Tôi chỉ giữ chúng chỉ vì phản chiếu. Có cách nào xung quanh đó không?
nikib3ro

2
1. bạn không thể cắt bớt nhật ký của mình: D 2. Nếu bạn sao lưu nhật ký tran, SQL Server sẽ cung cấp không gian này miễn phí để sử dụng lại trong tệp logfile của bạn. chỉ cần kiểm tra đơn giản dbcc sqlperf ('logpsace') tạo ra bản sao lưu và sau đó thực hiện tương tự sau khi sao lưu của bạn. và cuối cùng, bạn cần nhật ký giao dịch ... chỉ cần kiểm tra ví dụ của tôi

Cuối cùng tôi đã thực hiện các đề xuất của bạn trong môi trường thử nghiệm và cho đến nay tôi thích những gì tôi đang thấy. Xin vui lòng cho tôi biết nếu tôi hiểu đúng - nếu bây giờ tôi cần khôi phục cơ sở dữ liệu, trước tiên tôi sẽ sử dụng sao lưu FULL tôi đã thực hiện và sau đó sử dụng kết hợp các bản sao lưu vi sai và nhật ký giao dịch, tôi có thể khôi phục cơ sở dữ liệu của mình thời điểm nhất định? Tôi có đúng không Và tôi cũng cho rằng để phản chiếu, tôi chỉ cần dừng máy chủ và sao lưu toàn bộ? Hoặc tôi sẽ cần Nhật ký giao dịch để thiết lập phản chiếu? Cảm ơn một lần nữa cho tất cả sự giúp đỡ và câu trả lời của bạn!
nikib3ro

3

Để tận dụng lợi thế của việc phản chiếu, bạn phải có cơ sở dữ liệu ở chế độ phục hồi ĐẦY ĐỦ và sẽ cần phải sao lưu nhật ký giao dịch để giữ cho tệp nhật ký không phát triển. Nếu bạn không cần sao lưu nhật ký thì chỉ cần thanh lọc chúng sau x số giờ với kế hoạch bảo trì, nhưng chúng cần được thực hiện.

Để làm sạch môi trường, bạn nên xóa phản chiếu, chuyển chế độ khôi phục thành đơn giản, giảm kích thước tệp nhật ký thông qua Paul Randal Way được đề xuất , chuyển về chế độ khôi phục hoàn toàn, thiết lập sao lưu đầy đủ và sao lưu, sau đó khởi tạo lại gương. Bạn có thể cố gắng giảm kích thước nhật ký trong khi phản chiếu tại chỗ nhưng sẽ dễ dàng hơn để loại bỏ nó trước. 1 GB không nên quá tệ khi db khởi tạo lại.

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.