MySQL репликация Master-Slave используется для обеспечения отказоустойчивости приложений и позволяет распределить нагрузку на базу данных между несколькими серверами.
Настроим репликации базы данных на примере из 2 серверов:
1. Master-server, 192.168.100.1
2. Slave-server, 192.168.100.2
Часть 1. Настройка Master-server для репликации базы данных.
1.Откроем для редактирования файл конфигурации базы данных командой:
sudo nano /etc/mysql/my.cnf
#адрес нашего master-server bind-address = 192.168.100.1 # ID сервера, мастер - 1 server-id = 1 # путь к log-bin log_bin = /var/log/mysql/mysql-bin.log # название базы данных, которая будет реплицироваться binlog_do_db = ithelp21ru_db
2. Перезапускаем службу Mysql:
sudo service mysqld restart
3. Подключаемся к БД и создаем пользователя replication, под которым будет происходить репликация.
mysql -u root -p GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%' IDENTIFIED BY 'password_user_replication'; FLUSH PRIVILEGES;
4. Блокируем все таблицы базы данных от изменений:
USE ithelp21ru_db; FLUSH TABLES WITH READ LOCK;
5. Вводим команду для просмотра статуса мастер:
SHOW MASTER STATUS;
Вывод примерный в табличном виде:
File: mysql-bin.000001 Position: 72 Binlog_Do_DB: ithelp21ru_db Binlog_Ignore_DB:
Запомним данные значения, для дальнейшей настройки.
Часть 2. Дамп базы данных.
1. Переносим базу данных в новое окно с помощью mysqldump:
mysql -u root -p mysqldump -u root -p --opt ithelp21ru_db > ithelp21ru_db.sql
2.снова входим в БД и разблокируем базу:
mysql -u root -p USE ithelp21ru_db; UNLOCK TABLES; QUIT;
Часть 3. Настройка Slave-server для репликации базы данных.
1.Откроем для редактирования файл конфигурации базы данных командой:
sudo nano /etc/mysql/my.cnf #адрес slave-server bind-address = 192.168.100.2 # ID сервера, слейв - 2 server-id = 2 # путь к log-bin и relay-log log_bin = /var/log/mysql/mysql-bin.log relay-log = /var/log/mysql/mysql-relay-bin.log # название базы данных, которая будет реплицироваться binlog_do_db = ithelp21ru_db
2. Перезапускаем службу Mysql:
sudo service mysqld restart
3. Настроим в консоли mysql:
mysql -u root -p CHANGE MASTER TO MASTER_HOST='192.168.100.1', MASTER_USER='replication', MASTER_PASSWORD='password_user_replication', MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 72;
4. Активируем репликацию на slave-сервере:
START SLAVE;
смотрим состояние репликации командой:
SHOW SLAVE STATUS\G
в выводе ищем строки, которые говорят об успешном запуске репликации:
Slave_IO_Running: Yes Slave_SQL_Running: Yes