Конфигуриране на 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 репликация"