Конфигуриране на Master-Master репликация на MySQL

Има два вида репликация на данни в mysql:
Когато използвате репликация Master-Slave, данните пристигат на главния възел (можете да извършвате всякакви операции с тях (добавяне / изтриване / промяна) и подчинения възел ще вземе всички промени за себе си, но ако изпълните някоя от заявките на подчинения възел (изтриване, добавяне или промяна), тогава данните няма да стигнат до главния.
Когато се репликира под формата на Master-Master, данните, които са паднали върху възлите, ще бъдат синхронизирани помежду си.
Налични:
- (Master 1) - Debian 8 Server - 192.168.13.147
- (Главен 2) - Сървър, работещ с CentOS 7 -192.168.13.151
Специално взех 2 сървъра с различни ОС, за да покажа, че може да работи правилно (можете да използвате неограничен брой възли, поне 100 бр.).
Този процес на настройка на репликация master-master е разделен на 2 стъпки:
- На 1-ва стъпка организирам репликация master-slave, където master_1 ще бъде master, а master_2 ще бъде slave;
- На втората стъпка организирам обратна репликация master-slave и сървърите започват да събират информация от регистрационните файлове на другия.
Инсталиране на MySQL на Unix/Linux
Конфигуриране на Master-Master репликация на MySQL
И така, mysql е инсталиран на всички сървъри (имам 2 от тях, но можете да свържете повече) и следващата стъпка е да редактирате my.cnf файла на всеки от възлите.
На първия сървър с Debian 8 OS (192.168.13.147):
Създайте потребител за репликация:
PS: За по-добра сигурност можете да посочите конкретен IP:
Рестартирайте MySQL сървъра:
Всъщност първият MASTER е готов!
Разглеждаме състоянието на капитана (тази информация ще е необходима малко по-късно):
На втория сървър, работещ с CentOS 7-192.168.13.151:
Създайте папка и файлове (в тях ще бъдат записани регистрационни файлове):
Създайте потребител за репликация:
PS: За по-добра сигурност можете да посочите конкретен IP:
Рестартирайте MySQL сървъра:
Настройка на репликация
Сега трябва да конфигурирате самата репликация. Първо, стартираме репликация на 2-ри мастер, но за да направите това, трябва да знаете "MASTER_LOG_FILE" и "MASTER_LOG_POS" на 1-ви мастер.
Разглеждаме състоянието на главния (показах го по-горе) на 1-ви възел:
Виждаме, че „MASTER_LOG_FILE = mysql-bin.000002 и „MASTER_LOG_POS“ = 107.
На 2-ри възел изпълняваме:
Мисля, че не е необходимо да обяснявам какво и къде да сменим - това е интуитивно.
Правим репликация на 1-ви сървър, но за това разглеждаме главния статус на 2-ри:
Виждаме, че „MASTER_LOG_FILE = mysql-bin.000002 и „MASTER_LOG_POS“ = 106.
И на 1-во изпълнете командата:
След това можете да видите състоянието на подчинения на всички главни.
Ако трябва да съберете клъстер от повече от 2 мастера, тогава трябва да ги свържете постепенно и във верига. А сега нека да преминем към тестването на създадения клъстер.
Тестване на репликация master-master в mysql
Нека да тестваме репликацията и да се уверим, че всичко работи добре.
На 1-ви мастер ще създам база данни и таблица:
На master 2 виждам какво се случи:
Може да се види, че репликацията работи и всички данни са репликирани към 2-ри главен от 1-ви. Преминаваме към test master 2, за това създавам база данни и таблица върху нея:
И на 1-ви изпълнявам командата:
Виждаме, че всичко работи правилно и настройката на Master-Master репликация на MySQL е завършена!