Cách loại trừ các chỉ mục khỏi các bản sao lưu trong SQL Server 2008


19

Các bản sao lưu đầy đủ hàng đêm (và khác biệt định kỳ) của chúng tôi đang trở nên khá lớn, chủ yếu là do số lượng chỉ mục trên các bảng của chúng tôi; khoảng một nửa kích thước sao lưu bao gồm các chỉ mục.

Chúng tôi đang sử dụng mô hình khôi phục đơn giản cho các bản sao lưu của chúng tôi.

Có cách nào, thông qua việc sử dụng FileGroupshoặc một số phương pháp phân vùng tệp khác, để loại trừ các chỉ mục khỏi các bản sao lưu không?

Sẽ thật tuyệt nếu điều này cũng có thể được mở rộng sang các danh mục toàn văn.

Câu trả lời:


15

Nếu bạn chuyển sang chế độ khôi phục hoàn toàn, bạn có thể thực hiện việc này với các nhóm fileg nhưng thực sự rất vụng về. Bạn để lại dữ liệu trong nhóm fileg chính và đặt các chỉ mục vào một filegroup riêng (không mặc định, đó là khóa).

Sau đó, bạn sắp xếp lại các bản sao lưu của mình để bạn thực hiện các bản sao lưu filegroup của chính mỗi đêm và sao lưu nhật ký giao dịch mỗi X phút.

Khi thảm họa xảy ra, bạn tự khôi phục nhóm chính. Dữ liệu đột nhiên trực tuyến, nhưng các chỉ mục thì không. Tuy nhiên, để trở lại trạng thái bình thường, bạn sẽ cần xuất dữ liệu đó vào cơ sở dữ liệu sạch mới và thêm các chỉ mục từ đó. Bạn không thể đưa cơ sở dữ liệu hoàn toàn trực tuyến mà không cần khôi phục tất cả các nhóm fileg và bạn không thể nói "Tôi không cần nhóm fileg khác nữa."

Để biết thêm về cách thức hoạt động của nó, hãy xem hướng dẫn bằng video của tôi về khôi phục filegroup.


Hehe, tôi đã chuyển các chỉ mục không phân cụm sang nhóm riêng của họ; mô hình Phục hồi đơn giản hoàn toàn cản trở tôi. Các chỉ số thực sự lớn hơn dữ liệu - làm thế nào nó chế nhạo tôi! Ồ, có lẽ một số bên thứ 3 sẽ phát hành một gợi ý viên đạn ma thuật :)
Jarrod Dixon

1
Và có lẽ, chỉ có thể, bạn sẽ nhận được giấy phép miễn phí cho nó. ;-)
Brent Ozar

5

Thành thật mà nói, bạn thực sự không muốn làm điều này, ngay cả khi bạn vượt qua các vấn đề khác mà người khác nêu ra ở đây.

Khi bạn khôi phục bản sao lưu trong trường hợp khẩn cấp, bạn không muốn đợi các chỉ mục được xây dựng lại và bạn sẽ phải chịu hiệu suất ghê gớm cho đến khi bạn làm điều đó.

Tôi không thể nghĩ đến tình huống bạn muốn khôi phục bản sao lưu mà không có chỉ mục, vì vậy trong mọi trường hợp, bạn sẽ thực sự muốn sao lưu chúng cùng một lúc.

Bạn có thể sẽ cần tìm giải pháp khác cho vấn đề này ...

-Adam


1
"bạn không muốn chờ đợi các chỉ mục được xây dựng lại" rất được cho là, IMO
Jeff Atwood

2
Vâng, nhưng hãy nhớ rằng tôi đang khái quát ở đây. Tôi đã không tin rằng có nhiều tình huống tốt hơn là bỏ các chỉ mục và xây dựng lại hơn là những tình huống tốt hơn là sao lưu các chỉ mục và tránh xây dựng lại. Nói cách khác, một trường hợp nói chung là tốt hơn, và trừ khi một tình huống cụ thể yêu cầu nó, người ta nên sai lầm khi ủng hộ họ. Điều đó đang được nói, mọi tình huống là khác nhau. Tôi tò mò muốn biết phải mất bao lâu để xây dựng lại các chỉ mục SO và hiệu suất của trang web phải chịu đựng cho đến khi hoàn thành (giả sử nó đã hết trong quá trình xây dựng lại).
Adam Davis

Sao lưu lưu trữ dài hạn là trường hợp sử dụng cụ thể mà tôi đang xem bây giờ đã dẫn tôi đến câu hỏi này. Tôi có một dự án đã hoàn thành và không còn muốn cơ sở dữ liệu trực tuyến, nhưng cũng không cần phải làm lộn xộn ổ đĩa mạng của chúng tôi với một tệp sao lưu lớn hơn mức cần thiết. Tôi không muốn mất các định nghĩa chỉ mục, nhưng sẽ không phiền khi xây dựng lại chúng nếu tôi phải khôi phục lại định nghĩa này.
richardtallent

3

Có vẻ như điều này không được hỗ trợ. Từ thông tin báo cáo lỗi này :

Có rất nhiều điều thú vị trong phần này, vì vậy tôi sẽ đi sâu vào chi tiết hơn một chút về những gì đang diễn ra sau hậu trường và ý nghĩa của việc thực hiện chức năng này. Một số loại trang chỉ mục được tách riêng thành các đơn vị phân bổ riêng biệt, trong khi các loại khác được trộn lẫn với các trang dữ liệu. Hiện tại chúng tôi chỉ nhìn vào sơ đồ bit phân bổ để xem nếu một phạm vi được phân bổ, bây giờ chúng tôi sẽ phải đi vào và giải thích những gì được lưu trữ trong mỗi đơn vị phân bổ. Hơn nữa, bây giờ chúng tôi sẽ không thể thực hiện quét tuyến tính các tệp dữ liệu sao chép dữ liệu, chúng tôi sẽ bỏ qua trong tệp. Tất cả các giải thích về cấu trúc dữ liệu này sẽ làm chậm đáng kể việc sao lưu. Khôi phục thậm chí còn thú vị hơn, bởi vì có rất nhiều cấu trúc sẽ phải sửa ba để tính toán các lỗ hổng trong bản sao lưu. Mặt khác, bạn có các bản đồ phân bổ trỏ đến các trang không được sao lưu và vì vậy có rác trong đó, v.v. Vì vậy, thực hiện điều này có nghĩa là chúng tôi sẽ tiết kiệm ít dữ liệu hơn, mất nhiều thời gian hơn và mất nhiều thời gian hơn lâu hơn khôi phục nó. Các khía cạnh khác để xem xét là điều này sẽ mất một lượng lớn nỗ lực kỹ thuật để làm cho nó ổn. Mặc dù đó không phải là vấn đề của bạn trên bề mặt, hãy xem xét rằng điều đó có nghĩa là các tính năng khác mà bạn có thể muốn thấy sẽ không được xây dựng.


Đây sẽ không phải là một vấn đề cho các chỉ mục toàn văn, phải không? Những người có xu hướng khá lớn.
Michael Teper

1

có thể là một ý tưởng điên rồ, nhưng ở đây đi.

  1. thả các chỉ mục không phân cụm của bạn chiếm nhiều không gian
  2. làm một bản sao lưu
  3. tạo lại các chỉ mục bạn đã đánh rơi

Tất nhiên bạn chỉ có thể thực sự làm điều này nếu cơ sở dữ liệu của bạn cho phép một số thời gian trong ngày.

Ngoài ra, đừng bỏ các chỉ mục được nhóm của bạn vì SQL Server sẽ lãng phí rất nhiều thời gian để chuyển đổi chúng thành một đống.

Có phải mua thêm không gian đĩa có vẻ như là một giải pháp dễ dàng hơn?

Bạn đã xem xét thực hiện sao lưu nén ? đây là một tính năng mới của năm 2008, nó có thể là một lựa chọn cho bạn.


Có, chúng tôi đã bật tính năng nén để sao lưu, nhưng tính năng nén tích hợp không phải là tuyệt vời. Chúng tôi thực sự có một bản sao lưu cuối tuần, không nén và sau đó 7zip để các nhà phát triển của chúng tôi đưa xuống; kích thước chỉ bằng 1/3, nhưng phải mất một thời gian để chạy!
Jarrod Dixon

Đối với thời gian chết DB, chúng ta có thể thực sự sống mà không cần cả serverfault.comstackoverflow.com không? Tôi rùng mình khi nghĩ về điều đó :)
Jarrod Dixon

Tôi đã không tự mình kiểm tra, nhưng tôi nghi ngờ rất nhiều. Nó không phải là rất cấu hình. Nếu bạn vẫn đang xem nén như một tùy chọn, hãy xem SQL Lightspeed (đắt, nhưng tuyệt vời, nhưng giá rất dễ thương) và Sao lưu SQL của RedGate. Rất có thể cấu hình và kết quả tuyệt vời
Nick Kavadias
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.