Конфигуриране на Master-Master репликация в MySQL
Настройването на репликация Master-Master между две бази данни (може би разположени на различни сървъри) поддържа и двете бази данни актуални. По всяко време е възможно да се свържете с всяка база данни и да продължите да работите.
Нека се опитаме да настроим тази репликация на два сървъра.
Настройте главния сървър
На SERVER1 създаваме mysql потребител (в нашия пример потребителят е repl_user, паролата е replpassword) с права REPLICATION SLAVE, SELECT, RELOAD, SUPER
На SERVER2 също ще е необходимо да получите подобен потребител. За удобство - ще се влиза със същото потребителско име и парола като на SERVER1
В секцията на същия файл направете следните промени:
# ID на сървъра. Поставяме произволен уникален номер за всеки сървър, участващ в репликацията server- > # лог файл, от който ще се чете информация за промени в базата данни log_bin = /var/log/mysql/mysql-bin.log
# Списък на базите данни за репликиране. Ако всички бази данни са репликирани, тези стойности не са необходими binlog_do_db = mainbd binlog_do_db = firm1 . и т.н.
# Списък с бази данни, които НЕ трябва да се репликират. Използва се, ако всички други бази данни трябва да бъдат репликирани binlog_ignore_db = phpmyadmin binlog_ignore_db = information_schema . и т.н.
# Потребителско име за репликация и парола на SERVER2. Влиза се със същото потребителско име и парола като на SERVER1 master-user = repl_user master-password = replpassword
# Задаваме тези стойности, така че да няма конфликти с полетата за автоматично нарастване. # В този случай всички полета за автоматично нарастване в базите данни на SERVER1 ще бъдат нечетни. auto_increment_offset = 1 auto_increment_increment= 2
Създаване на резервно копие на база данникоито трябва да бъдат възпроизведени.
Настройте резервен сървър
На SERVER2 създаваме бази данни, които да бъдат репликирани от резервното копие на SERVER1
И след това продължаваме почти по същия начин.
На SERVER2 създаваме mysql потребител (за удобство със същото потребителско име и парола като на SERVER1: repl_user/replpassword) с права REPLICATION SLAVE, SELECT, RELOAD, SUPER
В секцията на същия файл направете следните промени:
# ID на сървъра. Поставяме произволен уникален номер за всеки сървър, участващ в репликацията server- > # лог файл, от който ще се чете информация за промени в базата данни log_bin = /var/log/mysql/mysql-bin.log
# Списък на базите данни за репликиране. Ако всички бази данни са репликирани, тези стойности не са необходими binlog_do_db = mainbd binlog_do_db = firm1 . и т.н.
# Списък с бази данни, които НЕ трябва да се репликират. Използва се, ако всички други бази данни трябва да бъдат репликирани binlog_ignore_db = phpmyadmin binlog_ignore_db = information_schema . и т.н.
# Потребителско име за репликация и парола на SERVER1. Влиза се със същото потребителско име и парола като на SERVER2 master-user = repl_user master-password = replpassword
# Задаваме тези стойности, така че да няма конфликти с полетата за автоматично нарастване. # В този случай всички полета за автоматично нарастване в базите данни на SERVER2 ще бъдат четни. auto_increment_offset = 2 auto_increment_increment= 2
След промените рестартирайте mysql и на двата сървъра.
Сега нека проверим как репликацията ще премине от SERVER1 към SERVER2
На SERVER2 стартираме режим SLAVE с командата
След това изпълняваме командата
ПОКАЖЕТЕ СТАТУТ НА РОБ
В резултатите от тази команда полетатаSlave_IO_Running и Slave_SQL_Running трябва да бъдат зададени на Yes, в който случай всичко е конфигурирано правилно.
Ако поне една от тези стойности е равна на Не, ние четем грешките в резултатите от изпълнението на командата и се опитваме да ги поправим.
След рестартиране на MASTER (в този случай MASTER е на SERVER1), Slave_IO_Running също може да бъде равно на No - в този случай просто трябва да изчакате една или две минути, след което SLAVE ще бъде конфигуриран към новите (след рестартиране) параметри на MASTER.
Ако всичко е наред, на SERVER1 правим промени в базата данни, която да бъде репликирана (например добавяне на запис към таблицата) и проверяваме дали същите промени са настъпили на SERVER2
След успешна репликация проверете SERVER1 -> SERVER2, със същата команда SLAVE START На SERVER1 също стартираме и проверяваме режима SLAVE.
Правим промени в базата данни на SERVER2 и проверяваме дали са отразени в SERVER1.
Ако се отрази - всичко е наред, репликацията е конфигурирана!
Освен това има команда SHOW MASTER STATUS, която може да се изпълни на MASTER и резултатите от която могат да бъдат сравнени с резултатите от командата SHOW SLAVE STATUS на SLAVE. По време на нормална работа стойностите трябва да съответстват една на друга, а веднага след рестарт ще бъдат различни, докато SLAVE се настрои към новите MASTER параметри.
Можете да промените стойностите на променливите (с изключение на промяна на файла my.cnf и след това рестартиране на mysql сървъра) за SLAVE с помощта на командата CHANGE master TO:
ПРОМЕНЕТЕ master НА master_host = `33.33.33.1`, master_user = `repl_user`, master_password = `replpassword`, master_log_file = ` `, master_log_pos = ;
Автор: Роман Румянцев
Отзиви: все още няма отзиви, вашият ще бъде първият!
Прочетохте ли "Конфигуриране на MySQL Master-Master репликация"