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