Настройка Mysql репликации Master — Master
Рассмотрим настройку репликации Mysql.
Обновляем пакеты на каждом из серверов:
apt-get update
apt-get upgrade
Установим Mysql сервер и клиент, сделать это нужно на двух серверах.
apt-get install mysql-server mysql-client
Открываем файл /etc/mysql/my.cnf
Изменяем в конфиге следующие строки:
server-id = 1 log_bin = /var/log/mysql/mysql-bin.log binlog_do_db = example_DB # bind-address = 127.0.0.1
В данном конфиге:
server-id — номер id mysql сервера
log_bin — путь к бинарному логу, в него пишутся изменения
binlog_do_db — название БД, которую мы будем реплицировать
# bind-address — строка закоментирована, т.к. сервер должен работать не только на localhost
Перезапускаем mysql сервер
service mysql restart
Перейдем к настройке репликации.
Подключаемся к Mysql.
mysql -u root -p
Создадим пользователя replicator
create user 'replicator'@'%' identified by 'password';
Создаем базу данных, которую мы будем реплицировать.
create database example_DB;
Назначим права пользователю
grant replication slave on *.* to 'replicator'@'%';
Проверить статус репликации можно командой:
show master status;
Запоминаем параметры File (mysql-bin.000001) и Position (107). Эти параметры нам понадобятся на втором сервере.
Отключаемся от консоли mysql
exit
Переходим на второй mysql сервер и правим конфиг файл /etc/mysql/my.cnf
Конфиг файл второго сервера будет отличаться только id
server-id = 2 log_bin = /var/log/mysql/mysql-bin.log binlog_do_db = example_DB # bind-address = 127.0.0.1
Перезапускаем mysql на втором сервере
service mysql restart
Повторяем операцию по созданию пользователя.
mysql -u root –p
create user 'replicator'@'%' identified by 'password';
Создаем базу данных, которую мы будем реплицировать.
create database example_DB;
Назначим права пользователю.
grant replication slave on *.* to 'replicator'@'%';
Запускаем процесс репликации
slave stop;
Параметры MASTER_LOG_FILE и MASTER_LOG_POS берем с первого сервера (вывод команды show master status;)
CHANGE MASTER TO MASTER_HOST = 'ip address first mysql server', MASTER_USER = 'replicator', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 107;
slave start;
Теперь посмотрим статус репликации:
SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000004 | 107 | example_DB | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
Запоминаем название файла и параметр позиции, эти данные понадобятся нам при включении репликации на первом сервере.
Теперь вернемся на первый сервер и включим репликацию на нем:
slave stop;
Меняем параметры MASTER_LOG_FILE и MASTER_LOG_POS полученные ранее из команды SHOW MASTER STATUS;
CHANGE MASTER TO MASTER_HOST = 'ip address second mysql server', MASTER_USER = 'replicator', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin.000004', MASTER_LOG_POS = 107;
slave start;
Теперь репликация работает на двух серверах.
Проведем тестирование, выполним на первом сервере команду в консоли mysql:
create table example_DB.test_table2 (`id` varchar(10));
Теперь выполним команду на втором сервере:
show tables in example_DB;
Вывод должен быть с созданной таблицей
+----------------------+ | Tables_in_example_DB | +----------------------+ | test_table | +----------------------+ 1 row in set (0.00 sec)
Как видите репликация работает, таблица создалась.
Добавить комментарий