Câu trả lời:
Theo thiết kế, một quy trình mysqld không thể nghe đồng thời hai Master khác nhau.
Lệnh CHANGE MASTER TO chỉ cho phép bạn đặt một Master làm nguồn để đọc.
Để mô phỏng điều này, bạn sẽ phải xen kẽ giữa hai Master theo chương trình. Làm thế nào để bạn làm điều đó ?
Đây là ý tưởng cơ bản
Thiết lập Sao chép từ M1 sang S1 và sau đó M2 thành S1 như thế này
Mỗi lần bạn chuyển từ Master này sang Master khác, bạn phải ghi lại hai giá trị từ SHOW SLAVE STATUS\G
Hai giá trị này đại diện cho Câu lệnh SQL cuối cùng xuất phát từ Master và tiếp theo sẽ được thực thi trên Slave.
Có một lưu ý lớn: Miễn là M1 và M2 đang cập nhật cơ sở dữ liệu loại trừ lẫn nhau, thuật toán này sẽ ổn.
Giải pháp của Rolando có nhiều cảnh báo. Đầu tiên là một luồng bản sao nhất thiết không được sao chép trong khi các luồng khác hoạt động. Điều này sẽ cung cấp cho bạn những khoảng thời gian mà nô lệ của bạn không đồng bộ. Bây giờ bạn phải chơi một hành động cân bằng tinh tế để đảm bảo mỗi người có đủ thời gian để bắt kịp khi nó "đến lượt".
Theo mô tả, bạn cũng phải chơi người giữ sổ sách của các vị trí đăng nhập để chuyển về. Điều này thực sự có vẻ như có lỗi, mở cửa sổ cho dữ liệu bị thiếu hoặc không nhất quán hoặc thậm chí phá vỡ bản sao khi nó bị lỗi (có thể do một lỗi chỉ bị tắt bởi một lỗi trong vị trí nhật ký)
Tôi khuyên bạn chỉ nên chạy nhiều phiên bản mysql. Không có gì ngăn cản bạn chạy hai hoặc nhiều mysql trên cùng một máy. Tất nhiên họ không thể hoạt động trên cùng một cổng. Tôi thực sự không coi đây là một vấn đề mặc dù mọi khách hàng và thư viện đều cho phép bạn chỉ định một cái gì đó ngoài 3306.
Chỉ cần chỉ định port = 3307 (hoặc bất cứ điều gì trong một trong các tệp .cnf).
Bạn cũng sẽ muốn cẩn thận trong việc đảm bảo các nhóm bộ đệm được cấu hình riêng lẻ và các cấu hình bộ nhớ khác không xảy ra mâu thuẫn với nhau. Đây thực sự là một lợi ích vì bạn có thể tinh chỉnh các cài đặt đó theo các yêu cầu cụ thể của các cơ sở dữ liệu riêng lẻ đang được nhân rộng.
Bằng cách này, bạn chỉ có hai luồng sao chép chạy vào cùng một máy chủ; không bao giờ đứng sau, không cần giữ sách, không yêu cầu kịch bản "tráo đổi".
Fan in (sao chép đa nguồn) sẽ được hỗ trợ từ MySQL 5.7.
Bản phát hành phòng thí nghiệm có sẵn tại đây: http://labs.mysql.com/
MariaDB có thể được sử dụng để thay thế tại chỗ cho MySql có thể được sử dụng. Nó hỗ trợ nó từ phiên bản 10.2
Vấn đề với hỗ trợ Mysql 5.7 là sự cần thiết của GTID, có nghĩa là chủ PHẢI cũng phải thay đổi, trong trường hợp MariaDb thì đây không phải là trường hợp.
Ví dụ / Liên kết HowTo: http://www.skysql.com/bloss/dean-ellis/multi-source-replication-mariadb-100