Sự khác biệt giữa Sao lưu toàn bộ và Sao lưu toàn bộ Chỉ sao chép


17

Tôi đã thấy trong luồng trung tâm của SQL Server Có sao lưu toàn bộ cắt ngắn nhật ký không? bản sao lưu đầy đủ đó không cắt bớt nhật ký:

Không. Sao lưu đầy đủ hoặc khác biệt cắt ngắn nhật ký giao dịch. - Lynn Pettis
No - một bản sao lưu đầy đủ không cắt bớt nhật ký. - Chad Crawford

Vì vậy, sự khác biệt giữa sao lưu đầy đủ và sao lưu toàn bộ chỉ sao chép là gì?

Đối với bản sao lưu nhật ký, có bản sao lưu chỉ sao chép để ngăn chặn chuỗi nhật ký bị phá vỡ mà không cắt bớt nhật ký. Vì vậy, sao lưu chỉ sao chép đầy đủ là gì?

Câu trả lời:


14

Ít nhất bạn cần xem xét sao lưu vi sai. Trừ khi chỉ sử dụng bản sao trên toàn bộ, bản sao lưu khác tiếp theo của bạn sẽ bị tắt. Sao lưu chỉ sao chép :

Sao lưu toàn bộ chỉ sao chép (tất cả các mô hình khôi phục) Một bản sao lưu chỉ sao chép không thể phục vụ như một cơ sở vi sai hoặc sao lưu vi sai và không ảnh hưởng đến cơ sở vi sai.

Sự khác biệt duy nhất giữa bản đầy đủ và bản đầy đủ là bản sao đầy đủ không phá vỡ chuỗi vi sai. Không ai trong số họ phá vỡ chuỗi nhật ký vì cả hai đều không cắt tệp nhật ký.


24

Sự khác biệt chính giữa các bản sao lưu đầy đủ và chỉ sao chép là liệu LSN (Số thứ tự nhật ký) hay không, và cụ thể DatabaseBackupLSNlà bản cập nhật.

Khi bạn sao lưu toàn bộ, bản DatabaseBackupLSNcập nhật sẽ được cập nhật. Sau khi thực hiện sao lưu toàn bộ, nếu bạn thực hiện một bản sao lưu khác biệt thì bản sao lưu đó có bản sao lưu DatabaseBackupLSNphù hợp với bản sao lưu đầy đủ và do đó SQL có thể liên kết cả hai với nhau (ví dụ: từ các LSN đó biết rằng diff đã theo đầy đủ).

Vấn đề xảy ra khi bạn có các bản sao lưu dự kiến ​​đang chạy, do đó bạn có một bản sao lưu đầy đủ ban đầu và sau đó là một chuỗi các khác biệt. Nếu bạn tự sao lưu toàn bộ, nó sẽ cập nhật LSN, và từ đó trở đi, mỗi bản sao lưu vi sai bạn thực hiện thông qua sao lưu theo lịch trình sẽ tham chiếu rằng LSN mới không phải là bản gốc. Trong trường hợp cần khôi phục, bạn có thể khôi phục bản sao lưu Toàn bộ theo lịch trình của mình, nhưng khi bạn cố gắng khôi phục bất kỳ bản sao lưu vi sai nào được thực hiện sau công việc thủ công bạn thấy nó sẽ thất bại vì LSN không còn phù hợp.

Với bản sao lưu chỉ sao chép, nó không chạm vào DatabaseBackupLSN, và như vậy sẽ không phá vỡ chuỗi sao lưu đó.

Có một mô tả hay về vấn đề này, cũng như lý do tại sao rất nhiều người hiểu sai về nó trong Phá vỡ chuỗi sao lưu - REDUX (Hoặc ăn quạ) của Michael K. Campbell, bao gồm các hướng dẫn trực quan tốt như thế này:

Hình ảnh SQLmag - Sao lưu đầy đủ v Sao lưu dự phòng

Để biết giải thích tốt về bốn LSN khác nhau và cách chúng được sử dụng, hãy xem Tìm hiểu về Số thứ tự Nhật ký Máy chủ SQL để sao lưu của Simon Liew.

Cách để tránh vấn đề là không có nhiều hơn một việc thực hiện sao lưu chuẩn của cơ sở dữ liệu. Mọi sao lưu adhoc hoặc sao lưu thứ cấp đều phải được thực hiện với tùy chọn chỉ sao chép, xem Sao lưu chỉ sao chép (SQL Server) để biết chi tiết đầy đủ, nhưng về cơ bản bạn sử dụng tùy chọn "Sao lưu chỉ sao lưu" trong SSMS, thông qua T-SQL chỉ định WITH COPY_ONLYtrong lệnh hoặc với PowerShell sử dụng -CopyOnlytham số.


1
Để thêm: CHỈ SAO CHÉP cho phép tạo bản sao lưu cho các mục đích không sao lưu. Đối với khách hàng, các bản sao lưu được thực hiện tự động cho hệ thống sao lưu doanh nghiệp - việc khôi phục là PAINFULL, đặc biệt là đưa một người đến một môi trường khác (thủ tục giấy tờ, làm trong ngày). CHỈ SAO CHÉP cho phép tôi tạo một bản sao KHÔNG can thiệp vào bản sao lưu được quản lý bởi bản sao lưu doanh nghiệp và sau đó khôi phục nó vào môi trường thử nghiệm.
TomTom

12

Giả sử rằng chúng tôi có một cơ sở dữ liệu với các bản sao lưu theo lịch trình. Sao lưu toàn bộ chạy một lần trong 24 giờ lúc 00:00, chúng tôi cũng có các bản sao lưu vi sai chạy mỗi 6 giờ và sao lưu nhật ký giao dịch chạy mỗi giờ. Vậy, điều gì sẽ xảy ra nếu chúng ta cần tạo thêm một bản sao lưu đầy đủ vào giữa ngày, để khôi phục một máy chủ khác? Chúng ta sẽ làm gì trong trường hợp này. Tất nhiên, chúng tôi có thể tạo một bản sao lưu đầy đủ.

BACKUP DATABASE Test TO DISK = 'C:/Test.bak'

Nhưng khi bạn tạo bản sao lưu cơ sở dữ liệu, có một số thay đổi ảnh hưởng đến cách các bản sao lưu sau sẽ được khôi phục (sao lưu vi sai và sao lưu nhật ký giao dịch đều ảnh hưởng đến hoạt động khôi phục sẽ như thế nào). Trong trường hợp này, tất cả các bản sao lưu vi sai sau sẽ phụ thuộc vào bản sao lưu đầy đủ cuối cùng. Nếu sao lưu toàn bộ lần cuối bị mất, việc khôi phục cơ sở dữ liệu là không thể.nhập mô tả hình ảnh ở đây

Nhưng làm thế nào chúng ta có thể tạo một bản sao lưu sẽ không ảnh hưởng đến các quá trình sao lưu hoặc khôi phục sau đây cho cơ sở dữ liệu đó. Đây là nơi sao lưu chỉ sao chép vào vị trí.

BACKUP DATABASE Test TO DISK = 'C:\Test.bak' WITH COPY_ONLY

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


2

Khi bạn có một bản sao lưu đầy đủ và một bộ sao lưu tệp nhật ký, chuỗi nhật ký được duy trì bằng LSN (Số thứ tự nhật ký). Nếu bạn muốn thực hiện sao lưu mà không phá vỡ chuỗi nhật ký, thì hãy thực hiện sao lưu chỉ sao chép.

Nếu bạn không thực hiện sao lưu chỉ sao chép, chuỗi nhật ký sẽ bị hỏng và bản sao lưu bạn thực hiện sẽ là bản sao lưu đầy đủ mới nhất. Điều này có nghĩa là các bản sao lưu nhật ký trước đó không thể được áp dụng cho các bản sao lưu đầy đủ mới được thực hiện. Chuỗi nhật ký chủ yếu được duy trì để phục hồi theo thời gian hoặc kịch bản vận chuyển nhật ký.

Ví dụ: giả sử bạn có một kịch bản sao lưu cần sao lưu toàn bộ sau mỗi 6 giờ (nửa đêm, 6 giờ sáng, trưa, 6 giờ chiều) và sao lưu nhật ký cứ sau 15 phút. Một yêu cầu đến vào lúc 9 giờ sáng để có một bản sao DB của bạn được đặt trên một máy chủ thử nghiệm. Bạn muốn thực hiện sao lưu mà không phá vỡ chuỗi nhật ký của bạn hoặc làm gián đoạn công việc sao lưu của bạn. Đây là khi một bản sao lưu chỉ sao chép được thực hiện. Bản sao lưu chỉ sao chép sẽ không phá vỡ các bộ sao lưu thông thường của bạn.


1
Tôi không nghĩ chuỗi nhật ký hiệu ứng sao lưu chỉ sao chép. Sao lưu toàn bộ chỉ sao chép không thiết lập lại cơ sở vi sai. Đó là chỉ difference.See những liên kết này sqlservercentral.com/Forums/Topic1471058-391-1.aspx?Update=1sqlinthewild.co.za/index.php/2011/03/08/...
nhà nghiên cứu CNTT

1
Tôi không đồng ý câu trả lời của bạn. Cả sao lưu toàn bộ và sao lưu toàn bộ sao chép đều không phá vỡ chuỗi nhật ký. Khác với 'không đặt lại cơ sở vi sai', chỉ sao lưu toàn bộ sao lưu giống hệt như sao lưu toàn bộ bình thường theo mọi cách. Xem các liên kết diễn đàn tôi đã đề cập trong bình luận trước đây của tôi.
nghiên cứu CNTT

Hãy nói rằng bạn có một bản sao lưu đầy đủ: FB1 và ​​3 bản sao lưu nhật ký: LB1, LB2, LB3. Bây giờ thực hiện sao lưu toàn bộ thủ công: FB2 (không có copy_only). Đợi thêm 3 bản sao lưu nhật ký: LB4, LB5, LB6. Bây giờ xóa FB2. Bạn có thể khôi phục FB1 + LB1 + LB2 + LB3 + LB4 + LB5 + LB6 không?
StanleyJohns

Có tôi có thể khôi phục. tôi đã sao lưu toàn bộ (không phải copyonly) FB1, sau đó sao lưu nhật ký (LB1), sau đó sao lưu toàn bộ (không chỉ sao chép) FB2, sau đó lại sao lưu nhật ký (LB2). sau đó tôi khôi phục lại trong chuỗi này FB1 + LB1 + LB2. Khôi phục đúng cách và tìm thấy tất cả các hàng được nhập đúng.
nghiên cứu CNTT

2
-1 vì tùy chọn chỉ sao chép với bản sao lưu đầy đủ không liên quan gì đến chuỗi LSN. Itresearcher chỉ ra rằng nhưng bạn đã không cập nhật / xóa câu trả lời của mình.
Edward tổng hợp

0

Một bản sao lưu đầy đủ và sao lưu chỉ sao lưu không phá vỡ chuỗi nhật ký. chỉ khi bạn thực hiện sao lưu tlog thì sẽ có sự không phù hợp LSN.

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.