Không có nhiều hiệu suất đạt được từ việc sao chép cơ sở dữ liệu của bạn trên hai bản chính. Tuy nhiên, có một chút tiện lợi của việc chuyển đổi dự phòng nếu bạn viết đúng mã ứng dụng của mình.
Thiết lập Master-Master về cơ bản giống như thiết lập Slave-Master nhưng đã khởi động cả hai Slaves và một thay đổi quan trọng đối với các tệp cấu hình của bạn trên mỗi hộp.
Thành thạo MySQL 1:
auto_increment_increment = 2
auto_increment_offset = 1
Master MySQL 2:
auto_increment_increment = 2
auto_increment_offset = 2
Hai tham số này đảm bảo rằng khi hai máy chủ tranh nhau một khóa chính vì một lý do nào đó, chúng sẽ không trùng lặp và giết chết bản sao. Thay vì tăng 1, bất kỳ trường tăng tự động nào theo mặc định sẽ tăng 2. Trên một hộp, nó sẽ bắt đầu bù từ 1 và chạy chuỗi 1 3 5 7 9 11 13, v.v. Trên hộp thứ hai, nó sẽ bắt đầu bù ở 2 và chạy dọc theo 2 4 6 8 10 12, v.v. Từ thử nghiệm hiện tại, số tự động tăng dường như lấy số miễn phí tiếp theo, không phải số đã rời trước đó.
Ví dụ:Nếu máy chủ 1 chèn 3 bản ghi đầu tiên (1 3 và 5) khi Máy chủ 2 chèn bản ghi thứ 4, nó sẽ được cung cấp khóa 6 (không phải 2, khóa này không được sử dụng).
Khi bạn đã thiết lập xong, hãy khởi động cả hai máy dưới dạng Slaves.
Sau đó, để kiểm tra cả hai đều hoạt động tốt, hãy kết nối với cả hai máy và thực hiện lệnh SHOW SLAVE STATUS
và bạn cần lưu ý rằng cả Slave_IO_Running
và Slave_SQL_Running
cả hai phải nói "CÓ" trên mỗi hộp.
Sau đó, tất nhiên, hãy tạo một vài bản ghi trong bảng và đảm bảo một hộp chỉ chèn các khóa chính được đánh số lẻ và hộp còn lại chỉ thêm các khóa chính được đánh số chẵn.
Sau đó, thực hiện tất cả các bài kiểm tra để đảm bảo rằng bạn có thể thực hiện tất cả các ứng dụng tiêu chuẩn trên mỗi hộp khi hộp này sao chép sang hộp kia.
Nó tương đối đơn giản khi nó hoạt động.
Nhưng như đã được đề cập, MySQL không khuyến khích nó và khuyên bạn nên đảm bảo rằng bạn lưu ý đến chức năng này khi viết mã ứng dụng của mình.
Chỉnh sửa: Tôi cho rằng về mặt lý thuyết có thể thêm nhiều bậc thầy hơn nếu bạn đảm bảo rằng các hiệu số là chính xác, v.v. Tuy nhiên, bạn có thể thực tế hơn, hãy thêm một số nô lệ bổ sung.