Giới thiệu
SQL Server Replication là một tính năng của SQL Server cho phép chúng tôi chuyển dữ liệu từ phiên bản này sang phiên bản khác cho các mục đích như hợp nhất dữ liệu vào môi trường báo cáo hoặc di chuyển. Cá nhân tôi sẽ không coi SQL Server Replication là một công nghệ có tính khả dụng cao mặc dù một số người coi nó là như vậy.
Sao chép SQL Server sử dụng các thuật ngữ tương tự như các thuật ngữ trong ngành xuất bản để mô tả cách dữ liệu được xử lý từ nguồn đến đích. Các điều khoản chính như sau:
- Publisher - một phiên bản SQL Server cung cấp dữ liệu có sẵn để sao chép sang các phiên bản khác (được đóng gói dưới dạng ấn phẩm).
- Ấn phẩm - một đơn vị sẵn sàng được chuyển đến phiên bản nhận bao gồm một tập hợp các bài báo thực sự là các đối tượng cơ sở dữ liệu.
- Nhà phân phối - một phiên bản SQL Server chịu trách nhiệm lưu trữ dữ liệu được liên kết với một hoặc nhiều nhà xuất bản trong cơ sở dữ liệu được gọi là cơ sở dữ liệu phân phối . A Nhà phân phối địa phương được lưu trữ trong cùng một trường hợp với Nhà xuất bản trong khi Nhà phân phối từ xa nằm trong một phiên bản khác.
- Người đăng ký - một phiên bản nhận cơ sở dữ liệu được sao chép. Đăng ký của người đăng ký là một yêu cầu về một bản sao ấn phẩm mà họ mong đợi nhận được từ Nhà xuất bản.
- Ảnh chụp nhanh.
Trong bài viết này, tôi sẽ chia sẻ một vài điểm tôi học được từ việc định cấu hình bản sao SQL Server để hỗ trợ một thuê bao không đồng nhất. Tôi sẽ tạo một ấn phẩm và sau đó là một đăng ký Oracle sẽ phụ thuộc vào ấn phẩm này. Tôi cũng sẽ trình bày một số điểm cùng với quy trình rất quan trọng để khắc phục sự cố.
Các bước để định cấu hình phiên sao chép ảnh chụp nhanh như sau:
- Định cấu hình nhà phân phối
- Định cấu hình một nhà xuất bản (cùng với ấn phẩm bao gồm các bài báo đang được xuất bản)
- Định cấu hình người đăng ký
Tôi sẽ giải thích ngắn gọn từng bước.
Định cấu hình nhà phân phối
Nhà phân phối là một ví dụ chịu trách nhiệm lưu trữ thông tin được sử dụng trong quá trình sao chép. Khi bạn thử tạo một ấn phẩm trong phiên bản lần đầu tiên, SQL Server sẽ đề xuất bạn định cấu hình Nhà phân phối. Trong bài viết này, Nhà phân phối của chúng tôi là Nhà phân phối địa phương .
Tạo ấn phẩm
Hãy để chúng tôi xác định cơ sở dữ liệu có chứa các đối tượng mà chúng tôi muốn sao chép. Đây sẽ là một Cơ sở dữ liệu xuất bản .
Để tạo cơ sở dữ liệu xuất bản, hãy làm theo hướng dẫn trên ảnh chụp màn hình bên dưới.
Bước này cho phép bạn chọn loại ấn phẩm mà bạn muốn định cấu hình. Mỗi loại xuất bản được mô tả trong ngăn dưới. Vì lý do đơn giản và tương thích, chúng tôi chọn một ấn phẩm ảnh chụp nhanh. Xin lưu ý rằng chúng tôi dự định sao chép các đối tượng sang một phiên bản Oracle. Trong trường hợp này, Giao dịch và Ấn phẩm Ảnh chụp nhanh được hỗ trợ. Có những trường hợp sử dụng tốt khác cho sao chép ngang hàng và hợp nhất.
Tại bước này, chúng ta chọn các bài viết mà chúng ta muốn xuất bản. SQL Server cho phép chúng tôi xuất bản bốn loại đối tượng chính như:
- Bảng
- Thủ tục được lưu trữ
- Lượt xem
- Các chức năng do người dùng xác định
Như bạn có thể thấy, chúng tôi sẽ xuất bản hai bảng:Đơn hàng và Dòng thứ tự. Với mục đích chứng minh tính linh hoạt của việc sao chép SQL Server, chúng tôi sẽ lọc các bản ghi như được hiển thị bên dưới.
Lưu ý: Chúng tôi quan tâm đến số lượng OrderID lớn hơn 1000.
Để loại trừ các hàng không mong muốn khỏi các bảng đã xuất bản, hãy nhấp vào Thêm… rồi đến Tiếp theo .
Ảnh chụp màn hình bên dưới hiển thị cách lọc các cột cho bảng OrderLines.
Tiếp theo, cấu hình các thuộc tính Snapshot Agent. Chúng tôi xác định một ảnh chụp nhanh ban đầu và khoảng thời gian một ảnh chụp nhanh mới được tạo. Dữ liệu được trích xuất ở bước này được lưu trữ trong một thư mục được chỉ định khi định cấu hình nhà phân phối ban đầu.
Đầu tiên, hãy thiết lập một lịch trình để một đại lý chụp nhanh bắt đầu. Nhấp vào Tiếp theo .
Đối với mỗi tác nhân ảnh chụp nhanh, hãy chỉ định tài khoản mà nó sẽ chạy.
Sau đó, định cấu hình cài đặt bảo mật của Snapshot Agent. Bảng Cài đặt Bảo mật sẽ mở ra một cửa sổ khác, nơi chúng tôi xác định ai là người chạy quy trình Tác nhân Ảnh chụp cũng như xác định chi tiết đăng nhập Máy chủ SQL được kết nối với nhà xuất bản. Có một số quyền nhất định được yêu cầu bởi những hiệu trưởng này, điều này có thể hơi khó khăn trong quá trình sản xuất. Sử dụng tài khoản SQL Server Agent Service là một giải pháp để tránh các biến chứng nhưng nó KHÔNG thực sự được Microsoft khuyến nghị.
Gần đến cuối, bạn sẽ cần quyết định xem bạn muốn lưu cấu hình dưới dạng tập lệnh để sử dụng sau này hay tạo ấn phẩm ngay lập tức.
Bước tiếp theo (Hình 16) tóm tắt tất cả các tùy chọn bạn đã chọn. Bạn nên xem xét nhanh trước khi nhấp vào nút Hoàn tất nút.
Quá trình Tạo Ấn phẩm bắt đầu. Bạn có thể nhấp vào Dừng để làm gián đoạn quá trình.
Sau khi quá trình hoàn tất, ấn phẩm của bạn sẽ hiển thị trong ngăn Object Explorer trên SQL Server Management Studio.
Thêm người đăng ký
Người đăng ký nhận các ấn phẩm do Nhà xuất bản cung cấp . Bản sao của ấn phẩm được gửi đến người đăng ký được gọi là Đăng ký . Một nhà xuất bản có thể có nhiều người đăng ký. Mỗi người đăng ký
nhận các bài báo do Nhà xuất bản này xuất bản dưới dạng một đơn vị được gọi là ấn phẩm trong phạm vi nhà xuất bản có liên quan và được coi là đăng ký cho Người đăng ký.
Bằng cách tạo đăng ký, chúng tôi chỉ cần nói với Nhà xuất bản rằng “Tôi muốn có các bản sao của ấn phẩm này”. Nhà xuất bản có thể có nhiều ấn phẩm thì cũng có thể có nhiều người đăng ký một
ấn phẩm. Do đó, mối quan hệ của Nhà xuất bản với Người đăng ký là mối quan hệ một - nhiều.
Trình hướng dẫn Đăng ký Mới cho phép chúng tôi quyết định ấn phẩm mà chúng tôi muốn đăng ký. Chúng tôi có thể chọn từ danh sách các ấn phẩm đã tạo trước đó như trong Hình 20.
Tiếp theo, chúng tôi quyết định xem chúng tôi có muốn chạy Đăng ký Đẩy thay vì Đăng ký Kéo hay không. Mặc dù Đăng ký kéo sẽ tốt hơn cho hiệu suất khi bạn dự kiến nhiều người đăng ký, nhưng nó sẽ không
hoạt động đối với việc nhân rộng cơ sở dữ liệu không đồng nhất. Người đăng ký không phải SQL Server phải sử dụng Đăng ký kéo. Điều đáng nói là các bài báo được xuất bản trong kịch bản này cũng được giới hạn trong các bảng và các chế độ xem được lập chỉ mục.
Thêm người đăng ký Oracle bằng tên nguồn dữ liệu (DSN). DSN này phải đã được tạo, kiểm tra và phát hiện ra là đang hoạt động để có thể kết nối với phiên bản Oracle thông qua Oracle Net. Điều này có nghĩa là bạn cần một ứng dụng khách Oracle được cài đặt trên máy chủ SQL Server có mục nhập vào tệp có tên tnsnames.ora xác định đích của kết nối. Mục nhập TNS này đến lượt nó được sử dụng để định cấu hình tên nguồn dữ liệu mà Trình hướng dẫn đăng ký mới đang yêu cầu ở giai đoạn này.
Mục nhập mà tôi đã tạo trong tệp tnsnames.ora của mình trông giống như sau:
ORCL10G = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = IGIRI-LP)(PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl10g) ) )
Phần được đánh dấu là bí danh trong khi các chi tiết khác xác định đích của kết nối. Chúng tôi có thể xác nhận xem mục nhập này có hoạt động bình thường hay không và liệu các Biến môi trường Oracle của tôi có được định cấu hình chính xác hay không bằng cách sử dụng tnsping tiện ích như hình dưới đây.
Sau khi được xác nhận, Mục nhập TNS này được sử dụng để định cấu hình DSN mà chúng tôi dự định sử dụng. Tên dịch vụ TNS của chúng tôi được gọi là ORCL10G trong khi DSN được gọi là ORCLDC . Đây là DSN mà chúng tôi sử dụng trong Trình hướng dẫn Đăng ký Mới.
Lưu ý rằng chúng tôi đã sử dụng phiên bản 64-Bit của ODBC để định cấu hình DSN và đó là DSN hệ thống, không phải DSN người dùng. Cấu hình không phụ thuộc vào người đăng nhập vào máy tính.
Chọn loại người đăng ký sẽ được thêm vào và nhập tên nguồn dữ liệu. Nhấp vào OK .
Chọn một hoặc một số người đăng ký, cũng như chỉ định cơ sở dữ liệu cho mỗi đăng ký.
Sau khi DSN được thêm vào, chúng tôi có thể tiến hành định cấu hình bảo mật cho đại lý phân phối. Chúng tôi phát hiện ra rằng điều này tương tự với trường hợp khi chúng tôi định cấu hình Bảo mật tác nhân chụp nhanh trong Trình hướng dẫn Xuất bản Mới.
Tuy nhiên, ở đây, chúng tôi có một phần mà chúng tôi thiết lập kết nối với Người đăng ký chứ không phải là Nhà xuất bản (nhớ lại rằng đây là một đăng ký đẩy). Tài khoản người dùng này phải được tạo trên phiên bản Oracle và phải có đặc quyền để tạo bảng và hạn ngạch trên vùng bảng mặc định của nó (ở đây bạn có thể cần Oracle DBA).
Thêm thông số vào bảo mật của đại lý phân phối và nhấp vào OK .
Chỉ định tài khoản và các tùy chọn kết nối cho từng đại lý phân phối và nhấp vào Tiếp theo .
Xác định lịch trình đồng bộ hóa cho từng tác nhân. Trong trường hợp của chúng tôi, chúng tôi đã chọn đồng bộ hóa liên tục. Nhấp vào Tiếp theo .
Chọn tùy chọn để khởi tạo đăng ký ngay lập tức có nghĩa là sao chép lại TẤT CẢ dữ liệu có sẵn trong thư mục Ảnh chụp nhanh. Người đăng ký NoSQL Server nên khởi tạo lại đăng ký khi bất kỳ bài viết mới nào được thêm vào Ấn phẩm. Nhấp vào Tiếp theo .
Chọn các tùy chọn sẽ được thực hiện sau khi quá trình hoàn tất thành công. Nhấp vào Tiếp theo .
Xác minh thông tin bạn đã thêm và nhấp vào Hoàn tất .
Quá trình Tạo Đăng ký sẽ chạy.
Đăng ký chúng tôi vừa tạo hiển thị một mục nhập trong Object Explorer (trên Nhà xuất bản) được ánh xạ tới ấn phẩm mẹ của nó. Lưu ý rằng nó không hiển thị trong nút Đăng ký cục bộ cung cấp cho bạn danh sách các đăng ký được tạo trên phiên bản hiện tại không có trong trường hợp này.
Giám sát và Khắc phục sự cố
SQL Server cung cấp Trình giám sát nhân bản để xem xét và giám sát chi tiết của tất cả các phiên nhân bản trên phiên bản. Replication Monitor có thể thông báo cho quản trị viên khi Snapshot Agent chạy và hoàn thành. Nó cũng có thể cho chúng tôi biết liệu các Đăng ký đã được khởi chạy hay chưa và liệu Đại lý phân phối có hoạt động trơn tru hay không.
Có tám công việc SQL Server Agent được liên kết với cấu hình hiện tại của chúng tôi. Xem lịch sử của những công việc này cũng cung cấp thông tin chi tiết về việc liệu mọi thứ có ổn hay không.
Các lỗi thực tế của Oracle được liệt kê trong Trình theo dõi nhân bản và trong nhật ký Lỗi SQL Server khi chúng gặp phải. Mức độ chi tiết này làm cho SQL Server Replication trở nên thú vị để khắc phục sự cố. Có kiến thức về Oracle (cho SQL Server DBA) sẽ mất nhiều thời gian để hiểu các lỗi có thể phát sinh.
Hãy xem ví dụ về lỗi trong Hình 34. Lỗi này xảy ra trước khi môi trường Oracle Net và ODBC được định cấu hình chính xác. Các lỗi cho thấy một dấu hiệu rất rõ ràng về vị trí của vấn đề.
Chế độ xem Giám sát hoạt động công việc cũng cho chúng tôi biết công việc nào thành công và công việc nào chúng tôi cần khắc phục sự cố một cách chi tiết bằng cách kiểm tra Lịch sử công việc.
Khi tất cả các lỗi trước đó được giải quyết, việc mở đăng ký bằng cách nhấp đúp vào đăng ký đó sẽ cho chúng tôi cái nhìn chi tiết về tất cả các phiên, lỗi và kết quả mà chúng tôi mong đợi khi mọi thứ đều ổn. Quan sát rằng Đại lý sao chép dữ liệu hàng loạt từ Nhà xuất bản đến Người đăng ký theo lô. Chúng tôi cũng có thể truy vấn các bảng đã được tạo trong phiên bản Oracle và so sánh các bản ghi. (Hình 37).
Như bạn có thể thấy, SQL Server chuẩn bị bảng loại trừ lược đồ nguồn (Bán hàng) trước khi tạo bảng trong Oracle và sao chép dữ liệu.
Số lượng bản ghi trong bản sao Oracle khớp với bản ghi trong bảng nguồn và có tính đến thực tế là chúng tôi lọc bảng OrderLines cho các OrderID lớn hơn 1000.
Kết luận
Chúng tôi đã chạy sơ qua quá trình định cấu hình sao chép cơ sở dữ liệu không đồng nhất với một cá thể Oracle dưới dạng Người đăng ký. Mặc dù tùy chọn này đang dần được Microsoft không dùng nữa, nhưng có những trường hợp sử dụng vẫn có thể được hưởng lợi từ các khả năng được cung cấp bởi tính năng SQL Server cũ này. Phần Tài liệu tham khảo cung cấp một bài đọc rộng hơn về chủ đề mà tôi tin rằng sẽ hữu ích cho những người muốn thực hành nhiều hơn.
Tài liệu tham khảo
Định cấu hình sao chép cho các nhóm luôn sẵn sàng
Người đăng ký không phải Oracle
Sao chép cơ sở dữ liệu không đồng nhất
Người đăng ký Oracle