Bản sao MySQL trên các máy chủ riêng biệt về mặt địa lý


11

Tổ chức của tôi đã xem xét làm thế nào để truyền bá các máy chủ của chúng tôi xung quanh theo địa lý trong khi vẫn giữ các bản sao lưu rất cập nhật và lý tưởng là truyền tải.

Điều đầu tiên tôi có trong đầu là Rails trên MySQL. Tốc độ ghi không quá cao (bài viết / bình luận được để lại dưới 1 mỗi phút, mặc dù một số có tệp đính kèm phương tiện lớn).

Vì thế,

  • sao chép MySQL hoạt động tốt trên các mạng diện rộng?
  • Có phải kết nối (hoặc máy chủ nô lệ) không có nghĩa là cần phải can thiệp thủ công (một khi hai máy chủ có thể nói chuyện với nhau một lần nữa) hoặc phục hồi tự động?
  • Nếu chủ biến mất, cần gì để biến nô lệ thành chủ? Có các kịch bản / công cụ tiêu chuẩn để giúp quản lý điều đó?
  • Bất kỳ vấn đề khác, vv?

Câu trả lời:


6

Chúng tôi sử dụng nhân rộng trên các trung tâm dữ liệu ở một số quốc gia châu Âu (vì vậy chúng không ở khắp nơi trên thế giới với nhau, nhưng chúng chắc chắn không phải là địa phương) và nó hoạt động mà không gặp vấn đề gì.

Bản sao sẽ tự động khởi động lại nếu có thể. Nếu có vấn đề với truy vấn (ví dụ: cơ sở dữ liệu hiện diện trên bản gốc chứ không phải nô lệ và truy vấn sử dụng nó), thì nó sẽ yêu cầu sửa thủ công theo mặc định (nhưng bạn có thể đặt nó để bỏ qua các lỗi đó). Nếu cơ sở dữ liệu là gương chính xác, thì bạn không bao giờ cần phải tự khởi động lại sao chép.

Nếu bạn có hai máy chủ và chủ biến mất, sau đó để biến nô lệ thành 'chủ', chỉ cần dừng sao chép và thay đổi mã của bạn (để ghi vào 'chủ' mới). Nếu bạn có ba hoặc nhiều máy chủ và chủ biến mất, sau đó dừng sao chép trên các nô lệ, thay đổi chúng để sử dụng chủ mới và bắt đầu lại. Nếu chúng không đồng bộ chính xác (phụ thuộc vào lượng dữ liệu được truyền, máy chủ bận rộn như thế nào, kết nối mạng tốt như thế nào, v.v.), thì bạn có thể phải làm nhiều việc hơn thế. Phần sao chép của tài liệu MySQL bao gồm điều này chi tiết hơn .

Tôi sẽ đề nghị bạn đảm bảo rằng bạn đang sao chép qua SSL (nghĩa là đặt người dùng sao chép để yêu cầu kết nối SSL).


4

Bản sao đã thay đổi đáng kể trong MySQL 5.1. Trong 5.0 chỉ Sao chép Dựa trên Tuyên bố đã được sử dụng. Bây giờ bạn có tùy chọn để thực hiện Sao chép dựa trên hàng hoặc Sao chép dựa trên hỗn hợp. Điều này sẽ ảnh hưởng lớn đến cách bạn nhân rộng qua mạng WAN.

Nếu bạn có khả năng: A) Kiểm soát IP (nếu máy chủ của bạn bị tách biệt về mặt địa lý thì điều này không có khả năng) B) Thực hiện các thay đổi DNS nhanh nhẹn Bạn có thể tránh sửa đổi mã / cấu hình ứng dụng để thay đổi chủ. Chúng tôi sử dụng DNS nội bộ với bộ nhớ cache ngắn và tên miền .iternal giả. Nếu chúng ta cần thay đổi masterdb.iternal thành một số máy chủ khác, trong 5 giây, sự thay đổi sẽ thay đổi.

Trong một trung tâm dữ liệu duy nhất, chúng tôi sử dụng IP tiếp quản. Tất cả các máy chủ DB đều có giao diện ảo (eth0: 1, eth0: 2, eth0: 3) không được khởi động khi khởi động. Nếu một trong những nô lệ cần phải tiếp quản, bạn chỉ cần ifup eth0: 2 và đó là chủ nhân. Trong kịch bản này, eth0 là 'nếu' mà chúng ta sử dụng để trình bày và tương tự. Các ứng dụng kết nối trên eth0: 1 sẽ không được kích hoạt khi khởi động nếu tập lệnh của tôi phát hiện ra rằng IP đã bị lấy. (wikipedia STONITH) Các if khác là để chiếm lấy IP của các bậc thầy có thể cần phải thất bại.


3

Tôi không khuyến nghị vượt qua các đại dương khi sử dụng bản sao MySQL. Tôi đã cố gắng một lần để sao chép từ một bậc thầy ở châu Âu trong khi nô lệ ở texas. Việc nhân rộng đã phá vỡ gần như mỗi ngày cho đến khi chúng tôi từ bỏ dự án này. Tất nhiên nó có thể hoạt động, nhưng nó có xu hướng trở nên mong manh hơn khi khoảng cách giữa chủ và nô lệ càng lớn.

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.