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?
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:
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.
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.
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.
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.