Transactional Replication – Nhân bản giao dịch một chiều

Transactional Replication là một kỹ thuật được sử dụng để sao chép tự động liên tục hoặc định kỳ các dữ liệu giao dịch (Transaction Data) một chiều từ Publisher đến Subscriber. Có thể sử dụng:

  • Từ 1 Publisher đến 1 Subscriber
  • Từ 1 Publisher đến nhiều Subscriber
  • Từ nhiều Publisher đến 1 Subscriber
  • Từ nhiều Publisher đến nhiều Subscriber

Tham khảo thêm các thuật ngữ và mô hình Replication

Kỹ thuật này được sử dụng cho các CSDL quan trọng yêu cầu ít thời gian chết. Nó hữu ích cho các CSDL nơi mà một lượng lớn dữ liệu được thay đổi thường xuyên. Ba tác nhân được sử dụng trong Transactional Publication là: Snapshot agent, Log reader agent và Distribution agent.

  • Snapshot agent: chụp nhanh các Article từ Publisher và đưa vào thư mục lưu trữ.
  • Log reader agent: đọc nhật ký giao dịch của Publisher và chuyển giao dịch hoàn thành (đã commit) sang Distribution.
  • Distribution agent: căn cứ vào Snapshot agent và Log reader agent để chuyển dữ liệu từ Distribution sang Subscriber.

Bài này sử dụng 2 Database instance: .\SQL1 làm Publisher và .\SQL2 làm Subscriber (bạn có thể sử dụng các Database instance từ các máy tính khác nhau).

Thiết lập Distribution

  • Trước khi bắt đầu hãy đảm bảo rằng SQL Server Agent đang chạy ở chế đội Automatic.
Vào Start > Run > services.msc > Enter để kiểm tra
  • Mở công cụ SSMS > đăng nhập vào .\SQL1
Đăng nhập bằng tài khoản quản trị CSDL: SA
Nhấp chuột phải vào Replication > Configure Distribution…
Next
Tùy chọn như hình > Next
Tùy chọn như hình > Next
Khai báo đường dẫn thư mục lưu của Snapshot agent > Next
Đặt tên cho CSDL Distribution > Next
Next
Chọn Configure distribution > Next
Finish
Nhấp Close để hoàn thành
CSDL distribution sẽ được tạo trong System Databases
Tài khoản distributor_admin được tạo cho CSDL distribution
repl_distributor được tạo trong Linked Servers
Nhấp chuột phải vào Replication > Distributor Properties…
Xem thông tin lưu giữ lịch sử giao dịch
Các Jobs được tạo ra

Thiết lập Publication

Nhấp chuột phải vào Local Publications > New Publication…
Next
Chọn CSDL cần nhân bản > Next
Chọn Transactional publication > Next
Vd nhân bản dữ liệu từ bảng EMPLOYEES > Next
Nhấp Add để lọc bớt dữ liệu.
(nếu bạn lấy hết dữ liệu trong bảng EMPLOYEES thì bỏ qua bước này).
Vd chỉ nhân bản nhân viên của phòng 90.
Thực hiện lần lượt theo số thứ tự.
Next
Tùy chọn như hình > Next
Nhấp Security Settings…
Đăng nhập tài khoản của Database instance: .\SQL1
Next
Chọn Create the publication > Next
Đặt tên cho Publisher tại ô Publication name > Finish
Nhấp Close để hoàn thành
Nhấp chuột phải vào SQL1_Nguon > View Snapshot Agent Status
Trường hợp trạng thái thông báo như hình bạn cần thực hiện vài bước sau để Start thành công
Nhấp chuột phải vào repldata > Properties
Thực hiện lần lượt theo số thứ tự
Thực hiện lần lượt theo số thứ tự
Quay lại màn hình ban đầu > nhấp Start
Tương tự nhấp chuột phải vào SQL1_Nguon > View Log Reader Agent Status
Xuất hiện trạng thái như hình là ổn

Thiết lập Subscriber

Nhấp chuột phải vào SQL1_Nguon > New Subscriptions…
Next
Next
Tùy chọn như hình > Next
Nhấp Add Subscriber > Add SQL Server Subscriber…
Đăng nhập vào .\SQL2
Chọn <New database…>
(hoặc có thể chọn 1 Database đã tồn tại trươc đó trong .\SQL2)
Tại ô Database name (1) đặt tên cho CSDL Subscriber > OK (2)
Next
Nhấp vào dấu ba chấm ()
Đăng nhập tài khoản của Database instance: .\SQL2
Next
Next
Next
Chọn Create the subscription(s) (1) > Next (2)
Finish
Nhấp Close để hoàn thành
Thực hiện lần lượt theo số thứ tự để xem trạng thái của Subscriber
Xuất hiện trạng thái như hình là ổn

Thêm, sửa, xóa dữ liệu để kiểm tra

Đăng nhập vào .\SQL2
Dữ liệu đã được nhân bản qua Subscriber (.\SQL2)
Thử thêm dữ liệu vào Publisher (.\SQL1)
Ngay lập tức dữ liệu vừa thêm được cập nhật qua Subscriber (.\SQL2)
  • Các trường hợp sửa, xóa dữ liệu cũng được cập nhật tương tự.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *