Cơ sở dữ liệu cụm và cân bằng tải


149

Phân cụm cơ sở dữ liệu là gì? Nếu bạn cho phép cùng một cơ sở dữ liệu trên 2 máy chủ khác nhau, làm thế nào để chúng giữ dữ liệu được đồng bộ hóa. Và làm thế nào điều này khác với cân bằng tải từ quan điểm máy chủ cơ sở dữ liệu?

Câu trả lời:


132

Phân cụm cơ sở dữ liệu là một thuật ngữ mơ hồ, một số nhà cung cấp cho rằng một cụm có hai hoặc nhiều máy chủ chia sẻ cùng một bộ lưu trữ, một số khác gọi một cụm là một bộ máy chủ được sao chép.

Bản sao xác định phương thức mà một bộ máy chủ vẫn được đồng bộ hóa mà không phải chia sẻ bộ lưu trữ để có thể phân tán theo địa lý, có hai cách chính để thực hiện:

  • Sao chép master-master (hoặc multi-master): Bất kỳ máy chủ nào cũng có thể cập nhật cơ sở dữ liệu. Nó thường được chăm sóc bởi một mô-đun khác trong cơ sở dữ liệu (hoặc toàn bộ phần mềm khác nhau chạy trên đầu chúng trong một số trường hợp).

    Nhược điểm là rất khó để làm tốt và một số hệ thống mất các thuộc tính ACID khi ở chế độ sao chép này.

    Ưu điểm là nó linh hoạt và bạn có thể hỗ trợ sự cố của bất kỳ máy chủ nào trong khi vẫn cập nhật cơ sở dữ liệu.

  • sao chép master-Slave: Chỉ có một bản sao duy nhất của dữ liệu có thẩm quyền, được đẩy đến các máy chủ nô lệ.

    Nhược điểm là nó ít chịu lỗi hơn, nếu chủ chết, không có thay đổi nào nữa trong các nô lệ.

    Ưu điểm là dễ thực hiện hơn so với đa chủ và nó thường bảo toàn các thuộc tính ACID.

Cân bằng tải là một khái niệm khác, nó bao gồm phân phối các truy vấn được gửi đến các máy chủ đó để tải được phân bổ đều nhất có thể. Nó thường được thực hiện ở lớp ứng dụng (hoặc với nhóm kết nối). Mối quan hệ trực tiếp duy nhất giữa sao chép và cân bằng tải là bạn cần một số sao chép để có thể tải cân bằng, ngoài ra bạn có một máy chủ duy nhất.


1
À, quên về sao chép :) Vâng, bạn có thể đạt được cân bằng tải theo cách đó trong logic kết hợp mức độ ứng dụng w / :). +1
Jimmy Chandra

1
Các tài liệu Postgresql đề cập đến "cụm cơ sở dữ liệu" theo cách khác: "Trước khi bạn có thể làm bất cứ điều gì, bạn phải khởi tạo một vùng lưu trữ cơ sở dữ liệu trên đĩa. Chúng tôi gọi đây là cụm cơ sở dữ liệu. (SQL sử dụng cụm danh mục thuật ngữ.) cơ sở dữ liệu được quản lý bởi một phiên bản duy nhất của máy chủ cơ sở dữ liệu đang chạy. " postgresql.org/docs/8.3/static/creating-cluster.html
Donato

1
Các thuộc tính ACID có nghĩa là gì, hay đúng hơn, chính xác là bạn mất gì nếu bạn không bảo quản chúng?
TheStoryCoder

@TheStoryCoder Trong khoa học máy tính, ACID (Nguyên tử, Tính nhất quán, Cách ly, Độ bền) là một tập hợp các thuộc tính của các giao dịch cơ sở dữ liệu nhằm đảm bảo tính hợp lệ ngay cả trong trường hợp xảy ra lỗi, mất điện, v.v. Trong bối cảnh cơ sở dữ liệu, một chuỗi cơ sở dữ liệu các hoạt động thỏa mãn các thuộc tính ACID (và chúng có thể được coi là một hoạt động logic đơn lẻ trên dữ liệu) được gọi là một giao dịch. Ví dụ: việc chuyển tiền từ tài khoản ngân hàng này sang tài khoản ngân hàng khác, thậm chí liên quan đến nhiều thay đổi như ghi nợ một tài khoản và ghi có tài khoản khác, là một giao dịch.
fizampou

17

Từ quan điểm của SQL Server:

Phân cụm sẽ cung cấp cho bạn một cấu hình chủ động - thụ động. Có nghĩa là trong cụm 2 nút, một trong số chúng sẽ là hoạt động (phục vụ) và cụm còn lại sẽ bị động (chờ để tiếp quản khi nút hoạt động không thành công). Đó là một tính sẵn sàng cao từ quan điểm phần cứng.

Bạn có thể có một cụm hoạt động tích cực, nhưng nó sẽ yêu cầu nhiều phiên bản SQL Server chạy trên mỗi nút. (tức là Instance 1 trên Node A không thành công với Instance 2 trên Node B và phiên bản 1 trên Node B không thành công với phiên bản 2 trên Node A).

Cân bằng tải (ít nhất là từ quan điểm của SQL Server) không tồn tại (ít nhất là trong cùng một ý nghĩa của cân bằng tải máy chủ web). Bạn không thể cân bằng tải theo cách đó. Tuy nhiên, bạn có thể chia ứng dụng của mình để chạy trên một số cơ sở dữ liệu trên máy chủ 1 và cũng chạy trên một số cơ sở dữ liệu trên máy chủ 2, v.v ... Đây là phương tiện chính của "cân bằng tải" trong thế giới SQL.


9

Phân cụm sử dụng lưu trữ được chia sẻ của một số loại (ví dụ: lồng ổ đĩa hoặc SAN) và đặt hai cơ sở dữ liệu phía trước trên đó. Các máy chủ ngoại vi chia sẻ một địa chỉ IP và tên mạng cụm mà khách hàng sử dụng để kết nối và họ quyết định giữa chính họ hiện đang phụ trách phục vụ các yêu cầu của khách hàng.

Nếu bạn đang hỏi về một máy chủ cơ sở dữ liệu cụ thể, hãy thêm câu hỏi đó vào câu hỏi của bạn và chúng tôi có thể thêm chi tiết về việc triển khai chúng, nhưng cốt lõi, đó là phân cụm.


6

Phân cụm cơ sở dữ liệu thực sự là một chế độ sao chép đồng bộ giữa hai hoặc có thể nhiều nút hơn với chức năng bổ sung khả năng chịu lỗi được thêm vào hệ thống của bạn và đó cũng là một kiến ​​trúc không chia sẻ. Bằng cách không chia sẻ, điều đó có nghĩa là các nút riêng lẻ thực sự không chia sẻ bất kỳ tài nguyên vật lý nào như đĩa hoặc bộ nhớ.

Liên quan đến việc giữ cho dữ liệu được đồng bộ hóa, có một máy chủ quản lý mà tất cả các nút dữ liệu được kết nối cùng với nút SQL để đạt được điều này (nói riêng về MySQL).

Bây giờ về sự khác biệt: cân bằng tải chỉ là một kết quả có thể đạt được thông qua phân cụm, các kết quả khác bao gồm tính sẵn sàng cao, khả năng mở rộng và khả năng chịu lỗi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.