2010-03-08 40 views
5

Tôi đã đọc hầu hết các tài liệu Cụm MySQL và một số hướng dẫn nhưng tôi vẫn có một số điều không rõ ràng, và chủ yếu của họ ngay bây giờ là:MySQL câu hỏi cụm

  1. Khi khởi động lại nút dữ liệu (crash và đi lên một lần nữa) liệu dữ liệu của nó vẫn có sẵn? Cập nhật/Bổ sung sẽ hoạt động như bình thường? Nó sẽ "đồng bộ"?
  2. Cụm làm việc có hoạt động nhanh hơn độc lập không? Đặc biệt, tôi cập nhật các hàng nhiều lần, nhưng mỗi lần một, nghĩa là độ trễ của mạng có thể ảnh hưởng đến hiệu suất. Có bất kỳ mẫu nào tôi có thể làm theo để làm cho mọi thứ nhanh hơn, chẳng hạn như thêm nhiều nút SQL hoặc thêm các nút dữ liệu chế độ?

Về câu hỏi # 2, một bản cập nhật của một hàng là trong cú pháp sau:

UPDATE db_accounts.tbl_items SET items=items+%lld WHERE id_account=%u 

"id_account" là một chỉ số (duy nhất).

Trả lời

8

MySQL Cluster là cơ sở dữ liệu trong bộ nhớ (mặc dù một số cột có thể được lưu trữ trên đĩa, cột được lập chỉ mục không thể). Nếu phích cắm bị kéo, dữ liệu của bạn sẽ biến mất. Quá trình phục hồi cho một nút tái tham gia cluster là nó lấy dữ liệu bị mất từ ​​nút còn sống (yêu cầu liên kết nhanh giữa các nút) và sau đó cẩn thận áp dụng các sự kiện nhân bản cho đến khi nó bắt kịp và có thể tham gia tích cực. Nếu một bản sao lưu gần đây có sẵn, nó có thể được xây dựng lại từ đó thay vì một nút khác, nhưng nguyên tắc là như nhau: nút phải được repopulated với dữ liệu từ đầu.

MySQL Cluster về cơ bản là bảng băm được phân phối. Nút NDB chứa một hàng dữ liệu cụ thể được xác định bằng thuật toán băm được áp dụng cho khóa chính. Hiệu suất tăng bằng cách thêm các nút, giả sử rằng dữ liệu của bạn lan truyền độc đáo trên các nút. Hiệu suất có thể bị ảnh hưởng nặng nếu truy vấn phải chạm vào nhiều nút - nghĩa là. phức tạp tham gia - nhưng là sét nhanh để lấy một hàng cụ thể cho khóa chính của nó.

Rõ ràng, do các nút được phân phối, mạng chậm hoặc tắc nghẽn sẽ ảnh hưởng xấu đến hiệu suất.

+0

Cảm ơn rất nhiều, tôi nghĩ điều đó sẽ thực hiện! – Poni

+0

"Nút NDB chứa một hàng dữ liệu cụ thể được xác định bằng thuật toán băm được áp dụng cho khóa chính". Không phải các hàng được sao chép trong các nút NDB khác? – metdos

5

Ngay cả khi bảng cụm MySQL của bạn nằm trong bộ nhớ, theo mặc định, mọi ghi được kiểm tra không đồng bộ vào đĩa (có thể tắt tính năng này trên cơ sở mỗi bảng).

Nếu toàn bộ cụm không thành công (nguồn điện đến trung tâm dữ liệu bị mất) thì khi bạn sao lưu toàn bộ dữ liệu sẽ được truy xuất từ ​​các điểm kiểm tra đĩa đó. Nhược điểm là khi chúng được tạo ra một cách không đồng bộ, bạn có thể thiếu một vài cập nhật.

Nếu một nút dữ liệu duy nhất không thành công cũng như khôi phục từ bản sao đĩa cục bộ, nó sẽ bắt kịp bằng cách áp dụng các cập nhật mới nhất từ ​​nút dữ liệu ngang hàng của nó.

Để bổ sung thêm tính sẵn sàng cao của dữ liệu, bạn có thể sử dụng bản sao không đồng bộ MySQL vào trang web thứ hai (ở phía bên kia của thế giới nếu được yêu cầu).