Các kế hoạch bảo trì trong SQL Server cung cấp cho chúng tôi một cách dễ dàng để tổ chức, cấu hình và lập lịch các tác vụ để đảm bảo rằng công cụ cơ sở dữ liệu và các cơ sở dữ liệu được lưu trữ trong đó được giữ nguyên.
Kế hoạch bảo trì cung cấp cho người quản trị cơ sở dữ liệu cơ hội để định cấu hình các tác vụ chính như lập chỉ mục, cập nhật thống kê, sao lưu, dọn dẹp nhật ký và các tác vụ khác. Trong bài viết trước, chúng ta đã thảo luận về cách tạo một kế hoạch bảo trì cơ bản để thực hiện kiểm tra tính nhất quán của cơ sở dữ liệu. Trong bài viết này, chúng tôi sẽ hướng dẫn cách tạo một kế hoạch bảo trì cho một phiên bản cơ sở dữ liệu đang lưu trữ các cơ sở dữ liệu nhỏ. Trong quá trình hướng dẫn, tôi sẽ giải thích các lựa chọn chính được thực hiện trong mỗi bước trong ngữ cảnh của một trường hợp có số lượng lớn vừa phải là nhỏ cơ sở dữ liệu. Ý tưởng là định cấu hình bảo trì cho các cơ sở dữ liệu này mà không cần phải thực hiện từng việc một. Việc tập trung vào các cơ sở dữ liệu nhỏ nhằm tránh chi phí hiệu suất liên quan đến các hoạt động bảo trì.
Kế hoạch bảo trì cho các công việc hàng tuần
Hình 1:Khởi chạy trình hướng dẫn kế hoạch bảo trì
Chúng tôi khởi chạy Trình hướng dẫn kế hoạch bảo trì từ Object Explorer> [Tên phiên bản]> Quản lý> Kế hoạch bảo trì (Xem Hình 1). Trang đầu tiên của trình hướng dẫn cung cấp cho chúng ta tổng quan về những tác vụ có thể được cấu hình. Mặc dù có những cách khác để hoàn thành những tác vụ này bằng cách sử dụng mã và lập lịch công việc, Trình hướng dẫn kế hoạch bảo trì giúp bạn thực hiện khá dễ dàng khi xử lý một số lượng lớn cơ sở dữ liệu được lưu trữ trên một phiên bản.
Hình 2:Trình hướng dẫn kế hoạch bảo trì
Trong Hình 3, chúng ta thấy SQL Server hiển thị các trường để chúng ta đặt tên và mô tả Kế hoạch bảo trì. Nhập mô tả của kế hoạch có ý nghĩa cho các mục đích tài liệu. Hãy tưởng tượng tiếp quản một phiên bản SQL Server mới tại một công ty mới. Sẽ rất hữu ích nếu bạn tìm thấy mô tả của các đối tượng SQL Server trong các đối tượng. Bạn cũng nên làm như vậy đối với những người khác. Xin lưu ý rằng mô tả tôi đã đưa ra chỉ nhằm minh họa cho điểm. Mô tả chi tiết hơn sẽ được mong muốn trong môi trường sản xuất.
Hình 3:Đặt tên cho Kế hoạch Bảo trì
Lưu ý rằng trong Hình 3, chúng ta có tùy chọn để chọn xem chúng ta muốn sử dụng một lịch biểu duy nhất cho tất cả các tác vụ hay một lịch biểu riêng cho từng tác vụ. Tôi đã chọn sử dụng các lịch trình riêng biệt để có thể linh hoạt trong việc sắp xếp các nhiệm vụ một cách linh hoạt. Chúng tôi sẽ không muốn quá nhiều hoạt động bảo trì chạy đồng thời hoặc liên tục trong một thời gian dài để tránh nguy cơ quá tải tài nguyên máy chủ. Quyết định bạn đưa ra tại thời điểm này cũng có thể phụ thuộc vào khả năng của các nguồn lực sẵn có cho bạn và thời hạn bảo trì có sẵn. Một số người có đủ năng lực và muốn hoàn thành công việc một cách nhanh chóng trong mỗi lần chạy. Trong tình huống được đề cập trong bài viết này, chúng tôi giả định rằng phiên bản được đề cập không được sử dụng vào cuối tuần.
Trong Hình 4, chúng tôi chọn các tác vụ mà chúng tôi muốn thực thi. Một trong những điều tuyệt vời về SQL Server là mỗi tác vụ được mô tả ở cuối cửa sổ. Nó trả tiền khi làm việc như một DBA để hiểu những gì bạn đang làm ngay cả khi làm việc trên “Windows”. Theo kinh nghiệm của tôi, nhiều “quản trị viên” có thói quen chỉ cần nhấp vào “TIẾP THEO, TIẾP THEO, TIẾP THEO” vì họ đang vội vàng để chức năng hoạt động. Nhưng dành thời gian để hiểu tác động của “TIẾP THEO” tiếp theo sẽ giúp đảm bảo rằng bạn đang làm điều gì đó sẽ gia tăng giá trị chứ không gây ra vấn đề mới.
Hình 4:Chọn Nhiệm vụ Bảo trì
Các tác vụ chúng tôi đã chọn được mô tả như sau:
Kiểm tra tính toàn vẹn của cơ sở dữ liệu nhiệm vụ thực hiện kiểm tra tính nhất quán nội bộ của dữ liệu và các trang chỉ mục trong cơ sở dữ liệu.
Chỉ mục sắp xếp lại phân mảnh nhiệm vụ và các chỉ mục thu gọn được nhóm và không nhóm trên các bảng và dạng xem. Điều này sẽ cải thiện hiệu suất quét chỉ mục.
Chỉ mục tạo lại nhiệm vụ sắp xếp lại dữ liệu trên các trang dữ liệu và chỉ mục bằng cách xây dựng lại các chỉ mục. Điều này cải thiện hiệu suất của quá trình quét và tìm kiếm chỉ mục. Tác vụ này cũng tối ưu hóa việc phân phối dữ liệu và không gian trống trên các trang chỉ mục, cho phép tăng trưởng nhanh hơn trong tương lai.
Cập nhật số liệu thống kê đảm bảo trình tối ưu hóa truy vấn có thông tin cập nhật về việc phân phối các giá trị dữ liệu trong các bảng. Điều này cho phép trình tối ưu hóa đưa ra đánh giá tốt hơn về các chiến lược truy cập dữ liệu.
Xóa lịch sử tác vụ xóa dữ liệu lịch sử về các hoạt động Sao lưu và Khôi phục, Tác nhân SQL Server và Kế hoạch bảo trì. Trình hướng dẫn này cho phép bạn chỉ định loại và độ tuổi của dữ liệu sẽ bị xóa.
Cơ sở dữ liệu sao lưu (Đầy đủ) nhiệm vụ cho phép bạn chỉ định cơ sở dữ liệu nguồn, tệp đích hoặc băng và ghi đè các tùy chọn để có bản sao lưu đầy đủ.
Dọn dẹp Bảo trì nhiệm vụ xóa các tệp còn sót lại sau khi thực hiện kế hoạch bảo trì.
Hình 5 cho thấy nơi chúng tôi chọn thứ tự thực hiện các tác vụ này. Điều này quan trọng vì một vài lý do. Ví dụ:không có ý nghĩa gì khi thực hiện cập nhật thống kê chỉ mục sau khi xây dựng lại chỉ mục vì xây dựng lại chỉ mục cũng thực hiện cập nhật thống kê chỉ mục trong SQL Server. Chúng ta sẽ xem phần sau của bài viết cách chúng ta xử lý vấn đề này theo thứ tự mà chúng ta đã chọn. Một cân nhắc khác có thể xảy ra là bạn có thể quyết định rằng việc thực hiện sao lưu trước hợp lý hơn trước khi tiến hành các loại bảo trì nhất định.
Hình 5:Thứ tự nhiệm vụ
Trong Hình 6, chúng tôi chọn cơ sở dữ liệu nào chúng tôi muốn áp dụng tác vụ bảo trì đầu tiên. Chúng tôi cũng phải làm điều này cho từng nhiệm vụ tiếp theo. Điều này quan trọng theo nghĩa là một số cơ sở dữ liệu có thể cần được miễn trừ khỏi các hoạt động như vậy. Ví dụ:khi bạn có sự kết hợp của Cơ sở dữ liệu rất lớn (VLDB) và cơ sở dữ liệu rất nhỏ trong cùng một trường hợp (bản thân nó là một ý tưởng tồi), bạn có thể cần phải loại trừ các VLDB khỏi các bản xây dựng lại chỉ mục hoàn toàn mù mịt. Trong trường hợp như vậy, bạn cần xác định các bảng chính trong VLDB đó và tập trung các bản xây dựng lại và các hoạt động bảo trì chuyên sâu khác vào các bảng chính. Trong ví dụ này, tôi đã loại trừ cơ sở dữ liệu hệ thống vì tôi có thể lập kế hoạch bảo trì cẩn thận cho chúng một cách riêng biệt. Tôi tin rằng sẽ an toàn hơn nếu xử lý các cơ sở dữ liệu hệ thống một cách riêng biệt, vì bất kỳ thiệt hại nào đối với chúng có thể ảnh hưởng đến toàn bộ phiên bản.
Hình 6:Xác định Phạm vi
Mỗi hoạt động bảo trì có một tập hợp các tùy chọn riêng. Hình 7 cho thấy các tùy chọn mà chúng ta phải quyết định cho DBCC CHECKDB. Tôi đã hơi lệch so với cài đặt mặc định bằng cách tăng MAXDOP lên 2. Trong Hình 8, chúng tôi chọn chạy tác vụ này lúc 1:00 sáng vào các đêm Thứ Bảy và Chủ Nhật.
Hình 7:Tùy chọn DBCC
Hình 8:Lịch biểu DBCC
Nhiệm vụ Tổ chức lại Chỉ mục cũng có một tập hợp các tùy chọn cụ thể. Đáng nói là tập hợp các điều kiện sẽ xác định liệu một chỉ mục có nên được tổ chức lại hay không - Phân mảnh 30%, số lượng hơn 1000 trang và được sử dụng lại lần cuối nhiều nhất là 28 ngày. Cửa sổ này nhấn mạnh sự cần thiết phải hiểu các tùy chọn mà chúng tôi đang thực hiện. Để thực hiện các tùy chọn này một cách chính xác, bạn cần hiểu về các chỉ mục và lập chỉ mục ở mức độ hợp lý. Lưu ý rằng các lựa chọn tương tự sẽ cần được thực hiện trong Nhiệm vụ xây dựng lại chỉ mục. Ngoài ra, hãy lưu ý rằng ngưỡng phân mảnh được đề xuất cho Tổ chức lại chỉ mục thực tế là 15% chứ không phải 30%.
Hình 9:Tổ chức lại các tùy chọn chỉ mục
Nhiệm vụ xây dựng lại chỉ mục cung cấp một số tùy chọn khác bổ sung cho các tùy chọn đó để Sắp xếp lại chỉ mục. (Xem Hình 10). Lưu ý rằng tôi đã chọn sắp xếp kết quả trong TempDB. Để lựa chọn này có hiệu quả, điều quan trọng là phải điều chỉnh TempDB một cách thích hợp vì lựa chọn ngụ ý rằng việc sắp xếp cho hoạt động này trong TẤT CẢ cơ sở dữ liệu sẽ xảy ra trong TempDB. Ngoài ra, chúng ta phải thiết lập lịch trình xây dựng lại chỉ mục. Tôi cũng đã đặt MAXDOP thành 2 cho tác vụ này.
Hình 10:Các tùy chọn chỉ mục xây dựng lại
Chúng tôi đã đề cập trước đó rằng khi xây dựng lại chỉ mục được gọi trong SQL Server, cập nhật thống kê về chỉ mục cũng được gọi theo mặc định. Vì vậy, khi chúng tôi định cấu hình Nhiệm vụ cập nhật thống kê, chúng tôi chọn chỉ cập nhật thống kê cột (Hình 11). Cửa sổ này cũng cung cấp cho chúng tôi tùy chọn quét toàn bộ hoặc lấy mẫu. Vì bối cảnh là cơ sở dữ liệu nhỏ, chúng tôi chọn tùy chọn quét toàn bộ. Một lần nữa, điều này đòi hỏi một số hiểu biết về số liệu thống kê.
Hình 11:Nhiệm vụ cập nhật số liệu thống kê
Chúng tôi chọn cấu hình công việc dọn dẹp để xóa bất kỳ dữ liệu nào cũ hơn 4 tuần, như trong Hình 12.
Hình 12:Nhiệm vụ dọn dẹp lịch sử
Nhiệm vụ sao lưu hiển thị khá nhiều tùy chọn cấu hình trong ba tab! Hình 13 cho thấy rằng chúng tôi chọn giới hạn tác vụ sao lưu này đối với cơ sở dữ liệu người dùng. Chúng tôi lên lịch cho nó vào 3:00 sáng Chủ nhật và chúng tôi đi xa hơn để chọn đích sao lưu là E:\ MSSQL \ Backup (Xem Hình 14). Trong tab thứ ba (Hình 15), chúng tôi thực hiện các lựa chọn để xác minh bản sao lưu và cũng thực hiện tổng kiểm tra, vì vậy chúng tôi sắp đảm bảo bản sao lưu là đáng tin cậy.
Hình 13:Tác vụ sao lưu cơ sở dữ liệu
Hình 14:Đích dự phòng
Hình 15:Các tùy chọn sao lưu
Cuối cùng, chúng tôi định cấu hình một tác vụ sẽ quản lý việc lưu giữ nhật ký Kế hoạch bảo trì của chúng tôi. (Hình 16). Một lần nữa, chúng tôi chọn xóa bất kỳ bản ghi nhật ký nào cũ hơn 4 tuần. Hình 17 cho thấy các tùy chọn mà chúng tôi chọn để đảm bảo các hoạt động của Kế hoạch Bảo trì được ghi nhật ký cũng như được gửi qua đường bưu điện đến nhóm Quản trị Cơ sở dữ liệu. Tất nhiên, để tùy chọn cuối cùng này hoạt động, chúng ta phải định cấu hình Thư cơ sở dữ liệu và thiết lập các toán tử một cách chính xác.
Hình 16:Nhiệm vụ Dọn dẹp Kế hoạch Bảo trì
Hình 17:Tùy chọn Báo cáo
Hình 18 và 19 trình bày tóm tắt các tác vụ chúng tôi đã định cấu hình và phản hồi về việc hoàn thành thành công trình hướng dẫn.
Hình 18:Tóm tắt các tùy chọn
Hình 19:Hoàn thành Wizard
Kế hoạch bảo trì cho các công việc hàng ngày
Chúng tôi cũng có thể thiết lập các Kế hoạch bảo trì riêng biệt cho các mục đích khác, chẳng hạn như đơn giản là được tổ chức. Chúng tôi không cần thiết lập một kế hoạch riêng cho Công việc hàng ngày vì chúng tôi có thể định cấu hình lịch biểu riêng cho từng công việc. Một lý do mà chúng tôi có thể muốn thiết lập một kế hoạch riêng có thể là chọn một nhóm nhiệm vụ khác nhắm mục tiêu vào một nhóm cơ sở dữ liệu khác (trên thực tế, chúng tôi vẫn có thể thực hiện việc này trong kế hoạch hiện có).
Trong ví dụ sau, giả sử chúng ta có một tập hợp cơ sở dữ liệu lớn khác trong cùng một trường hợp có các Mục tiêu Điểm khôi phục khác nhau. Sau đó, chúng tôi cần sử dụng chiến lược dự phòng khác - lịch trình Sao lưu chênh lệch hàng ngày và lịch trình Sao lưu nhật ký giao dịch hàng giờ cùng với bản sao lưu đầy đủ hàng tuần để đảm bảo RPO là 1 giờ. (Xem Hình 21 và 22).
Hình 20:Kế hoạch duy trì nhiệm vụ hàng ngày
Hình 21:Nhiệm vụ sao lưu Tlog và Differential
Hình 22:Thứ tự nhiệm vụ kế hoạch bảo trì hàng ngày
Đối với Dự phòng chênh lệch, chúng tôi chọn lịch hàng ngày được kích hoạt vào lúc 2:00 sáng hàng ngày. (Xem Hình 23). Và chọn các tùy chọn sao lưu giống như chúng tôi đã làm cho Sao lưu hàng tuần đầy đủ được định cấu hình trước đó.
Hình 23:Lịch trình Kế hoạch Bảo trì Hàng ngày
Hình 24:Vị trí sao lưu khác biệt
Hình 25:Các tùy chọn sao lưu khác biệt
Mặt khác, chúng tôi chọn lập lịch sao lưu vi sai xảy ra hàng giờ mỗi ngày. Chúng tôi cũng đảm bảo mỗi bộ sao lưu cơ sở dữ liệu được lưu trữ trong một thư mục có tên riêng. Phần còn lại của trình hướng dẫn giống với hướng dẫn trước đó.
Hình 26:Lịch trình sao lưu nhật ký giao dịch
Hình 27:Vị trí sao lưu nhật ký giao dịch
Hình 28:Các tùy chọn sao lưu nhật ký giao dịch
Kết luận
Khi hoàn thành Trình hướng dẫn kế hoạch bảo trì, chúng tôi kết thúc với một Kế hoạch bảo trì và một tập hợp các Công việc tác nhân SQL tương ứng (Xem Hình 29). Về cơ bản, Kế hoạch bảo trì là một tập hợp các gói SSIS và khi bạn kiểm tra các công việc đã lên lịch, bạn sẽ thấy rằng bước công việc được thực hiện trong mỗi công việc kế hoạch phụ là một Gói SSIS (Xem Hình 30).
Trong một ví dụ tiếp theo, chúng tôi sẽ chỉ ra rằng chúng tôi có thể thực hiện các công việc kế hoạch phụ hàng năm. Chúng tôi cũng sẽ xem xét kết quả thực hiện kế hoạch bảo trì và khắc phục các lỗi liên quan đến thực hiện các bước công việc. Chúng tôi cũng sẽ kiểm tra Nhật ký kế hoạch bảo trì.
Hình 29:Kết quả Công việc Tác nhân SQL
Hình 30:Bước Công việc Gói SSIS