Tôi đã triển khai một giải pháp HA cho mysql dựa trên bản sao master-master. Có một cơ chế ở phần mặt trước đảm bảo rằng chỉ một db sẽ được đọc / ghi vào một thời điểm nhất định (nghĩa là chúng ta chỉ sử dụng sao chép cho HA).
Tôi đã xác nhận nhân rộng hoạt động như mong đợi, nhưng tôi tự hỏi về kịch bản thất bại và phục hồi. Cụ thể, tôi lo lắng về những gì xảy ra khi một chủ bị lỗi ở trạng thái không thể phục hồi và cần được tạo lại từ chủ khác:
- Vì chủ khác đang hoạt động và rất có thể được sử dụng, tôi không thể khóa nó và tạo ra các bãi chứa
mysqldump
(cơ sở dữ liệu của chúng tôi có kích thước vừa phải vàmysqldump
có thể dễ dàng mất hàng giờ sau vài tháng sử dụng). - Ngay cả khi giả sử tôi có một bãi chứa, điều quan trọng là vị trí binlog như được hiển thị bởi SHOW MASTER STATUS tương ứng với kết xuất được thực hiện sau khi cơ sở dữ liệu bị khóa.
Giải pháp đơn giản cho vấn đề đầu tiên là sử dụng cơ sở dữ liệu thứ ba hoạt động như một bản sao lưu, từ đó tôi có thể thực hiện mysqldump
. Nhưng sau đó, làm thế nào để tôi chắc chắn rằng bản gốc được tạo lại có thể bắt đầu sao chép từ bản gốc đang chạy một cách nhất quán?