Trong bài viết này, chúng tôi sẽ thảo luận về một số vấn đề mà bạn có thể gặp phải khi tạo, định cấu hình hoặc duy trì trang web Nhóm Luôn sẵn sàng.
Trước khi xem qua bài viết này, bạn nên đọc bài viết trước, Thiết lập và Định cấu hình Nhóm Luôn sẵn sàng trong SQL Server, để làm quen với khái niệm Nhóm Luôn sẵn sàng và trình hướng dẫn Nhóm Tính sẵn sàng Mới được hiển thị trong bài viết này.
Luôn bật Tính năng Nhóm Khả dụng Không được Bật
Giả sử rằng, trong khi cố gắng tạo một Nhóm Luôn sẵn sàng mới, từ nút Luôn sẵn sàng Cao, trong Trình khám phá Đối tượng của SQL Server Management Studio, bạn gặp phải thông báo lỗi bên dưới:
Tính năng Nhóm luôn sẵn sàng phải được bật cho phiên bản máy chủ 'SQL1' trước khi bạn có thể tạo nhóm khả dụng trên phiên bản này. Để bật tính năng này, hãy mở Trình quản lý Cấu hình Máy chủ SQL, chọn Dịch vụ Máy chủ SQL, bấm chuột phải vào tên dịch vụ Máy chủ SQL, chọn Thuộc tính và sử dụng tab Nhóm Luôn sẵn sàng của hộp thoại Thuộc tính Máy chủ. Bật nhóm Luôn bật sẵn sàng có thể yêu cầu phiên bản máy chủ được lưu trữ bởi nút Cụm chuyển đổi dự phòng Windows Server (WSFC). (Microsoft.SqlServer.Management.HadrTasks)
Rõ ràng từ thông báo lỗi rằng, tính năng Nhóm luôn sẵn sàng phải được bật trên mỗi phiên bản Máy chủ SQL tham gia vào trang web Nhóm luôn sẵn sàng, trước khi tạo trang web đó.
Bạn có thể dễ dàng bật tính năng Nhóm luôn sẵn sàng, bằng cách mở bảng điều khiển Trình quản lý cấu hình SQL Server, duyệt qua tab Dịch vụ Máy chủ SQL, sau đó nhấp chuột phải vào dịch vụ SQL Server Database Engine và chọn tùy chọn Thuộc tính.
Từ cửa sổ Thuộc tính máy chủ SQL đã mở, di chuyển đến tab Luôn ở trạng thái sẵn sàng cao và chọn hộp kiểm bên cạnh Bật nhóm Luôn sẵn sàng , lưu ý rằng thay đổi này yêu cầu khởi động lại dịch vụ SQL Server để có hiệu lực, như được hiển thị bên dưới:
Vấn đề xác thực cơ sở dữ liệu điều kiện tiên quyết
Trong các bước trước đó của trình hướng dẫn Nhóm Tính sẵn sàng Mới, bạn sẽ được yêu cầu chỉ định (các) cơ sở dữ liệu sẽ tham gia vào Nhóm Luôn sẵn sàng. Trước khi thêm cơ sở dữ liệu, cơ sở dữ liệu phải vượt qua kiểm tra xác thực điều kiện tiên quyết. Nếu không, cơ sở dữ liệu không thể được chọn từ danh sách cơ sở dữ liệu, như được hiển thị trong thông báo lỗi bên dưới:
Để được thêm vào nhóm khả dụng, cơ sở dữ liệu này phải được đặt thành mô hình khôi phục đầy đủ. Đặt thuộc tính cơ sở dữ liệu Mô hình Phục hồi thành Đầy đủ và thực hiện sao lưu cơ sở dữ liệu đầy đủ hoặc khác biệt trên cơ sở dữ liệu. Sau đó, bạn sẽ cần lên lịch sao lưu nhật ký trên cơ sở dữ liệu.
Thông điệp rõ ràng. Nơi cơ sở dữ liệu nên được định cấu hình bằng mô hình khôi phục Toàn bộ và sao lưu Toàn bộ hoặc Khác biệt phải được thực hiện trên cơ sở dữ liệu đó.
Ngoài ra, trình hướng dẫn cũng cảnh báo bạn lên lịch sao lưu nhật ký giao dịch cho cơ sở dữ liệu đó sau khi thay đổi mô hình khôi phục thành Đầy đủ, để tự động cắt bớt tệp nhật ký giao dịch và ngăn việc chạy tệp nhật ký giao dịch đó hết dung lượng trống.
Để khắc phục sự cố đó, hãy thay đổi mô hình khôi phục cơ sở dữ liệu từ Đơn giản thành Đầy đủ, từ tab Tùy chọn của cửa sổ thuộc tính cơ sở dữ liệu, sau đó sao lưu Toàn bộ từ cơ sở dữ liệu đó, như được hiển thị bên dưới:
Làm mới cửa sổ Chọn cơ sở dữ liệu, trạng thái cơ sở dữ liệu sẽ được thay đổi thành Đáp ứng điều kiện tiên quyết, như được hiển thị bên dưới:
Vấn đề về quyền đối với vị trí mạng được chia sẻ
Trong khi cố gắng định cấu hình trang web Nhóm luôn sẵn sàng, bước xác thực của trình hướng dẫn Nhóm sẵn có mới không thành công với thông báo lỗi bên dưới:
Máy chủ chính 'SQL1' không thể ghi vào '\\ SQL1 \ AlwaysON \ BackupLocDb_dbb55cb4-af89-4ed3-b189-1fcaad42358c.bak'. (Microsoft.SqlServer.Management.HadrModel)
Không thể sao lưu cho Máy chủ 'SQL1'. (Microsoft.SqlServer.SmoExtended)
Không thể mở thiết bị sao lưu '\\ SQL1 \ AlwaysON \ BackupLocDb_dbb55cb4-af89-4ed3-b189-1fcaad42358c.bak'. Lỗi hệ điều hành 5 (Quyền truy cập bị từ chối.).
CƠ SỞ DỮ LIỆU DỰ PHÒNG đang kết thúc bất thường. (Nhà cung cấp dữ liệu .Net SqlClient)
Trong phương pháp đồng bộ hóa ban đầu của cơ sở dữ liệu đầy đủ và bản ghi sao lưu, cần có một thư mục chia sẻ để tạm thời giữ các tệp sao lưu toàn bộ và bản sao lưu nhật ký giao dịch để khôi phục nó vào tất cả các bản sao thứ cấp. Nếu Bản sao chính không thể ghi các tệp sao lưu vào nó hoặc các bản sao phụ không thể đọc các tệp sao lưu từ nó, thì quá trình xác thực Nhóm khả dụng mới sẽ không thành công như sau:
Để khắc phục sự cố đó, chúng tôi cần cấp cho tài khoản SQL Server Service của các bản sao Chính và Phụ quyền đọc và ghi trên thư mục chia sẻ được hiển thị trong thông báo lỗi, sau đó chạy lại quy trình xác thực, để đảm bảo rằng tất cả các kiểm tra đều thành công. , như hình dưới đây:
Sự cố cụm chuyển đổi dự phòng Windows
Giả sử rằng bạn đang kiểm tra trạng thái của trang web Nhóm luôn sẵn sàng hiện có và thấy rằng:
- Vai trò chính được chuyển từ phiên bản SQL1 sang SQL2.
- Trong SQL2, cơ sở dữ liệu ở trạng thái Đồng bộ hóa.
- Trong SQL1, cơ sở dữ liệu không được đồng bộ hóa.
- SQL1 đang ở trạng thái Đang giải quyết.
Như bạn có thể thấy rõ ràng từ Trình khám phá đối tượng SSMS bên dưới:
Kiểm tra nhật ký Lỗi SQL Server trong nút có vấn đề, chúng ta có thể thấy rằng bản sao Nhóm khả dụng trở nên ngoại tuyến và Nhóm khả dụng ngừng hoạt động do sự cố trong Cụm chuyển đổi dự phòng Windows Server, như được hiển thị trong các lỗi bên dưới:
- Nhóm Luôn sẵn sàng: Nút cụm chuyển đổi dự phòng máy chủ Windows cục bộ không còn trực tuyến nữa . Đây là tin nhắn mang thông tin đơn thuần. Người dùng không cần thực hiện hành động nào.
- Luôn Bật:Trình quản lý bản sao tính khả dụng sẽ ngoại tuyến do nút Phân cụm chuyển đổi dự phòng Windows Server (WSFC) cục bộ đã mất số đại biểu. Đây là tin nhắn mang thông tin đơn thuần. Người dùng không cần thực hiện hành động nào.
- Luôn Bật:Bản sao cục bộ của nhóm khả dụng 'DemoGroup' đang dừng. Đây là tin nhắn mang thông tin đơn thuần. Người dùng không cần thực hiện hành động nào.
Điều tương tự cũng có thể được phát hiện từ Trình xem sự kiện của Windows Server, cho thấy dần dần cách bản sao thay đổi trạng thái của nó thành trạng thái Đang giải quyết, như bên dưới:
- Luôn Bật:Bản sao cục bộ của nhóm khả dụng 'DemoGroup' đang chuẩn bị chuyển sang vai trò phân giải . Đây là tin nhắn mang thông tin đơn thuần. Người dùng không cần thực hiện hành động nào.
- Nhóm khả dụng 'DemoGroup' đang được yêu cầu ngừng gia hạn hợp đồng thuê vì nhóm khả dụng đang ngoại tuyến . Đây là tin nhắn mang thông tin đơn thuần. Người dùng không cần thực hiện hành động nào.
- Trạng thái của bản sao tình trạng còn hàng cục bộ trong nhóm khả dụng 'DemoGroup' đã thay đổi từ 'PRIMARY_NORMAL' thành 'RESOLVING_NORMAL'. Trạng thái đã thay đổi vì nhóm khả dụng đang ngoại tuyến. Bản sao sẽ ngoại tuyến vì nhóm khả dụng được liên kết đã bị xóa hoặc người dùng đã đưa nhóm khả dụng được liên kết vào ngoại tuyến trong bảng điều khiển quản lý Windows Server Failover Clustering (WSFC) hoặc nhóm khả dụng không chuyển sang phiên bản SQL Server khác. Để biết thêm thông tin, hãy xem nhật ký lỗi SQL Server hoặc nhật ký cụm. Nếu đây là nhóm khả dụng của Windows Server Failover Clustering (WSFC), bạn cũng có thể xem bảng điều khiển quản lý WSFC.
Để kiểm tra trạng thái của trang Windows Cluster, chúng tôi sẽ sử dụng Trình quản lý cụm chuyển đổi dự phòng để xem phần nào của Windows Cluster bị lỗi.
Nhưng Trình quản lý cụm chuyển đổi dự phòng cho thấy rằng toàn bộ cụm đều bị lỗi, như được hiển thị bên dưới:
Điều đầu tiên cần xác thực ở đây từ phía Cụm chuyển đổi dự phòng Windows là Dịch vụ cụm, có thể được kiểm tra từ bảng điều khiển Dịch vụ Windows, như bên dưới:
Rõ ràng từ bảng điều khiển Dịch vụ, rằng Dịch vụ Cụm không chạy. Để khắc phục sự cố đó, hãy khởi động dịch vụ từ bảng điều khiển đó, sau đó làm mới bảng điều khiển Trình quản lý cụm chuyển đổi dự phòng để đảm bảo rằng trang Windows Cluster đang hoạt động, như được hiển thị bên dưới:
Kiểm tra lại Nhóm Luôn sẵn sàng, bạn sẽ thấy rằng các cơ sở dữ liệu đã được đồng bộ hóa trở lại và trang web Nhóm Luôn sẵn sàng ở trạng thái hoạt động trở lại, như được hiển thị bên dưới:
Tệp nhật ký giao dịch đã đầy ở phía chính
Giả sử rằng bạn nhận được thông báo lỗi dưới đây khi cố gắng thực hiện một truy vấn mới trên một trong các cơ sở dữ liệu Nhóm Luôn sẵn sàng:
Kiểm tra những gì đang chặn tệp nhật ký giao dịch và ngăn nó bị cắt bớt, bạn sẽ thấy rằng tệp nhật ký giao dịch của cơ sở dữ liệu này đang chờ xử lý sao lưu nhật ký sẽ được cắt ngắn, như được hiển thị bên dưới:
Thực hiện sao lưu nhật ký giao dịch cho cơ sở dữ liệu đó, trong trường hợp bạn quên lên lịch công việc sao lưu nhật ký giao dịch, như sau:
Và kiểm tra lại xem cái gì đang chặn nhật ký giao dịch của cơ sở dữ liệu đó, nó đang hiển thị trong kịch bản của tôi rằng, nó đang đợi Av Available_Replica. Điều đó có nghĩa là nhật ký đang chờ được ghi vào bản sao thứ cấp, nhưng không thể gửi các bản ghi giao dịch này đến bản sao thứ cấp do sự cố trong trang web Nhóm luôn sẵn sàng, như bên dưới:
Vị trí tốt nhất để kiểm tra và khắc phục sự cố trang web Nhóm luôn sẵn sàng là Trang tổng quan luôn bật, có thể được mở bằng cách nhấp chuột phải vào tên Nhóm khả dụng và chọn tùy chọn Hiển thị trang tổng quan.
Từ trang tổng quan, bạn có thể thấy rằng SQL2 bản sao phụ không được đồng bộ hóa với bản sao chính, do sự cố kết nối, như được hiển thị bên dưới:
Kiểm tra bản sao phụ và đảm bảo rằng Dịch vụ máy chủ SQL được thiết lập và đang chạy ở phía thứ cấp, như sau:
Sau đó, làm mới lại bảng điều khiển Nhóm sẵn sàng, bạn sẽ thấy rằng trang web Nhóm luôn sẵn sàng hoạt động trở lại. Kiểm tra xem tệp nhật ký giao dịch có bị chặn bởi bất kỳ thao tác nào hay không, chúng ta sẽ thấy rằng tệp OLDEST_PAGE đang chờ xử lý, cho biết rằng trang cũ nhất của cơ sở dữ liệu cũ hơn LSN của trạm kiểm soát. Sự cố này có thể được khắc phục dễ dàng bằng cách thực hiện một bản sao lưu nhật ký giao dịch khác và tệp nhật ký giao dịch sẽ không bị chặn bởi thứ gì, như được minh họa bên dưới:
Luôn cấu hình sai chuyển đổi dự phòng nhóm khả dụng
Giả sử rằng bản sao Chính trở nên ngoại tuyến do sự cố ngoài kế hoạch. Theo dự kiến, hệ thống sẽ không bị ảnh hưởng vì hoạt động chuyển đổi dự phòng tự động sẽ được thực hiện và bản sao thứ cấp sẽ hoạt động như bản sao Chính mới.
Nhưng trong trường hợp của chúng tôi, kịch bản vui vẻ này không hợp lệ, trong đó bản sao thứ cấp đã thay đổi thành trạng thái Đang giải quyết và hệ thống không hoạt động!
Kiểm tra nhật ký lỗi của bản sao thứ cấp và xem tại sao nó không hoạt động như Bản sao chính mới như mong đợi, bạn sẽ thấy rằng bản sao đó không thành công do sự cố đồng bộ hóa vai trò, như được hiển thị bên dưới:
Cơ sở dữ liệu nhóm khả dụng "AdventureWorks2017" đang thay đổi vai trò từ "SECONDARY" thành "RESOLVING" vì phiên sao chép hoặc nhóm khả dụng không thành công do đồng bộ hóa vai trò. Đây là tin nhắn mang thông tin đơn thuần. Người dùng không cần thực hiện hành động nào.
Điều này có nghĩa là có vấn đề với chế độ đồng bộ hóa được sử dụng trong Nhóm sẵn sàng này. Có thể kiểm tra chế độ đồng bộ hóa được sử dụng từ trang thuộc tính Nhóm luôn sẵn sàng.
Từ trang thuộc tính bên dưới, rõ ràng là chế độ Chuyển đổi dự phòng trong Nhóm khả dụng này được định cấu hình để chỉ được thực hiện theo cách Thủ công. Trong trường hợp này, bạn cần thực hiện thao tác chuyển đổi dự phòng theo cách thủ công trước khi khởi động lại hoặc tắt máy chủ:
Điều này có thể được khắc phục dễ dàng bằng cách thay đổi Chế độ chuyển đổi dự phòng thành Tự động, nơi hoạt động chuyển đổi dự phòng tự động sẽ được thực hiện trong trường hợp tắt hoặc khởi động lại không có kế hoạch:
Vấn đề tương tự cũng có thể gặp phải khi nhóm túc số Dự phòng Windows được định cấu hình với Node Majority cho một số lượng bản sao chẵn, trong đó bất kỳ lỗi nào đối với một trong các máy chủ sẽ khiến trang web Cụm chuyển đổi dự phòng Windows ngoại tuyến. Để biết thêm thông tin, hãy kiểm tra Chế độ số lượng cụm chuyển đổi dự phòng của Windows trong Nhóm luôn sẵn sàng sử dụng SQL Server:
Chuyển đổi dự phòng khi mất dữ liệu
Giả sử rằng bạn đang cố gắng thực hiện chuyển đổi dự phòng thủ công giữa Bản sao chính và một trong các bản sao Thứ cấp, nhưng trong cửa sổ Chọn bản sao chính mới, bạn thấy thông báo cảnh báo rằng thao tác chuyển đổi dự phòng có thể dẫn đến mất dữ liệu như Bản chính và bản sao đã chọn Bản sao thứ cấp không được đồng bộ hóa, như được hiển thị bên dưới:
Để xác định nguyên nhân của vấn đề đó, chúng tôi sẽ duyệt qua các sự kiện Luôn hoạt động bằng cách sử dụng bảng điều khiển Nhóm Luôn sẵn sàng, cho thấy rằng Bản sao chính không thể mở kết nối với Bản sao phụ, tro được hiển thị bên dưới:
Sau khi khắc phục sự cố kết nối giữa Thiết bị chính và Thiết bị phụ, hãy làm mới danh sách bản sao và bạn sẽ thấy rằng vấn đề mất dữ liệu đã được khắc phục, như được hiển thị bên dưới. Để biết thêm thông tin về cách khắc phục sự cố kết nối, hãy kiểm tra Khắc phục sự cố kết nối với Công cụ cơ sở dữ liệu máy chủ SQL.
Luôn theo dõi Độ trễ của Nhóm Khả dụng
Bảng điều khiển Nhóm khả dụng có thể được sửa đổi để bao gồm các cột bổ sung cung cấp thông tin về độ trễ đồng bộ hóa giữa các bản sao Chính và Phụ, bao gồm LSN Cam kết, LSN đã gửi và các giá trị LSN cứng, mà không hiển thị lý do tại sao có độ trễ, như được hiển thị bên dưới:
Để biết thêm thông tin về cách đo độ trễ, hãy kiểm tra độ trễ đồng bộ hóa Nhóm khả dụng đo.
Bắt đầu từ SSMS 17.4, bảng điều khiển Nhóm Luôn sẵn sàng được cải tiến để bao gồm hai tùy chọn mới được sử dụng để tính toán, phân tích và báo cáo thông tin về độ trễ, giúp xác định các nút thắt trong luồng nhật ký giao dịch giữa các bản sao Chính và Phụ và thu hẹp nguyên nhân của độ trễ đó.
Để biết thêm thông tin về chức năng và báo cáo mới, hãy kiểm tra Sử dụng trang tổng quan Nhóm Luôn sẵn sàng.
Để kích hoạt bằng cách sử dụng tùy chọn mới này, hãy nhấp vào Thu thập dữ liệu độ trễ từ bảng điều khiển Nhóm Luôn sẵn sàng, sẽ tạo một công việc SQL Agent mới trên các bản sao Chính và Phụ để thu thập dữ liệu độ trễ, Như được hiển thị bên dưới:
Khi quá trình thực thi công việc đã tạo đã hoàn tất trên tất cả các bản sao của Nhóm Tính khả dụng, bạn sẽ có thể xem thống kê độ trễ từ các báo cáo độ trễ bằng cách nhấp chuột phải vào tên Nhóm Khả dụng và chọn báo cáo Độ trễ Bản sao Chính hoặc Độ trễ Bản sao Thứ cấp, dựa trên vai trò bản sao trong Nhóm sẵn có.
Sau khi cung cấp thông tin về các bản sao Nhóm khả dụng, báo cáo độ trễ sẽ hiển thị dạng xem đồ họa về thời gian cam kết nhật ký giao dịch trên bản sao Chính và thời gian Làm cứng từ xa cho các bản sao thứ cấp, được tổng hợp dưới dạng giá trị trung bình. Ngoài ra, báo cáo cung cấp các giá trị thống kê cho các nhật ký giao dịch gửi, nhận, cam kết, nén, giải nén và các giá trị số khác dựa trên vai trò bản sao trong Nhóm sẵn có.
Để biết thêm thông tin về báo cáo độ trễ, hãy kiểm tra Mới trong SSMS - Báo cáo độ trễ nhóm luôn sẵn sàng.
Báo cáo dưới đây là một ví dụ về báo cáo độ trễ được tạo từ Bản sao phụ, hiển thị các hoạt động vận chuyển nhật ký bình thường:
Ngoài ra, Độ trễ của khối nhật ký báo cáo cho biết lượng thời gian, tính bằng mili giây, nhật ký giao dịch trên bản sao Chính chờ các bản sao Thứ cấp thực hiện giao dịch đó. Sau khi bật nó từ Trang tổng quan nhóm sẵn có, bạn có thể duyệt nó từ SSMS tương tự như các báo cáo độ trễ trước đó. Hãy lưu ý rằng, thời gian trễ lớn cho thấy rằng Bản sao chính đang đợi một thời gian dài để Bản sao phụ thực hiện các giao dịch đã gửi, như được hiển thị bên dưới: