You are on page 1of 71

1. SQL server replication là gì?

Lưu ý: sử dụng SQL SERVER bản Developer hoặc Enterprise

SQL server replication là một bộ các giải pháp cho phép sao chép và phân phối cơ
sở dữ liệu giữa các SQL server và đồng bộ chúng nhằm duy trì tính nhất quán dữ
liệu.
Sử dụng replication, chúng ta có thể phân phối dữ liệu đến nhiều SQL server khác
nhau hay truy cập từ xa thông qua mạng cục bộ hay internet. Replication cũng nâng
cao tính thực hiện hay phân phối CSDL trên nhiều Server với nhau.

2. Khi nào cần sử dụng SQL server replication?


Replication là giải pháp được ứng dụng cho môi trường phân phối dữ liệu trên
nhiều server, chính vì vậy mà sử dụng chúng khi:
 Sao chép và phân phối dữ liệu trên nhiều server khác nhau.
 Phân phối bản sao dữ liệu theo lịch trình nhất định.
 Phân phối dữ liệu vừa thay đổi trên nhiều server khác nhau.
 Cho phép nhiều người dùng và nhiều server kết hợp dữ liệu khác nhau một
cách thống nhất mà không sợ mất dữ liệu.
 Xây dựng CSDL sử dụng cho những ứng dụng trực tuyến hay ngoại tuyến.
 Xây dụng ứng dụng web khi người dùng cần trình bày một số lượng lớn dữ
liệu.

3. Một số thuật ngữ liên quan tới replication


 Publisher: Là một server tạo dữ liệu để nhân bản đến các server khác. Nó
xác định dữ liệu nào được nhân bản, dữ liệu nào thay đổi và duy trì những
thông tin về các công bố tại site đó.
 Subscriber: Là một server lưu giữ bản sao và nhận các tác vụ cập nhật. Một
Subscriber có thể là một Publisher của các Subscriber khác.
 Distributor: Là một server chứa CSDL phân tán (distribution database) và
lưu trữ metadata, history data và transaction.
 Article: Là một bảng dữ liệu, một phần dữ liệu hay những đối tượng CSDL sẽ
nhân bản. Một Article có thể là một bảng dữ liệu bao gồm column và row hay
một stores produre… (các phân mảnh)
 Publication: Là tập của một hay nhiều Article từ một CSDL. Chúng được
nhóm lại với nhau một cách hệ thống thành một tâp dữ liệu cùng với các đối
tượng CSDL mà bạn muốn nhân bản trên nhiều Server với nhau. (tập hợp các
phân mảnh ~ lược đồ phân mảnh)

 PUBLISHER: Có thể coi là các Main DB, nới dữ liệu chính được lưu ở đây.
 DISTRIBUTOR: Máy chủ phân phối, Máy chủ này chứa database distribution,
lưu lại tất cả các lịch sử phân phối của hệ thống.
 SUBCRIBER: Các máy chủ tiếp nhận dữ liệu từ PUBLISHER, thường chạy
report báo cáo trên các DB này.

Bước 1: chuẩn bị

- Ta tạo 1 folder D:\ReplData để chứa các dữ liệu trao đổi trong quá trình update dữ liệu
từ các phân mảnh về cơ sở dữ liệu gốc, và từ cơ sở dữ liệu gốc đến các phân mảnh
- Tiến hành cho folder này là 1 snapshot folder: thực chất là 1 shared folder trong
Windows, cho phép các users được quyền read/write
Right click trên folder REPLDATA, chọn Properties, chọn tab Sharing – Share
-Tạo publication
-Thư mục đã được share với đường dẫn \\Desktop-dt03ign\repldata
-Bước 1: Configure Distribution

Mở SQL Server, chọn server \HUYHNK1 là Distributor và Pulisher (server gốc)


-Right click và Replication:
-Chọn Config Distribution
-Chọn next
-Next
-Next
Copy Đường dẫn Snapshot Folder vừa tạo ở bước trước D:\REPLDATA
-Distribution là tên database chứa các metadata và các lịch sử data của các bản nhân (repication) và các
giao tác
Chọn Next
-Check chọn thêm vào Generate Script
-Đường dẫn lưu script
-Finish
Có thể có lỗi (như không quan trọng),

-Start SQL server Agent lên


Chọn startup type: Automatic

-Để Disable server Distributor và Publisher


-Chọn next
Finish

-Bước 2: Tạo publications


-Next
Chọn CSDL cần phân tán dữ liệu: QL_VATTU
Chọn Merge publication
Chọn bản phù hợp (mới nhất)
Lựa chọn phân tán theo Table
Next
Thiết kế các phân mảnh

Lược đồ phân mảnh:

CHINHANH (PHÂN MẢNH CHÍNH/NGUYÊN THỦY) (THEO CN1, CN2)

+NHANVIEN (PHÂN MẢNH NGANG DẪN XUẤT THEO CHINHANH)

+KHO (PHÂN MẢNH NGANG DẪN XUẤT THEO CHINHANH)

+PHATSINH (PHÂN MẢNH NGANG DẪN XUẤT THEO KHO)

+CT_PHATSINH (PHÂN MẢNH NGANG DẪN XUẤT THEO PHATSINH)

VATTU: NHÂN BẢN (DO CÁC SITE ĐỀU THẤY NHƯ NHAU)
Add  Add filter (tạo các phân mảnh)
-Nhấn OK
Tiếp tục phân mảnh ngang dẫn xuất cho NhanVien, Kho

Nhấn OK
Tương tự cho KHO

Tiếp tục phân mảnh ngang cho PHATSINH và CT_PHATSINH


Như vậy ta được hình sau
-Còn table VATTU không phân mảnh thì tự hiểu nó là nhân bản (có giá trị như sau với với các Chi nhánh)

-Tiếp tục nhấn Next


Next
Chọn Security Settings
Chọn tài khoản của server Publisher (HUYHNK1)
Next
Đặt tên cho Publication này (do đang cấu hình phân mảnh cho CN 1 nên ta có thể đặt là QL_VATTU_CN1

Nhấn finish
Refresh lại server
Sẽ thấy publication vừa tạo
Có thể right click -> View napshot… để theo dõi quá trình đồng bộ

Tương tự ta sẽ cài Publication cho CN2, ở các server khác

Bước 3: tạo subscription

Chỉ định nơi chứa các cơ sở dữ liệu phân tán. (chứa các publication)

-ví dụ với publication QL_VATTU_CN1 thì sẽ chọn server chứa nó là \HUYHNK2


Right click và Pulication vừa tạo, chọn New Subscription
Next
Next
Next
Chọn Subscriber (server sẽ chứa dữ liệu phân tán publication QL_VATTU_CN1)

Có thể chọn server khác để chứa dữ liệu phân tán này.

Add SQL server Subscriber…


Giả sử chọn server .\HUYHNK2
Tạo new database để chứa dữ liệu này
Có thể đặt tên trùng với CSDL gốc ở Publiser (QL_VATTU)
-Nhớ chọn .\HUYHNK2, vì đây là server chứa dữ liệu phân tán

-Nhấn Next
Tài khoản login vào Subscriber (HUYHNK2)
Nhấn Next
Chọn Run continuously
Next
Nhấn finish
Ta check lại server
-Distributor và Publisher là .\HUYHNK1

-Database gốc (toàn cục): QL_VATTU

-Publication: QL_VATTU_CN1 (dữ liệu phân tán của CN1)

-Subscriber: .\HUYHNK2

-Database chứa dữ liệu phân tán tương ứng với Publication QL_VATTU_CN1: QL_VATTU

Mở server .\HUYHNK2, sẽ thấy


Và DB QL_VATTU sẽ có các table ứng với các phân mảnh trong publication QL_VATTU_CN1
Select * from CHINHANH thì sẽ chỉ có dữ liệu có MACN = ‘CN1’

Tương tự cho bảng NHANVIEN


Riêng bảng VATTU sẽ được nhân bản toàn bộ

Tương tự tạo tiếp cho các Publication cho CN2 và cấu hình Subsriber chứa dữ liệu phân tán này

-Distributor và Publisher là .\HUYHNK1

-Database gốc (toàn cục): QL_VATTU

-Publication: QL_VATTU_CN1 (dữ liệu phân tán của CN1,hay còn gọi là lược đồ phân mảnh)

-Subscription: chỉ định mảnh nào đặt ở server nào (lược đồ định vị)

-Subscriber: .\HUYHNK2

-Database chứa dữ liệu phân tán tương ứng với Publication QL_VATTU_CN1: QL_VATTU

Chứa các phân mảnh ứng với CN1 (hay còn gọi là hình ảnh vật lý, lược đồ ánh xạ cục bộ)

-Subscriber: .\HUYHNK3

-Database chứa dữ liệu phân tán tương ứng với Publication QL_VATTU_CN2: QL_VATTU

Chứa các phân mảnh ứng với CN2 (hay còn gọi là hình ảnh vật lý)

Để connect giữa các server này ta có thể tạo linked server

-Tạo remotelogin (account dùng cho phép connect)


-Phân quyền account cho thấy db QL_VATTU

-Truy vấn các phân mảnh với linked server này

-Ta có thể tạo các store, view ở server gốc và đẩy xuống các Subribers (vào Aritcle của publication, và
sau đó vào các subscription chọn view agent snapshot)

You might also like