Vị trí của tác nhân, không phải vị trí của dữ liệu, là quyết định định hình một đăng ký SQL Server. Máy chạy tác nhân mở kết nối, hoạt động dưới một tài khoản cụ thể và chịu trách nhiệm khi quá trình đồng bộ bị đình trệ. Trên một VPN giữa các site, khác biệt đó chính là thiết kế, không phải chi tiết. Hãy vẽ các kết nối của tác nhân trước khi vẽ mạng.

Ba vai trò, không phải hai

Publisher sở hữu dữ liệu bài viết, Distributor sở hữu cơ sở dữ liệu phân phối, và Subscriber nhận các thay đổi. Log Reader Agent chạy tại Distributor cho sao chép giao dịch. Distribution Agent là tác nhân có vị trí thay đổi theo loại đăng ký, và đó là lý do nó quyết định thiết kế mạng. Hãy làm rõ các vai trò đó trước khi bàn về quy tắc VPN.

Đăng ký push chạy Distribution Agent tại Distributor, và đăng ký pull chạy nó tại Subscriber, như tài liệu về đăng ký của Microsoft nêu. Mọi thứ trong cuộc trao đổi mạng đều phụ thuộc vào việc đó là máy nào. Ghi lại bốn sự thật cho mỗi đăng ký: máy chủ của tác nhân, danh tính tiến trình của nó, các đăng nhập cơ sở dữ liệu mà nó dùng và các tài nguyên mà nó phải tiếp cận. Những sự thật đó, không phải mũi tên trên sơ đồ, cho biết hướng nào phải hoạt động.

push nghĩa là tác nhân sống tại Distributor

Với đăng ký push, Distributor mở kết nối tới Subscriber qua VPN. Trình lắng nghe, tường lửa và đăng nhập SQL phía người đăng ký phải chấp nhận các kết nối đến từ phía xa. Tài khoản dịch vụ của Distributor cũng cần quyền trên cơ sở dữ liệu của người đăng ký. Hãy lập kế hoạch cho đường vào đó trước khi tạo đăng ký, vì phát hiện nó sau đó thường có nghĩa là tạo lại.

Việc phân phối ảnh chụp nhanh thêm một đường mà sao chép ổn định không bao giờ dùng. Nếu ảnh chụp nhanh được đặt trên một chia sẻ tệp, Distribution Agent đọc từ chia sẻ đó và tài khoản của người đăng ký phải tiếp cận cùng đường dẫn UNC. Một luồng thay đổi chạy hàng tuần không nói gì về việc khởi tạo lại có hoạt động hay không. Vì vậy chia sẻ ảnh chụp nhanh thuộc về kế hoạch ngay từ đầu.

Đừng đọc push như lưu lượng một chiều. Tác nhân cần các phản hồi, xác nhận và các trao đổi xác thực của chính nó. Đường đi phải hai chiều ở mức kết nối ngay cả khi dữ liệu di chuyển một chiều.

pull nghĩa là tác nhân sống tại Subscriber

Đăng ký pull đảo ngược kết nối: Subscriber chạy Distribution Agent và hướng tới Distributor. Cách bố trí đó phù hợp với chính sách VPN cho phép kết nối đi ra từ chi nhánh và chặn kết nối đi vào. Nó cũng đặt quyết định lịch biểu vào tay người trông coi máy chủ của chi nhánh. Hãy chọn nó khi nhóm chi nhánh phải sở hữu việc đồng bộ của chính mình và nhận ra thất bại của chính mình.

Tài khoản dịch vụ SQL Server Agent của người đăng ký cần quyền đọc trên cơ sở dữ liệu phân phối và trên chia sẻ ảnh chụp nhanh. Tài khoản đó là danh tính xuất hiện trong các lỗi sao chép, và một tài khoản dịch vụ cục bộ không có quyền miền sẽ thất bại tại điểm trông như sự cố mạng nhưng thực ra là sự cố thông tin xác thực. Hãy kiểm tra tài khoản trước khi gỡ lỗi đường hầm. Sửa đăng nhập thường nhanh hơn chứng minh mạng vô can.

Quyền sở hữu đi theo tác nhân. Chọn push khi nhóm trung tâm phải sở hữu cả lịch biểu và thất bại. Dù chọn gì, hãy ghi nó bên cạnh đăng ký để kỹ sư tiếp theo biết nên xem ở đâu trước.

Tái xuất bản thay đổi độ lan tỏa, không thay đổi quyền sở hữu

Một người đăng ký có thể được cấu hình để tái xuất bản tới những người đăng ký tiếp theo, cho phép một cơ sở dữ liệu chi nhánh phục vụ nhiều người tiêu dùng cục bộ mà không ai phải kéo qua WAN. Cơ sở dữ liệu trung gian giờ giữ một ấn phẩm và các tác nhân của riêng nó. Nó cũng thừa hưởng quyền, giám sát và một kế hoạch khôi phục mà trước đây nó không có. Vai trò thêm đó là cái giá của việc loại bỏ phân phối WAN lặp lại.

Thứ tự được ghi trong tài liệu rất quan trọng: khởi tạo đăng ký đến trước khi tạo ấn phẩm ở hạ nguồn. Hãy coi đó là một bước trong vòng đời có kiểm chứng, không phải giấy tờ để bỏ qua. Đảo ngược nó tạo ra một chuỗi trông như đã cấu hình mà không phân phối gì.

Nêu rõ mô hình ghi. Sao chép một tập dữ liệu chỉ đọc tới người tiêu dùng cục bộ là một thiết kế khác với việc chấp nhận ghi tại nhiều site, và một chuỗi mũi tên không tạo ra việc giải quyết xung đột. Nếu chi nhánh phải ghi, đó là một quyết định riêng với cấu trúc liên kết riêng. Cũng hãy làm cho sự phụ thuộc hiện rõ: khi trình tái xuất bản ngừng hoạt động, mọi người tiêu dùng bên dưới nó đều lỗi thời.

Chứng minh vị trí từ đầu đến cuối

Đọc loại đăng ký từ cơ sở dữ liệu phân phối thay vì tin vào trí nhớ, rồi kiểm tra xem các thay đổi có thực sự đến không:

USE distribution;
SELECT publication, subscriber_db, subscription_type
FROM dbo.MSsubscriptions;
EXEC sp_replmonitorsubscriptionpendingcmds
  @publisher = 'PUB1', @publisher_db = 'Sales',
  @publication = 'SalesPub', @subscriber = 'BR1',
  @subscriber_db = 'Sales';

subscription_type có giá trị 0 là push và 1 là pull, và không thể đổi tại chỗ, nên sự không khớp có nghĩa là tạo lại đăng ký chứ không phải sửa nó. Lệnh gọi các lệnh đang chờ cho biết tác nhân được chọn đang chuyển công việc hay chỉ đang chạy. Một đăng ký báo không lệnh chờ trong khi bảng của người đăng ký vẫn trống là một sự cố khác với đăng ký báo tồn đọng tăng, và cả hai dẫn tới những người sở hữu khác nhau.

Kết thúc bằng một thay đổi thực: chèn hoặc cập nhật một hàng tại Publisher, chờ tác nhân báo cáo và đọc hàng đó tại Subscriber. Làm lại một lần nữa trong một lần gián đoạn VPN ngắn để xem tác nhân phục hồi ra sao. Một đăng ký vượt qua thử nghiệm đó có vị trí mà bạn có thể ghi lại và bảo vệ.

Bài viết liên quan