Няма много производителност, която може да се получи от репликирането на вашата база данни на два главни. Въпреки това, ако кодирате приложението си правилно, има страхотна грешка.
Настройката Master-Master по същество е същата като настройката Slave-Master, но има стартирани и двете подчинени устройства и важна промяна във вашите конфигурационни файлове във всяка кутия.
Master MySQL 1:
auto_increment_increment = 2
auto_increment_offset = 1
Master MySQL 2:
auto_increment_increment = 2
auto_increment_offset = 2
Тези два параметъра гарантират, че когато два сървъра се борят за първичен ключ по някаква причина, те не се дублират и не убиват репликацията. Вместо да нараства с 1, всяко поле за автоматично нарастване по подразбиране ще се увеличава с 2. В едно поле то ще започне отместване от 1 и ще стартира последователността 1 3 5 7 9 11 13 и т.н. Във второто поле ще започне отместване с 2 и бягайте по 2 4 6 8 10 12 и т.н. От текущото тестване изглежда, че автоматичното нарастване приема следващото свободно число, а не това, което е останало преди.
Напр. Ако сървър 1 вмъкне първите 3 записа (1 3 и 5), когато сървър 2 вмъкне четвъртия, ще му бъде даден ключът 6 (а не 2, който остава неизползван).
След като го настроите, стартирайте и двете като подчинени.
След това, за да проверите дали и двете работят добре, свържете се с двете машини и изпълнете командата SHOW SLAVE STATUS
и трябва да отбележите, че и двете Slave_IO_Running
и Slave_SQL_Running
трябва ли и двамата да кажат „ДА“ на всяка кутия.
След това, разбира се, създайте няколко записа в таблица и се уверете, че едно поле вмъква само нечетни номерирани първични ключове, а другото увеличава само четни.
След това направете всички тестове, за да се уверите, че можете да изпълнявате всички стандартни приложения на всяка кутия, като тя се копира в другата.
Това е сравнително лесно, след като започне.
Но както беше споменато, MySQL го обезкуражава и ви съветва да се уверите, че имате предвид тази функционалност, когато пишете кода на приложението си.
Редактиране: Предполагам, че теоретично е възможно да добавите още главни, ако се уверите, че изместванията са правилни и т.н. Може по-реалистично да добавите допълнителни подчинени устройства.