MSSQL SERVER 2008 REPLICATION
PEER TO PEER REPLICATION
DATABASE REPLICATION
cloud computing, database, dong bo du lieu, mssql server replication, peer to peer replication, sync database, synchronize,sync db
Jenkins (Continuous Integration System with Jenkins)
MSSQL SERVER 2008 REPLICATION (PEER TO PEER)
1. MSSQL SERVER 2008 REPLICATION
(minhtri.itp@gmail.com)
(Bên cạnh giải pháp REPLICATION cho MS SQL Server
chúng tôi còn cung cấp tài liệu kỹ thuật, công cụ thực hiện
replication cho các nền tảng database khác như MySQL,
Oracle,… )
I. GIỚI THIỆU MSSQL SERVER 2008 REPLICATION ........................................................ 2
II. YÊU CẦU............................................................................................................................... 5
III. CÀI ĐẶT ............................................................................................................................. 7
A. YÊU CẦU HỆ THỐNG ............................................................................................... 7
B. CÀI ĐẶT & CẤU HÌNH.............................................................................................. 7
C. VẤN ĐỀ KHI ÁP DỤNG REPLICATION ............................................................... 35
D. THEO DÕI HOẠT ĐỘNG CỦA REPLICATION .................................................... 36
2. I. GIỚI THIỆU MSSQL SERVER 2008 REPLICATION
(Hình minh họa khả năng mở rộng và đồng bộ dữ liệu phân tán của giải pháp replication)
Đối với các ứng dụng dữ liệu lớn là một bài toán khó để quản lý, mở rộng và tối ưu hoá
khả năng tải, khả năng chịu lỗi cao cho máy chủ CSDL. Với các hệ thống phân tán dữ
liệu (VD: công ty có nhiều chi nhánh trên toàn thế giới) để đáp ứng việc cập nhật dữ liệu
nhanh chóng với mức độ sẳn sàng cao và đồng bộ là một vấn đề khó nếu chỉ áp dụng các
kỹ thuật ở tầng ứng dụng.
Để giải quyết các vấn đề trên MSSQL SERVER đã cung cấp các giải pháp được cài đặt
ngay trên hệ quản trị CSDL mà không cần can thiệp bởi ứng dụng.
Một trong số các giải pháp giúp mỏ rộng hệ thống phân tán và đồng bộ dữ liệu được
MSSQL SERVER cung cấp là:
Distributed transactions.
Replication.
Phần nội dung tiếp theo sẽ giới thiệu kỹ thuật Replication (peer to peer)
ĐẶC ĐIỂM MSSQL SERVER REPLICATION
3. Giúp giải quyết bài toán đồng bộ dữ liệu phân tán.
Khả năng mở rộng hệ thống một cách dễ dàng với nhiều phương thức đồng bộ
(Eager replication, Lazy replication).
Khả năng chịu lỗi cao.
Kết hợp được nhân bản và đồng bộ máy chủ CSDL cho các nền tảng hệ quản trị
CSDL khác ngoài MSSQL SERVER thông qua (Microsoft OLE DB Provider for
ODBC, Microsoft OLE DB Provider for Jet, Microsoft OLE DB Provider for
Oracle)
(Hình minh họa replication có thể áp dụng trên nhiều nền tảng hệ quản trị CSDL)
CƠ CHẾ NHÂN BẢN CỦA MSSQL SERVER REPLICATION
Nhân bản đồng bộ (Eager Replication - synchronous replication)
4. (Hình minh họa nhân bản đồng bộ)
Nhân bản bất đồng bộ(Lazy Replication - asynchronous replication )
5. (Hình minh họa nhân bản bất đồng bộ)
II. YÊU CẦU
Cấu hình hệ thống server có khả năng mở rộng cao và đồng bộ cho cả read và
write dữ liệu mà vẫn đáp ứng được khả năng sẳn sàng sử dụng và chịu lỗi cao.
Mô hình ứng dựng mẫu như sau:
6. Hình trên chính là mô hình thu nhỏ của nền tảng điện toán đám mây bên canh đó
chúng ta có thể áp dụng replication cho một số tình huống khác như công ty có
nhiều chi nhánh (da quốc gia),…
Và để giải quyết cho yêu cầu này Peer to Peer Replication sẽ là một giải pháp đơn
giản và tiết kiệm nhất.
Với giải pháp này cho phép mỗi node đều được đồng bộ với nhau mỗi khi có thay
đổi và cho phép mỗi node server đều có thể read và write dữ liệu.
7. III. CÀI ĐẶT
A. YÊU CẦU HỆ THỐNG
MSSQL SERVER 2005/2008 ENTERPRISE
B. CÀI ĐẶT & CẤU HÌNH
Để cài đặt replication trước hết cần phải đảm bảo các services sau đã được start.
1. Distributed Transaction Coordinator (Dịch vụ điều phối giao dịch phân
tán) để quản lý các transaction cho quá trình đồng bộ dữ liệu.
2. Để start dịch vụ này thực hiện như sau:Vào run gõ lệnh services.msc để
mở trình quản lý service. Sau khi của sổ Service được mở lên tìm đến
service Distributed Transaction Coordinator click chuột phải và start theo
hình minh họa sau.
3. Tiếp theo cần phải start dịch vụ SQL Server Agent để quản lý các job
đồng bộ dữ liệu
8. 4. Để thực hiện start SQL Server Agent, vào trình quản lý cấu hình của SQL
Server (SQL Server Configuration Manager) Click chuột phải vào SQL
Server Agent và start theo hình minh họa sau.
Nội dung tiếp theo sẽ hướng dẫn chi tiết cài đặt replication.
Lưu ý: SQL sẽ không cho phép cài đặt replication khi truy cập database server
thông qua IP,alias,...
Khi truy cập thông qua ip hoặc alias sẽ nhận được thông báo lỗi tương tự như sau:
9. Vì vậy chúng ta cần phải truy cập db server thông qua domain name (nếu có) và
computer name.
Sau khi truy cập db server thành công chúng ta tìm đến node Replication và thực
hiện tạo mới Publication để tiến hành Replication
Tại node Local Publications chúng ta click chuột phải và chọn New Publication
Sau khi chọn New Publication cửa sổ New Publication Wizard được mở lên .
Click next để tiến hành tạo Publication mới.
10. Nếu trên db server chúng ta chưa tạo Publication lần nào SQL server sẽ yêu cầu
chúng ta cấu hình và tạo Distributor. Ngược lại sẽ hiển thị giao diện chọn db cho
publication
11. (Hình minh họa trong trường hợp tạo publication lần đầu tiên sẽ yêu cầu tạo
distributor)
12. (Hình minh họa tạo publication lần tiếp theo sẽ không hiển thị giao diện yêu cầu
tạo distributor)
Tiếp theo sẽ hướng dẫn các bước tạo mới distributor
Sau khi giao diện yêu cầu tạo distributor hiển thị, chúng ta click next để tiến hành
cài đặt
Tiếp theo sẽ trình cài đặt sẽ hiển thị giao diện chọn Snapshot Folder
Lưu ý ở bước này nếu chúng ta muốn tạo replicaton giữa các server thông qua
mạng thì phải chọn đường dẫn lưu trữ Snapshot Folder dưới dạng Network path.
Vì vậy chúng ta cần phải cấp quyền và chia sẻ thư mục này cho các tài khoản
SQL server và tài khoản trên các server khác truy cập vào.
Sau khi chia sẻ chúng sẽ nhập vào đường dẫn cho Snapshot Folder (VD:
GPTHHT-TRILMReplData)
Nếu chúng ta nhập đường dẫn thư mục không phải là Network Path trình cài đặt
sẽ cảnh báo như sau
13. (Hình minh họa cảnh báo đường dẫn không phải Network Path)
Sau khi nhập thông tin cho Snapshot Folder chúng ta click Next để tiến hành cài
đặt. Khi đó của sổ Publication Database sẽ hiển thị một danh sách các db có trên
server và yêu cầu chúng ta chọn db cần publication
14. (Hình minh họa chọn db cần publication)
Chúng ta click Next để tiếp tục. Giao điện chọn publication type sẽ hiển thị và
yêu cầu chúng ta chọn loại publication. Do ở đây sử dụng replication peer to peer
nên chúng ta sẽ chọn loại publication là Transactional publication. Sau khi chọn
xong click next để tiếp tục. (Lưu ý ở bước này chúng ta chọn các loại khác sẽ
không chuyển sang chế độ replication peer to peer được)
15. (Hình minh họa chọn publication type)
Tiếp theo trình cài đặt sẽ hiển thị giao diện lựa chọn Articles (Article là các table,
store procedures, view, user của db mà chúng ta đã chọn để publication)
Ở bước này chúng ta chỉ chọn chính xác các đối tượng mà mình muốn nhân bản.
Sau khi chọn click next để tiếp tục.
16. Tiếp theo trình cài đặt sẽ hiển thị cửa sổ lọc các dòng trên table (Filter Table
Rows) cần nhân bản. Nếu chúng ta không lọc thì để mặc định là tất cả và click
next để tiếp tục.
17. (Hình minh họa cửa sổ Filter Table Rows)
Tiếp theo trình cài đặt sẽ hiển thị của sổ chọn Snapshot Agent . Ở bước này chúng
ta không lựa chọn Snapshot Agent và click next để tiếp tục.
18. (Hình minh họa của sổ chọn Snapshot Agent)
Tiếp theo của sổ Agent security sẽ hiển thị. Chúng ta click button Security
settings và nhập các thông tin theo hình hướng dẫn sau:
19. Sau khi nhập đầy đủ các thông tin chúng ta click finish.
Ở bước này trình cài đặt sẽ yêu cầu chúng ta đặt tên cho publication. Sau khi đặt
tên xong click finish để kết thúc quá trình cài đặt.
20. (Hình minh họa đặt tên cho publication)
Tiếp theo trình cài đặt sẽ thực thi các thông số mà chúng ta đã lựa chọn
Nếu không có lỗi gì xảy ra quá trình cài đặt sẽ kết thúc thành công và chúng ta
click close để đóng cửa sổ cài đặt lại.
21. (Hình minh họa quá trình cài đặt publication thành công)
Sau khi cài đặt thành công chúng ta tiến hành cấu hình peer to peer replication
Click chuột phải vào node chứa publication vừa tạo chọn properties
(Hình minh
họa chọn
Properties của
publication để
tiến hành cấu
hình peer to
peer)
Khi
của sổ
publication
properties
hiển thị chúng
ta chọn tab
22. Subscipttion Options. Tại node Allow peer-to-peer subscriptions chọn giá trị là
True.
Sau đó click ok để tiến hành thực thi cấu hình (Lưu ý ở bước này sau khi đã thực
thi thì không thể set lại bằng false). Giá trị Peer orginator id được gán mặc định là
1.
(Hình minh họa chọn thuộc tính Allow peer-to-peer subscriptions )
Bước tiếp theo chúng ta sẽ tiến hành cấu hình peer-to-peer topology cho
replication.
Click chuột phải vào publication vừa cho phép peer-to-peer subscriptions chọn
Configuration peer-to-peer topology
23. (Hình minh họa cấu hình peer-to-peer topology)
Cửa sổ Configuration peer-to-peer topology wizard sẽ hiển thị. Click next để tiến
hành cấu hình.
24. (Hình minh họa của sổ cấu hình peer-to-peer topology)
Tiếp theo của sổ chọn publication sẽ hiển thị chúng ta chọn publicaton đã tạo và
click next để tiếp tục.
25. (Hình minh họa cửa sổ chọn publication)
Tiếp theo của sổ Configure topology sẽ hiển thị node đầu tiên là publicaton mà
chúng ta vừa chọn.
26. (Hình minh họa cửa sổ Configure topology với publication đầu tiên)
Tiếp theo chúng ta sẽ add thêm các node cần nhân bản vào topology này.
Trước hết chúng ta cần phải tạo và restore db từ db ban đầu vào các server cần
nhân bản. Và tạo distributor trên các server nhân bản để quản lý các transaction.
Để thực hiện thêm mới một node nhân bản mới vào topology chúng ta click chuột
phải vào vùng trống của cửa sổ configure topology và chọn Add new peer node.
27. Cửa sổ connect to server sẽ hiển thị chúng ta nhập các thông tin kết nối đến server
cần nhân bản sau đó click connect để kết nối (Lưu ý: Thông tin server không sử
dụng ip và alias, chỉ sử dụng domain và computer name)
(Hình minh họa kết nối đến server nhân bản)
Sau khi kết nối đến server thành công server sẽ hiển thị cửa sổ chọn database
nhân bản cần thêm vào topology .
28. Tiếp theo chúng ta chọn db cần nhân bản và nhập peer orginator id (tăng lên bắt
đầu từ 1 và không được phép trùng trong một topology) theo hình hướng dẫn.
Chúng ta chọn Connect to ALL displayed nodes để kết nối đến toàn bộ các nút
đang hiển thị.
Sau khi chọn và nhập đầy đủ thông tin, click ok để thểm vào topology
(Hình minh họa thêm db nhân bản từ remote server)
Tương tự như vậy chúng ta có thể thêm vào topology các server nhân bản khác.
Chúng ta có thể xóa các node trong topology bằng cách click chuột phải vào node
cần xoá và chọn Delete peer node
(Hình minh họa xóa node trong topology)
Sau khi đã thêm các db cần nhân bản vào topology, click next để tiến hành thực
thi tạo replicaton trên các server nhân bản.
29. Tiếp theo trình cài đặt sẽ hiển thị của sổ Log Reader Agent Security.
(Hình minh họa cửa sổ Log Reader Agent Security )
Chúng ta click chọn vào nút “…” và nhập các thông tin theo hướng dẫn sau.
30. Lặp lại tương tự cho các nhân bản khác. Và click next để tiếp tục.
Tiếp theo trình cài đặt hiển thị của sổ Distribution Agent Security
31. (Hình minh họa của sổ Distribution Agent Security)
Tiếp theo chúng ta click vào lần lượt các nút “…” và nhập các thông tin theo
hướng dẫn sau
32. (Hình minh họa nhập các thông tin cấu hình distribution Agent Security)
Sau khi đã nhập đầy đủ các thông tin distribution Agent Security cho tất cả các
nhân bản server. Chúng ta click next để tiếp tục.
Tiếp theo trình cài đặt sẽ hiển thị của sổ New Peer Initialization. Chúng ta để các
thông tin mặc định và click next.
33. (Hình minh họa cửa sổ New Peer Initialization)
Tiếp theo chúng ta click finish 2 lần để tiến hành cài đặt peer to peer topology
34. (Hình minh họa màn hình Complete the Wizard)
Sau khi nhấn finish và chờ đợi trong vài phút nếu không có lỗi gì xảy ra. Trình cài
đặt sẽ hiển thị mà hình thông báo thành công. Chúng ta click close để đóng cửa sổ
cài đặt lại.
35. Đến bước này chúng ta đã cài đặt và cấu hình thành công replication peer to peer.
Chúng ta có thể cấu hình thêm hoặc bớt các node đã nhân bản trong peer to peer
topology bằng cách click chuôtn phải vào publication cần cấu hình và chọn
Configuration peer-to-peer topology. Các bước hiệu chỉnh topology tương tự như
cấu hình tạo mới topology ở các bước trên.
C. VẤN ĐỀ KHI ÁP DỤNG REPLICATION
Khi áp dụng replication chúng ta sẽ gặp vấn đề đối với các bảng được thiết kế với
ID tự động tăng (Identity).
Do cơ chế nhân bản một db thay đổi sẽ cập nhật dữ liệu cho các db khác và như
thế các id này có thể bị đụng độ khoá chính vi phạm ràng buộc unique do mỗi db
đều tự quản lý chỉ số tự tăng riêng của mình.
Để giải quyết vấn đề này chúng ta cần phải áp dụng phân vùng ID cho các db
server trừ server nhân bản.
Để tính ra được phân vùng id chúng ta cần xác định max id của kiểu dữ liệu đã
thiết kế và số server được nhân bản
36. VD: Chúng ta thiết kế khoá chính tự tăng có kiểu integer max value là
2,147,483,647 và cần nhân bản lên 5 server
Khi đó chúng ta sẽ lấy 2,147,483,647 chia cho 1,2,3,4,5 chúng ta sẽ có được phân
vùng id cho mỗi server nhân bản tương ứng.
Server 1:không cần phân vùng
Server 2:429496729
Server 3:858993458
Server 4:1288490188
Server 5:1717896917
Lưu ý:
Việc phân vùng id phải được tính toán có kế hoạch.
VD : Hiện tại chúng ta cần nhân bản 3 server nhưng trong tương lai chúng
ta cần nhân bản 10 server. Thì ngay từ ban đầu chúng ta phải phân vùng id
là 10. Nếu ban đầu chỉ phân vùng là 3 thì sau này khi nhân bản lên 10 việc
phân vùng lại sẽ vô cùng khó khăn.
Điểm lưu ý tiếp theo là việc sắp xếp dữ liệu mới nhất thông thường dựa
vào id. Nhưng do phân vùng id nên việc sắp xếp này sẽ không đúng. Vì
vậy để áp dụng kỹ thuật này việc sắp xếp dự liệu phải theo này cập nhật.
Sau khi xác định được phân vùng id cho các server nhân bản. Chúng ta sẽ tiến
hành cập nhật lại phân vùng id cho các table theo câu lệnh sau:
DBCC CHECKIDENT('<TableName>','reseed',<RangeID>)
Lưu ý: Khi sử dụng Entity framework chúng ta có thể refesh context để tránh
đụng độ id mà không cần phân vùng id. Tuy nhiên việc refesh này sẽ làm tăng độ
trễ cho việc đồng bộ dữ liệu.
D. THEO DÕI HỌAT ĐỘNG CỦA REPLICATION
Sau khi cài đặt và cấu hình thành công chúng ta có thể theo dõi hoạt động
replication bằng cách click chuột phải vào node Replication và chọn Launch
Replication Monitor
37. (Hình minh họa theo dõi hoạt động của Replication)
Trình theo dõi hoạt động replication sẽ hiển thị. Chúng ta có thể click vào các
node để xem trạng thái hoạt động
38. (Hình minh họa trạng thái hoạt động tốt của replication)
Trình theo dõi hoạt động sẽ hiển thị các thông số status (trạng thái) ,subscription
(server nhân bản /thuê bao), Perfomaince (hiệu năng) , latency (độ trễ khi cập
nhật).
Bên cạnh đó trình dõi hoạt động cũng cho phép gửi thông tin kiểm tra từng bước
ngay lập tức đế các server thông qua chức năng Tracer tokens.Chúng ta có thể
thực hiện việc này bằng cách click tab Tracer tokens sau đó click Insert Tracer để
kiểm tra.
39. (Hình minh họa theo dõi hoạt động của replication)
Với trình theo dõi hoạt động cho phép người quản trị hệ thống theo dõi và xác
định server nhân bản bị lỗi để kịp thời khắc phục sự cố.
(Hình minh họa lỗi không kết nối được nhân bản server)