Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Sao chép cơ sở dữ liệu SQL Server

Nhân bản cơ sở dữ liệu là công nghệ phân phối dữ liệu từ máy chủ chính đến các máy chủ thứ cấp. Replication hoạt động trên khái niệm Master-slave nơi cơ sở dữ liệu Master phân phối dữ liệu đến một hoặc nhiều máy chủ nô lệ. Nhân rộng có thể được thiết lập giữa nhiều phiên bản SQL Server trên cùng một máy chủ, HOẶC nó có thể được thiết lập giữa nhiều máy chủ cơ sở dữ liệu trong cùng một trung tâm dữ liệu được phân tách theo địa lý hoặc giống nhau.
Có hai lợi ích chính của việc sử dụng sao chép SQL Server:

  1. Sử dụng tính năng sao chép, chúng tôi có thể nhận được dữ liệu gần như thời gian thực có thể được sử dụng cho mục đích báo cáo. Ví dụ:khi bạn muốn tách biệt tải OLTP chuyên sâu ghi trên một máy chủ và tải chuyên sâu đọc trên một máy chủ khác, bạn có thể thiết lập nhân rộng để giữ cho dữ liệu được đồng bộ hóa trên cả hai máy chủ.
  2. Lợi ích thứ hai là bạn có thể lên lịch chạy bản sao vào thời gian cụ thể. Ví dụ:nếu bạn muốn máy chủ báo cáo đó chứa dữ liệu của ngày đã hoàn thành, bạn có thể lập lịch trình sao chép nhanh cho phù hợp. Chúng tôi không cần viết thêm logic để xử lý dữ liệu hiện tại.

Nhân rộng cung cấp rất nhiều tính linh hoạt. Sử dụng bản sao, chúng ta có thể lọc ra các hàng và cũng có thể sao chép tập hợp con dữ liệu của bất kỳ bảng nào. Chúng tôi có thể thay đổi dữ liệu được sao chép hoặc chỉ sao chép cập nhật và chèn và bỏ qua việc xóa. Chúng tôi cũng có thể sao chép dữ liệu từ một hệ thống cơ sở dữ liệu khác như Oracle.

Các thành phần của Tái tạo

Có bảy thành phần cốt lõi của SQL Server Replication. Sau đây là danh sách:

  1. Nhà xuất bản.
  2. Nhà phân phối.
  3. Người đăng ký.
  4. Các bài báo.
  5. Xuất bản.
  6. Đẩy đăng ký.
  7. Kéo theo Đăng ký.

Sau đây là các chi tiết:

Các bài báo

Bài viết là một đối tượng cơ sở dữ liệu, chẳng hạn như bảng SQL hoặc một thủ tục được lưu trữ. Như tôi đã đề cập ở trên, bằng cách sử dụng Replication, chúng ta có thể lọc dữ liệu hoặc chúng ta có thể sao chép cột bảng đã chọn, do đó các cột hoặc hàng trong bảng được coi là bài viết.

Xuất bản

Các bài báo không thể được sao chép cho đến khi chúng trở thành một phần của ấn phẩm. Ấn phẩm là nhóm các Bài báo / Đối tượng cơ sở dữ liệu. Nó cũng đại diện cho tập dữ liệu sẽ được sao chép bởi SQL Server.

Nhà xuất bản

Nhà xuất bản chứa một cơ sở dữ liệu chính có dữ liệu cần được xuất bản. Nó xác định dữ liệu nào sẽ được phân phối cho tất cả người đăng ký.

Nhà phân phối

Nhà phân phối là cầu nối giữa nhà xuất bản và người đăng ký. Nhà phân phối thu thập tất cả dữ liệu đã xuất bản và giữ nó cho đến khi gửi cho tất cả các thuê bao. Nó là cầu nối giữa nhà xuất bản và người đăng ký. Nó hỗ trợ nhiều nhà xuất bản và khái niệm người đăng ký. Không bắt buộc phải định cấu hình nhà phân phối trên một Phiên bản SQL riêng biệt hoặc một máy chủ riêng biệt. Nếu chúng tôi không định cấu hình nó, nhà xuất bản có thể hoạt động như một nhà phân phối. Các tổ chức có quy mô nhân rộng có thể định cấu hình nhà phân phối trên một hệ thống riêng biệt.

Người đăng ký

Người đăng ký là điểm cuối của nguồn hoặc đích mà dữ liệu hoặc ấn phẩm được sao chép sẽ được truyền. Trong nhân rộng, có một nhà xuất bản, nó có thể có nhiều người đăng ký.

Đẩy đăng ký

Trong đăng ký đẩy, nhà xuất bản cập nhật dữ liệu cho người đăng ký. Trong một đăng ký Đẩy, người đăng ký là người bị động. Nhà xuất bản gửi các bài báo hoặc ấn phẩm cho tất cả những người đăng ký của họ. Dựa trên yêu cầu của tổ chức, khi tạo trình hướng dẫn sao chép, trên màn hình, bạn có thể chọn đăng ký sẽ được sử dụng. Sao chép giao dịch và sao chép ngang hàng sử dụng đăng ký Đẩy để duy trì tính khả dụng trong thời gian thực của dữ liệu.

Kéo đăng ký

Trong đăng ký Pull, tất cả người đăng ký yêu cầu dữ liệu mới hoặc dữ liệu cập nhật từ nhà xuất bản của nó. Trong một đăng ký kéo, chúng tôi có thể kiểm soát rằng những dữ liệu hoặc thay đổi dữ liệu nào là cần thiết cho người đăng ký. Nó hữu ích khi chúng ta không cần dữ liệu đã thay đổi ngay lập tức.

Các kiểu sao chép

SQL Server hỗ trợ ba kiểu sao chép:

  1. Nhân rộng Giao dịch.
  2. Sao chép Ảnh chụp nhanh.
  3. Nhân rộng Hợp nhất.

Sao chép giao dịch

Nhân bản giao dịch, mọi thay đổi lược đồ, thay đổi dữ liệu xảy ra trên cơ sở dữ liệu của nhà xuất bản sẽ được sao chép trên cơ sở dữ liệu người đăng ký. Bất cứ khi nào bất kỳ hoạt động Cập nhật, Xóa hoặc Chèn nào xảy ra trên cơ sở dữ liệu của nhà xuất bản, các thay đổi sẽ được theo dõi và những thay đổi đó được gửi đến cơ sở dữ liệu người đăng ký. Sao chép giao dịch chỉ gửi một lượng dữ liệu giới hạn qua mạng. Hơn nữa, các thay đổi gần như theo thời gian thực, do đó nó có thể được sử dụng để thiết lập trang DR hoặc có thể được sử dụng để mở rộng quy mô hoạt động báo cáo. Nhân rộng giao dịch là lý tưởng cho các trường hợp sau:

  1. Khi bạn muốn thiết lập một hệ thống, những thay đổi được thực hiện đối với nhà xuất bản sẽ được áp dụng ngay cho người đăng ký.
  2. Nhà xuất bản có CHÈN, CẬP NHẬT và XÓA ở mức thấp.
  3. Khi bạn muốn thiết lập ý nghĩa sao chép không đồng nhất, nhà xuất bản hoặc người đăng ký cho cơ sở dữ liệu không phải SQL Server, như Oracle.

Khi bất kỳ thay đổi nào được thực hiện trên cơ sở dữ liệu của nhà xuất bản, các thay đổi được ghi vào tệp nhật ký trên cơ sở dữ liệu của nhà xuất bản. Trang web Nhà phân phối / Nhà xuất bản, hai công việc sẽ được tạo.

  1. Tác nhân Ảnh chụp nhanh :Công việc của tác nhân ảnh chụp nhanh tạo ra ảnh chụp nhanh của lược đồ, dữ liệu của các đối tượng mà chúng tôi muốn sao chép hoặc xuất bản. Các tệp của ảnh chụp nhanh có thể được lưu trên máy chủ của Nhà xuất bản hoặc vị trí mạng. Khi chúng tôi bắt đầu nhân rộng lần đầu tiên, nó sẽ tạo ra một ảnh chụp nhanh và áp dụng nó cho tất cả người đăng ký. Tác nhân chụp nhanh vẫn không hoạt động cho đến khi nó được kích hoạt theo cách thủ công hoặc được lên lịch chạy vào thời gian cụ thể.
  2. Tác nhân đọc nhật ký :Công việc tác nhân đọc nhật ký chạy liên tục. Nó đọc các thay đổi (CHÈN, CẬP NHẬT và XÓA) xảy ra từ nhật ký giao dịch của cơ sở dữ liệu nhà xuất bản và gửi chúng đến đại lý phân phối.
  3. Đại lý phân phối :Sau khi các thay đổi được truy xuất từ ​​tác nhân đọc nhật ký, đại lý phân phối sẽ gửi tất cả các thay đổi đến người đăng ký.

Khi chúng tôi định cấu hình sao chép giao dịch, nó sẽ thực hiện các hoạt động sau

  • Quá trình này bắt đầu bằng cách lấy Ảnh chụp nhanh đầu tiên của dữ liệu xuất bản và các đối tượng cơ sở dữ liệu và ảnh chụp nhanh áp dụng cho người đăng ký.
  • Tác nhân đọc nhật ký liên tục theo dõi T-Log của nhà xuất bản và nếu có bất kỳ thay đổi nào, nó sẽ gửi chúng đến nhà phân phối hoặc trực tiếp cho người đăng ký.

Hình ảnh sau đây mô tả cách hoạt động của sao chép giao dịch:

Ưu điểm:

  1. Bản sao giao dịch có thể được sử dụng làm máy chủ SQL dự phòng hoặc nó có thể được sử dụng cho hệ thống báo cáo cân bằng tải hoặc phân tách và hệ thống OLTP.
  2. Máy chủ nhà xuất bản sao chép dữ liệu tới máy chủ người đăng ký với độ trễ thấp.
  3. Sử dụng sao chép giao dịch, có thể thực hiện sao chép cấp đối tượng.
  4. Nhân rộng giao dịch có thể được áp dụng khi bạn có ít dữ liệu cần bảo vệ hơn và bạn nên có kế hoạch khôi phục dữ liệu nhanh chóng.

Nhược điểm:

  1. Sau khi thiết lập bản sao, các thay đổi giản đồ trên nhà xuất bản sẽ không áp dụng trên máy chủ người đăng ký. Chúng tôi phải thực hiện những thay đổi đó theo cách thủ công bằng cách tạo ảnh chụp nhanh mới và áp dụng nó cho người đăng ký.
  2. Nếu chúng tôi thay đổi máy chủ, chúng tôi phải định cấu hình lại bản sao.
  3. Nếu sao chép giao dịch được sử dụng làm thiết lập DR, chúng tôi phải chuyển đổi dự phòng theo cách thủ công.

Sao chép ảnh chụp nhanh

Sao chép ảnh chụp nhanh tạo ra một bức ảnh hoàn chỉnh / ảnh chụp nhanh của ấn phẩm theo một lịch trình xác định và gửi các tệp ảnh chụp nhanh cho người đăng ký. Khi sao chép ảnh chụp nhanh xảy ra, dữ liệu đích sẽ được thay thế bằng ảnh chụp nhanh mới. Sao chép ảnh chụp nhanh là lựa chọn tốt nhất khi dữ liệu ít biến động. Ví dụ:các bảng Master như City, Zipcode, Pincode là những ứng cử viên tốt nhất để nhân rộng ảnh chụp nhanh.

Trong khi định cấu hình sao chép ảnh chụp nhanh, các thành phần quan trọng sau được xác định:

  1. Tác nhân Ảnh chụp nhanh :Nó tạo ra một hình ảnh hoàn chỉnh của lược đồ và dữ liệu được xác định trong xuất bản và gửi nó đến nhà phân phối. Tác nhân chụp nhanh vẫn không hoạt động cho đến khi nó được kích hoạt theo cách thủ công HOẶC được lập lịch để chạy vào thời gian cụ thể.
  2. Đại lý nhà phân phối :Nó gửi các tệp ảnh chụp nhanh cho người đăng ký và áp dụng giản đồ và dữ liệu bằng cách thay thế lược đồ và dữ liệu hiện có.

Sao chép ảnh chụp nhanh thực hiện các hoạt động sau:

  1. Theo lịch trình đã xác định, tác nhân chụp nhanh đặt một khóa dùng chung trên lược đồ và dữ liệu sẽ được xuất bản.
  2. Toàn bộ ảnh chụp nhanh của dữ liệu đã xuất bản được sao chép vào đầu cuối của nhà phân phối. Tác nhân ảnh chụp nhanh tạo ba tệp
    • Tệp vào lược đồ cơ sở dữ liệu đã tạo của dữ liệu đã xuất bản.
    • Tệp BCP để xuất dữ liệu trong Bảng SQL
    • Tệp chỉ mục để xuất dữ liệu chỉ mục.
  1. Sau khi tệp được tạo, tác nhân chụp nhanh sẽ giải phóng các khóa được chia sẻ đối với dữ liệu và dữ liệu đã xuất bản.
  2. Đại lý phân phối bắt đầu và thay thế lược đồ người đăng ký và dữ liệu bằng cách sử dụng các tệp do đại lý ảnh chụp nhanh tạo.

Hình ảnh sau minh họa cách hoạt động của sao chép ảnh chụp nhanh.

Ưu điểm

  1. Sao chép ảnh chụp nhanh rất đơn giản để thiết lập. Nếu dữ liệu được thay đổi không thường xuyên, thì sao chép ảnh chụp nhanh là một lựa chọn rất phù hợp.
  2. Bạn có thể kiểm soát thời điểm gửi dữ liệu. Ví dụ:một bảng chính có khối lượng dữ liệu lớn nhưng thay đổi ít thường xuyên hơn bạn có thể sao chép dữ liệu khi lưu lượng truy cập thấp.

Nhược điểm

  1. Ảnh chụp nhanh được tạo bởi tác nhân ảnh chụp nhanh chứa dữ liệu đã xuất bản đã thay đổi và không thay đổi, do đó, ảnh chụp nhanh được truyền qua mạng có thể tạo ra độ trễ và ảnh hưởng đến các hoạt động khác.
  2. Khi dữ liệu tăng lên, kích thước của ảnh chụp nhanh sẽ tăng lên và mất nhiều thời gian hơn để tạo và phân phối ảnh chụp nhanh cho người đăng ký.

Hợp nhất sao chép

Bản sao hợp nhất có thể được sử dụng khi chúng tôi cần quản lý các thay đổi trên nhiều máy chủ và những thay đổi này cần được hợp nhất.

Khi chúng tôi định cấu hình sao chép hợp nhất, các thành phần sau sẽ được tạo:

  1. Tác nhân Ảnh chụp nhanh :Tác nhân ảnh chụp nhanh tạo ảnh chụp nhanh đầu tiên của dữ liệu xuất bản và các đối tượng cơ sở dữ liệu. Sau khi tạo ảnh chụp nhanh, ảnh sẽ được phân phối cho tất cả người đăng ký.
  2. Tác nhân hợp nhất :Đại lý hợp nhất chịu trách nhiệm giải quyết xung đột giữa nhà xuất bản và người đăng ký. Mọi xung đột đều được giải quyết thông qua tác nhân hợp nhất sử dụng giải quyết xung đột. Tùy thuộc vào cách bạn định cấu hình giải quyết xung đột, xung đột được giải quyết bởi tác nhân hợp nhất.

Khi chúng tôi định cấu hình sao chép hợp nhất, nó thực hiện các hoạt động sau:

  • Nó bắt đầu bằng cách chụp nhanh dữ liệu xuất bản và các đối tượng cơ sở dữ liệu và ảnh chụp nhanh áp dụng cho người đăng ký.
  • Trong khi định cấu hình sao chép hợp nhất, nó tạo ra các trình kích hoạt trên nhà xuất bản và người đăng ký. Trình kích hoạt có trách nhiệm theo dõi các thay đổi tiếp theo và các chỉnh sửa trên bảng đối với nhà xuất bản và người đăng ký.
  • Khi nhà xuất bản và người đăng ký kết nối với mạng, các thay đổi của hàng dữ liệu và sửa đổi giản đồ sẽ được đồng bộ hóa với nhau. Trong khi hợp nhất các thay đổi của nhà xuất bản và người đăng ký, tác nhân hợp nhất sẽ giải quyết xung đột dựa trên các điều kiện được xác định trong tác nhân hợp nhất.

Hợp nhất sao chép được sử dụng trong môi trường máy chủ với máy khách và lý tưởng cho các trường hợp người đăng ký cần truy xuất dữ liệu từ nhà xuất bản, thực hiện thay đổi ngoại tuyến và sau đó đồng bộ hóa các thay đổi với nhà xuất bản và những người đăng ký khác.

Có thể có những tình huống thực tế trong đó các nhà xuất bản và người đăng ký khác nhau thay đổi cùng một hàng. Vào thời điểm đó, tác nhân Hợp nhất sẽ xem xét cách giải quyết xung đột nào được xác định và thực hiện các thay đổi cho phù hợp.

SQL Server xác định duy nhất một cột bằng cách sử dụng mã định danh duy nhất trên toàn cầu cho mỗi hàng trong bảng đã xuất bản. Nếu bảng đã có một cột định danh duy nhất, thì SQL Server sẽ tự động sử dụng cột đó. Nếu không, nó sẽ thêm một cột rowguid trong bảng và tạo chỉ mục dựa trên cột đó.

Các trình kích hoạt sẽ được tạo trên các bảng đã xuất bản trên cả nhà xuất bản và người đăng ký. Chúng được sử dụng để theo dõi những thay đổi dựa trên những thay đổi của hàng hoặc cột.

Hình ảnh sau đây minh họa cách hoạt động của sao chép hợp nhất:

Ưu điểm:

  1. Đây là cách duy nhất để quản lý việc hợp nhất các thay đổi trên nhiều dữ liệu máy chủ.

Nhược điểm:

  1. Cần nhiều thời gian để sao chép và đồng bộ hóa cả hai đầu.
  2. Có tính nhất quán thấp vì nhiều bên phải được đồng bộ hóa.
  3. Có thể có xung đột trong khi hợp nhất sao chép nếu các hàng giống nhau bị ảnh hưởng ở nhiều người đăng ký và nhà xuất bản. Nó có thể được khắc phục bằng cách sử dụng giải pháp xung đột, nhưng nó làm cho quá trình thiết lập sao chép phức tạp hơn.

Mã T-SQL để xem lại cấu hình sao chép

Tôi đã định cấu hình sao chép ảnh chụp nhanh và sao chép giao dịch trên hai phiên bản máy của tôi. Sử dụng quản lý động SQL (DMV), chúng ta có thể kiểm tra cấu hình của bản sao. Để xem lại cấu hình của bản sao, chúng ta có thể sử dụng mã T-SQL. Mã tập lệnh điền vào những điều sau:

  1. Tên cơ sở dữ liệu người đăng ký.
  2. Tên nhà xuất bản.
  3. Loại đăng ký.
  4. Cơ sở dữ liệu của nhà xuất bản.
  5. Tên tác nhân nhân bản.

Dưới đây là tập lệnh:

SELECT DistributionAgent.subscriber_db 
       [Subscriber DB], 
       DistributionAgent.publication                              [PUB Name], 
       RIGHT(LEFT(DistributionAgent.NAME, Len(DistributionAgent.NAME) - ( Len( 
                                                DistributionAgent.id) + 1 )), 
       Len(LEFT( 
       DistributionAgent.NAME, Len(DistributionAgent.NAME) - 
                               ( 
                                                    Len( 
       DistributionAgent.id) + 1 ))) - ( 
       10 + Len(DistributionAgent.publisher_db) + ( 
       CASE 
       WHEN 
       DistributionAgent.publisher_db = 'ALL' 
                                           THEN 1 
       ELSE 
                                             Len( 
       DistributionAgent.publication) + 2 
          END ) ))              [SUBSCRIBER], 
       ( CASE 
           WHEN DistributionAgent.subscription_type = '0' THEN 'Push' 
           WHEN DistributionAgent.subscription_type = '1' THEN 'Pull' 
           WHEN DistributionAgent.subscription_type = '2' THEN 'Anonymous' 
           ELSE Cast(DistributionAgent.subscription_type AS VARCHAR) 
         END ) 
       [Subscrition Type], 
       DistributionAgent.publisher_db + ' - ' 
       + Cast(DistributionAgent.publisher_database_id AS VARCHAR) 
       [Publisher Database], 
       DistributionAgent.NAME 
       [Pub - DB - Publication - SUB - AgentID] 
FROM   distribution.dbo.msdistribution_agents DistributionAgent 
WHERE  DistributionAgent.subscriber_db <> 'virtual'

Sau đây là kết quả:

Tóm tắt

Trong bài viết này, tôi đã giải thích:

  1. Nguyên tắc cơ bản và lợi ích của Nhân bản và các thành phần của nó.
  2. Sao chép giao dịch.
  3. Sao chép ảnh chụp nhanh.
  4. Nhân rộng Hợp nhất.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khôi phục cơ sở dữ liệu SQL một cách dễ dàng - Hướng dẫn từng bước

  2. Triển khai chức năng phân trang (bỏ qua / lấy) với truy vấn này

  3. Ví dụ về Chuyển đổi ‘smalldatetime’ thành ‘datetime’ trong SQL Server (T-SQL)

  4. CAST và IsNumeric

  5. Khi nào / Tại sao sử dụng Cascading trong SQL Server?