Trong bài viết trước, Thiết lập và Định cấu hình SQL Server Replication, chúng ta đã thảo luận sâu về khái niệm SQL Server Replication, các thành phần, kiểu của nó và cách định cấu hình SQL Transactional Replication từng bước. Chúng tôi khuyên bạn nên xem qua bài viết trước và hiểu khái niệm nhân bản và các thành phần của nó trước khi đọc bài viết này. Trong bài viết này, chúng ta sẽ xem cách khắc phục sự cố trang web Sao chép máy chủ SQL hiện có.
Tổng quan về khắc phục sự cố
Mục tiêu chính của SQL Server Replication là giữ cho dữ liệu trong Publisher và Subscriber được đồng bộ hóa. Trong trường hợp tốt, nếu một giao dịch được thực hiện và được cam kết tại cơ sở dữ liệu xuất bản, giao dịch đó sẽ được sao chép vào cơ sở dữ liệu phân phối sau đó được đồng bộ hóa và áp dụng cho tất cả Người đăng ký được kết nối với Nhà xuất bản đó. Nếu sự cố xảy ra ở bất kỳ bước nào của quy trình này, các thay đổi của Nhà xuất bản sẽ không khả dụng ở phía Người đăng ký. Trong trường hợp này, chúng tôi cần khắc phục sự cố và khắc phục sự cố đó càng sớm càng tốt trước khi kết thúc với một trang web Sao chép SQL hết hạn sẽ được đồng bộ hóa lại từ đầu hoặc cơ sở dữ liệu có tệp nhật ký giao dịch hết dung lượng trống, tạm dừng tất cả các giao dịch cơ sở dữ liệu .
Xác định bước đồng bộ hóa sao chép không thành công và phân bổ thông báo lỗi chỉ dẫn để khắc phục sự cố, là phần thách thức nhất của quy trình khắc phục sự cố sao chép SQL Server. Ngoài ra, kiểm tra thời gian đồng bộ hóa cuối cùng và những thay đổi nào được thực hiện vào / sau thời điểm đó có thể gây ra lỗi này, cũng có thể giúp khắc phục sự cố đồng bộ hóa sao chép.
Hiểu được vai trò của tác nhân sao chép SQL Server sẽ giúp xác định bước đồng bộ hóa không thành công. Nhớ lại rằng có ba tác nhân sao chép phổ biến giữa hầu hết các kiểu Sao chép SQL Server. Tác nhân chụp nhanh chịu trách nhiệm tạo ảnh chụp nhanh đồng bộ hóa ban đầu. Tác nhân đọc nhật ký chịu trách nhiệm đọc các thay đổi từ tệp nhật ký giao dịch cơ sở dữ liệu và sao chép nó vào cơ sở dữ liệu phân phối và cuối cùng là Phân phối đại lý chịu trách nhiệm đồng bộ hóa các thay đổi đối với Người đăng ký.
Trong bài viết này, chúng tôi sẽ tận dụng lợi thế của Trình theo dõi nhân bản và Giám sát hoạt động công việc cửa sổ theo dõi trạng thái Sao chép SQL Server và nhận thông tin về bất kỳ lỗi không đồng bộ hóa nào.
Các tình huống khắc phục sự cố
Cách tốt nhất và đơn giản để hiểu cách khắc phục sự cố SQL Server Replication là cung cấp các tình huống thực tế và chỉ ra cách khắc phục sự cố cụ thể này. Chúng ta hãy bắt đầu thảo luận từng tình huống một.
Sự cố dịch vụ tác nhân SQL Server
Dịch vụ SQL Server Agent đóng một vai trò quan trọng trong quá trình đồng bộ hóa SQL Server Replication. Điều này là do thực tế là mỗi tác nhân nhân bản sẽ chạy dưới một công việc tác nhân SQL.
Là người quản trị cơ sở dữ liệu chủ động, bạn cần phải kiểm tra trạng thái trang web sao chép SQL hàng ngày. Để kiểm tra trạng thái trang web sao chép, hãy nhấp chuột phải vào Ấn phẩm, trong nút Nhân bản -> Ấn phẩm cục bộ và chọn Khởi chạy theo dõi nhân bản tùy chọn, như được hiển thị bên dưới:
Từ cửa sổ Giám sát nhân bản, bạn có thể thấy một thông báo cảnh báo, cho biết rằng bản sao sắp hết hạn hoặc đã hết hạn mà không thấy bất kỳ thông báo lỗi nào, như bên dưới:
Nếu cửa sổ Giám sát nhân bản cung cấp cho chúng tôi không có thông tin hữu ích về lý do tại sao trang web nhân bản sắp hết hạn, bước tiếp theo là kiểm tra Trình giám sát hoạt động công việc dưới nút SQL Server Agent. Truy cập vào nút SQL Server Agent, bạn sẽ thấy trực tiếp rằng SQL Server Agent Service không chạy (từ vòng tròn màu đỏ bên cạnh nó). Nếu SQL Server Agent Service không chạy, điều này có nghĩa là tất cả các công việc được tạo trong phiên bản đó không hoạt động, bao gồm cả các công việc nhân bản. Do đó, trang web nhân rộng tổng thể không hoạt động.
Để khắc phục sự cố đó, chúng tôi cần khởi động trực tiếp dịch vụ SQL Server Agent từ SQL Server Management Studio hoặc sử dụng Trình quản lý cấu hình SQL Server (được khuyến nghị), như được hiển thị bên dưới:
Sau khi khởi động dịch vụ SQL Server Agent, hãy kiểm tra lại Trình giám sát nhân bản và đảm bảo rằng trạng thái Người đăng ký đang Đang chạy và tất cả các giao dịch đang chờ xử lý được đồng bộ hóa với Người đăng ký thành công. Bạn có thể kiểm tra từng bước một bằng cách kiểm tra xem các bản ghi có được sao chép từ phần Nhà xuất bản sang Nhà phân phối hay không:
Sau đó đồng bộ hóa thành công từ Nhà phân phối đến Người đăng ký, như sau:
Và cuối cùng đảm bảo rằng không có giao dịch chưa được phân phối nào từ tab cuối cùng, như được hiển thị bên dưới:
Sau đó, chúng ta cần đảm bảo rằng các công việc của đại lý nhân bản đang hoạt động mà không có vấn đề gì. Các công việc SQL Agent có thể được kiểm tra bằng cách mở rộng nút SQL Server Agent bên dưới SSMS Object Explorer và xem trình giám sát Hoạt động công việc, sau đó kiểm tra xem tác nhân phân phối và trình đọc nhật ký có đang chạy hay không, lưu ý rằng Snapshot Agent sẽ chỉ hoạt động trong thời gian quy trình tạo ảnh chụp nhanh, như được hiển thị bên dưới:
Bạn cũng có thể xem lại lịch sử của các công việc nhân bản và kiểm tra lý do lỗi trước đó, bằng cách nhấp chuột phải vào công việc đó và chọn Xem lịch sử tùy chọn như bên dưới:
Nơi bạn có thể tìm thấy thông báo lỗi chỉ báo giúp khắc phục sự cố này trong tương lai, như bên dưới:
Để khắc phục sự cố trước đó, chế độ khởi động dịch vụ SQL Server Agent nên được thay đổi từ Thủ công sang Tự động, bằng cách này, bạn sẽ đảm bảo rằng dịch vụ sẽ tự động khởi động khi máy chủ lưu trữ được khởi động lại.
Vấn đề về quyền của Snapshot Agent
Giả sử rằng trong khi kiểm tra trạng thái sao chép của SQL Server, bằng cách sử dụng Giám sát sao chép, bạn nhận thấy rằng có lỗi sao chép, từ dấu X bên trong vòng tròn màu đỏ. Và Giám sát nhân bản cho thấy lỗi là do một trong các tác nhân sao chép, từ dấu X bên trong vòng tròn màu đỏ ở đầu tab Tác nhân.
Để xác định lỗi sao chép đó, chúng ta nên duyệt qua tab Đại lý và kiểm tra xem tác nhân nào bị lỗi. Từ trang Đại lý, bạn sẽ thấy rằng Snapshot Agent không thành công. Nhấp đúp vào Snapshot Agent và xem lại thông báo lỗi bên dưới:
Tác nhân tái tạo chưa ghi lại thông báo tiến trình trong 10 phút. Điều này có thể cho thấy một tác nhân không phản hồi hoặc hoạt động hệ thống cao. Xác minh rằng các bản ghi đang được sao chép đến đích và các kết nối với Người đăng ký, Nhà xuất bản và Nhà phân phối vẫn đang hoạt động.
Rất tiếc, thông báo lỗi này là chung chung và nó chỉ cho thấy rằng Snapshot Agent không hoạt động mà không chỉ rõ lý do, như sau:
Sau đó, chúng ta cần tìm kiếm thông tin hữu ích ở một nơi khác, đó là công việc Snapshot Agent. Từ cửa sổ Giám sát Hoạt động Công việc, bên dưới nút Tác nhân Máy chủ SQL, bạn có thể thấy rằng công việc Tác nhân Ảnh chụp không thành công. Và từ lịch sử công việc đó, bạn có thể thấy rằng nó không thành công gần đây, do sự cố xác thực proxy. Nói cách khác, thông tin đăng nhập cho tài khoản mà Tác nhân Ảnh chụp chạy theo đó không chính xác, như được hiển thị bên dưới:
Để khắc phục sự cố thông tin xác thực của Snapshot Agent, hãy nhấp chuột phải vào Ấn phẩm, bên dưới nút Nhân bản -> Ấn bản cục bộ và chọn Thuộc tính lựa chọn. Từ cửa sổ Thuộc tính xuất bản, duyệt qua Bảo mật tác nhân và chèn lại thông tin đăng nhập cho tài khoản mà Tác nhân Ảnh chụp nhanh sẽ chạy.
Sau khi làm mới thông tin đăng nhập tài khoản Snapshot Agent, hãy bắt đầu lại công việc Snapshot Agent từ cửa sổ Giám sát hoạt động công việc và đảm bảo rằng công việc đang hoạt động tốt, như sau:
Ngoài ra, hãy kiểm tra xem Snapshot Agent hiện đang hoạt động tốt hay không và thông báo lỗi không xuất hiện nữa trong Replication Monitor, như được hiển thị bên dưới:
Vấn đề về quyền đối với thư mục ảnh chụp nhanh
Giả sử rằng, khi cố gắng đồng bộ hóa Nhà xuất bản và Người đăng ký bằng cách sử dụng ảnh chụp nhanh ban đầu hoặc đồng bộ hóa lại trang web sao chép Ảnh chụp nhanh bằng ảnh chụp nhanh mới, quá trình tạo ảnh chụp nhanh không thành công với thông báo lỗi truy cập bên dưới:
Thông báo lỗi này cho thấy rằng, tài khoản mà Tác nhân Ảnh chụp nhanh đang chạy không có quyền truy cập vào thư mục ảnh chụp nhanh được chỉ định trong thông báo lỗi.
Để khắc phục sự cố đó, chúng tôi cần kiểm tra tài khoản mà Tác nhân Ảnh chụp đang chạy, từ trang Bảo mật Tác nhân của cửa sổ Thuộc tính Ấn phẩm, như được hiển thị bên dưới:
Sau đó, duyệt thư mục ảnh chụp nhanh được chỉ định trong thông báo lỗi và đảm bảo rằng tài khoản Ảnh chụp nhanh này có quyền đọc-ghi tối thiểu trên thư mục đó, sau đó chạy lại Tác nhân ảnh chụp nhanh và thấy rằng sự cố đã được khắc phục và ảnh chụp nhanh đồng bộ hóa được tạo thành công, như dưới đây:
Vấn đề về quyền của người đăng ký
Giả sử rằng, trong khi kiểm tra trạng thái trang web sao chép SQL Server, sử dụng Trình giám sát sao chép, bạn thấy rằng có lỗi xảy ra với Người đăng ký, như được hiển thị bên dưới:
Nếu bạn nhấp vào biểu tượng lỗi, bạn sẽ thấy rằng lỗi đã xảy ra khi cố gắng đồng bộ hóa các giao dịch từ Nhà phân phối đến Người đăng ký. Và từ thông báo lỗi, rõ ràng là Nhà phân phối không thể kết nối với phiên bản Máy chủ SQL của Người đăng ký do vấn đề về quyền, như được hiển thị bên dưới:
Để khắc phục sự cố đó, chúng tôi cần kiểm tra và làm mới thông tin đăng nhập được sử dụng để kết nối với phiên bản Người đăng ký. Để kiểm tra thông tin đăng nhập, nhấp chuột phải vào Đăng ký dưới nút Nhân bản -> Ấn phẩm cục bộ -> tên Ấn phẩm hiện tại và chọn tùy chọn Thuộc tính. Từ Kết nối người đăng ký trong cửa sổ Thuộc tính người đăng ký, hãy làm mới thông tin đăng nhập cho tài khoản sẽ được sử dụng để kết nối với phiên bản Người đăng ký, như được hiển thị bên dưới:
Sau đó, hãy kiểm tra lại trạng thái sao chép từ Giám sát nhân bản và bạn sẽ thấy rằng sự cố kết nối Người đăng ký không còn nữa và trang web nhân bản đang chạy bình thường, như được hiển thị bên dưới:
Không thể tiếp cận người đăng ký
Một vấn đề lỗi sao chép SQL Server khác mà bạn có thể gặp phải từ phía Người đăng ký là Nhà phân phối không thể kết nối với Người đăng ký, hiển thị dưới Nhà phân phối đến trang Người đăng ký rằng, nhà phân phối không thể mở kết nối với Người đăng ký do “Mạng Lỗi kết nối liên quan… ”, được hiển thị trong cửa sổ Giám sát nhân bản bên dưới:
Thông báo lỗi này chỉ ra rằng có sự cố kết nối giữa cá thể Nhà phân phối và cá thể Người đăng ký. Cách đầu tiên và đơn giản để kiểm tra sự cố kết nối này là đảm bảo rằng phiên bản Máy chủ SQL của Người đăng ký đang trực tuyến. Điều này có thể được kiểm tra từ Trình quản lý cấu hình SQL Server từ phía Người đăng ký. Trong tình huống của chúng tôi, chúng tôi có thể thấy rằng Dịch vụ SQL Server ở phía Người đăng ký bị dừng. Để khắc phục sự cố đó, hãy khởi động Dịch vụ SQL Server và kiểm tra từ Giám sát nhân bản xem trang web nhân bản có được đồng bộ hóa trở lại hay không, như được hiển thị bên dưới. Đối với vấn đề kết nối SQL nâng cao hơn, hãy kiểm tra tài liệu MS Khắc phục sự cố kết nối:
Vấn đề về quyền đối với cơ sở dữ liệu người đăng ký
Giả sử rằng bạn đang kiểm tra trạng thái đồng bộ hóa SQL Server Replication, sử dụng Replication Monitor, và nhận thấy rằng quá trình sao chép không thành công trong khi cố gắng sao chép các thay đổi từ Nhà phân phối sang Người đăng ký, Nhấp vào lỗi người đăng ký, bạn sẽ thấy rằng Nhà phân phối có thể liên hệ với người đăng ký và kết nối với nó, nhưng không thể kết nối với cơ sở dữ liệu Đăng ký do vấn đề thiếu quyền, như được hiển thị bên dưới:
Để khắc phục sự cố đó, hãy kết nối với Người đăng ký và đảm bảo rằng tài khoản được sử dụng để kết nối với cơ sở dữ liệu Người đăng ký là thành viên của vai trò cố định cơ sở dữ liệu db_Owner, như được hiển thị bên dưới:
Sau đó, hãy kiểm tra lại Trình theo dõi nhân bản và đảm bảo rằng Nhà phân phối có thể truy cập cơ sở dữ liệu đăng ký và sao chép các thay đổi, như bên dưới:
Vấn đề về Khác biệt Dữ liệu
Giả sử rằng một trong những nhóm phát triển cơ sở dữ liệu tuyên bố rằng có một số thay đổi được thực hiện trên bảng Dịch chuyển trên Nhà xuất bản (SQL1) không được phản ánh trong báo cáo hàng ngày chạy trên phiên bản Người đăng ký (SQL2) và anh ta đã cung cấp ảnh chụp nhanh bên dưới điều đó cho thấy rằng các thay đổi không được lặp lại:
Bước đầu tiên trong việc kiểm tra vấn đề đồng bộ hóa sao chép là mở Replication Monitor và tìm xem nó không thành công ở bước nào. Từ Giám sát sao chép, bạn có thể thấy rằng Tác nhân đọc nhật ký đang không thành công, vì các thay đổi không được sao chép từ Nhà phân phối đến Người đăng ký, nhưng không có thông báo rõ ràng nào được trả lại từ tác nhân đó, như được hiển thị bên dưới:
Vì chúng tôi không thể tìm thấy thông báo lỗi có ý nghĩa từ Trình theo dõi nhân bản, chúng tôi sẽ kiểm tra lịch sử của công việc Tác nhân đọc nhật ký, sử dụng Trình theo dõi hoạt động công việc, cho thấy rằng thông tin đăng nhập cho tài khoản mà Tác nhân đọc nhật ký đang chạy, là không chính xác , như hình dưới đây:
Để khắc phục sự cố thông tin xác thực Tác nhân Trình đọc Nhật ký, hãy duyệt qua trang Bảo mật Tác nhân của cửa sổ Thuộc tính Ấn phẩm và làm mới thông tin đăng nhập Tác nhân Trình đọc Nhật ký bằng một thông tin hợp lệ, như bên dưới:
Kiểm tra lại Replication Monitor, bạn sẽ thấy rằng các thay đổi được sao chép thành công và dữ liệu được cập nhật với các thay đổi ca mới, như được hiển thị bên dưới:
Không tìm thấy hàng ở người đăng ký
Chúng ta hãy nhìn nhận vấn đề từ một khía cạnh khác. Giả sử, có một thay đổi được thực hiện trong bảng thay đổi như được hiển thị bên dưới:
Nhưng thay đổi này không được sao chép tới Người đăng ký và trang web Sao chép SQL Server tổng thể không thành công. Từ Giám sát nhân bản, bạn có thể thấy rằng nó không thành công khi cố gắng thực hiện thay đổi từ Nhà phân phối thành Người đăng ký và không thành công do không thể cập nhật bản ghi cụ thể đó với ID bằng 3, vì bản ghi này không có sẵn trong bảng cơ sở dữ liệu Người đăng ký, như được hiển thị bên dưới:
Kiểm tra bản ghi đó ở phía Người đăng ký (SQL2), bạn sẽ thấy rằng bản ghi đó không khả dụng, như bên dưới:
Để khắc phục sự cố này, chúng tôi cần chèn lại bản ghi đó vào bảng cơ sở dữ liệu Người đăng ký và để Nhà phân phối cố gắng cập nhật lại nó, khắc phục sự cố không đồng bộ hóa sao chép, như được hiển thị bên dưới:
SQL Server cung cấp cho chúng tôi một tùy chọn để cho phép trang web sao chép tiếp tục hoạt động ngay cả khi phát hiện thấy vấn đề không nhất quán dữ liệu, nơi bạn có thể khắc phục sự cố không nhất quán này theo cách thủ công sau đó. Để làm như vậy, từ Trình theo dõi nhân bản, nhấp chuột phải vào Người đăng ký và chọn Hồ sơ đại lý tùy chọn, như được hiển thị bên dưới:
Từ cửa sổ được hiển thị, bạn có thể cập nhật hồ sơ Tác nhân đọc nhật ký và cho phép nó tiếp tục sao chép các thay đổi dữ liệu trong trường hợp có vấn đề về sự không nhất quán của dữ liệu, như được hiển thị bên dưới:
Sự cố đăng ký chưa được khởi tạo
Nếu trang web sao chép bị bỏ lại mà không được theo dõi trong một thời gian dài và xảy ra lỗi mà không có biện pháp khắc phục nào trong hơn ba ngày, trang web sao chép sẽ hết hạn và Đăng ký sẽ được đánh dấu là chưa được khởi tạo, đang chờ được khởi động lại bằng cách sử dụng ảnh chụp nhanh mới . Trường hợp tương tự có thể gặp phải khi tạo Đăng ký mới mà không khởi chạy nó, như được hiển thị bên dưới:
Để khắc phục sự cố đó, chúng tôi nên khởi động lại Đăng ký đó, bằng cách nhấp chuột phải vào Đăng ký bên dưới nút Nhân bản -> Ấn phẩm cục bộ và mở rộng Ấn phẩm, sau đó chọn tùy chọn Khởi động lại và đánh dấu Đăng ký này để khởi tạo và làm cho nó sẵn sàng để nhận ảnh chụp nhanh, như được hiển thị bên dưới:
Nếu trạng thái Đăng ký vẫn Chưa khởi tạo sau khi khởi động lại, hãy kiểm tra công việc Tác nhân Ảnh chụp nhanh, sử dụng cửa sổ Giám sát Hoạt động Công việc và xem lý do tại sao nó không thành công. Từ lịch sử công việc của Snapshot Agent, bạn sẽ thấy rằng công việc không thành công do sự cố xác định chủ sở hữu của công việc đại lý đó, như được hiển thị bên dưới:
Để khắc phục sự cố này, hãy mở công việc Snapshot Agent và thay đổi chủ sở hữu của công việc thành SA hoặc bất kỳ người dùng quản trị viên hợp lệ nào và công việc sẽ chạy thành công, như sau:
Bây giờ bạn sẽ thấy rằng trạng thái Đăng ký đã thay đổi thành Đang chạy, nghĩa là nó đang đợi ảnh chụp nhanh ban đầu để bắt đầu quá trình đồng bộ hóa, như được hiển thị bên dưới:
Để tạo một ảnh chụp nhanh mới, hãy nhấp chuột phải vào Ấn phẩm, trong nút Nhân bản-> Ấn phẩm cục bộ và chọn Xem trạng thái tác nhân ảnh chụp nhanh tùy chọn.
Từ cửa sổ đã mở, nhấp vào nút Bắt đầu để bắt đầu quá trình tạo ảnh chụp nhanh. Khi ảnh chụp nhanh chứa tất cả các bài viết của Nhà xuất bản được tạo thành công, hãy mở lại Trình theo dõi nhân bản và kiểm tra trạng thái của Đăng ký, tại đây bạn sẽ thấy rằng ảnh chụp nhanh được áp dụng cho Người đăng ký và được đồng bộ hóa với Nhà xuất bản, như hình dưới đây:
Vấn đề về chủ sở hữu cơ sở dữ liệu nhà xuất bản
Cũng giả định rằng, khi kiểm tra trạng thái của trang web sao chép máy chủ SQL, sử dụng Trình giám sát nhân bản, trang web nhân bản đã bị lỗi và lỗi được phát hiện tại Tác nhân đọc bản ghi. Kiểm tra thông báo lỗi được trả về từ tác nhân đó, người ta thấy rằng có vấn đề khi xác định chủ sở hữu hiện tại của cơ sở dữ liệu Ấn phẩm, như được hiển thị bên dưới:
Để khắc phục sự cố đó, chúng tôi cần cập nhật chủ sở hữu cơ sở dữ liệu ấn phẩm hiện tại bằng cách thay thế nó bằng một người dùng cơ sở dữ liệu hợp lệ, sử dụng SP_changedbowner hệ thống lưu trữ thủ tục, hoặc đơn giản từ cửa sổ thuộc tính cơ sở dữ liệu. Sau đó, chạy lại công việc Tác nhân đọc nhật ký, sử dụng cửa sổ Giám sát hoạt động công việc, sau đó xác thực nếu vấn đề tác nhân không còn nữa, sử dụng Trình theo dõi nhân bản, như được hiển thị bên dưới:
Kết luận
Trong bài viết này, chúng tôi đã trình bày các vấn đề khác nhau mà bạn có thể gặp phải khi sử dụng tính năng Sao chép Máy chủ SQL để sao chép dữ liệu giữa các trang web khác nhau và cách khắc phục những vấn đề này.
Chúng tôi khuyên bạn nên cập nhật SQL Server Engine với SP và CU mới nhất, vì vậy tất cả các lỗi liên quan đến các tính năng SQL Server Replication sẽ được sửa tự động. Cuối cùng, với tư cách là người quản trị cơ sở dữ liệu SQL Server chủ động, hãy theo dõi trang web sao chép của bạn để khắc phục mọi sự cố ngay từ đầu trước khi sự cố trở nên lớn hơn và khó khắc phục hơn.