Более 600 любимых клиентов

Отдел продаж: 1100-1900

Техническая поддержка: работает

Быстрый хостинг

Сайтов и баз: не ограничено. SSL сертификат в подарок.
Тестовый период: 14 дней

Мощные серверы

Канал 1Гб/сек. Встроенная защита от DDoS атак.
Без установочной платы. Администрирование в подарок.

Быстрые VPS / VDS серверы

Скоростные SSD диски. Безлимитный трафик.
Администрирование в подарок.

Настройка репликации MySQL

Репликация MySQL позволяет повысить уровень отказоустойчивости приложения, а так же позволяет распределить нагрузку между серверами баз данных MySQL или MariaDB.

Как работает репликация MySQL

Для создания репликации необходимо, как минимум, 2 сервера. Один из них будет являться master-сервером, а второй (и другие) - slave. При выполнении операций в базе данных на master сервере, она записывает всю информацию в специальный файл - binlog. А slave сервер, в свою очередь, подключается к master серверу, сравнивает значения и если появляется новая информация - выполняет ее у себя в базе данных.

Пример настройки репликации

Для примера, мы возьмем 2 сервера. Устанавливать будем на примере Debian GNU/Linux. Настройка везде примерно одинакова за исключением того, что файл my.cnf в Debian (Ubuntu) находится в директории /etc/mysql/, а в CentOS - просто в /etc/.

Адреса серверов:

  • Master-сервер - 192.168.0.1
  • Slave-сервер - 192.168.0.2

Настраиваем Master-сервер.

Для начала, нужно открыть файл my.cnf и указываем следующее:

# выбираем ID сервера, произвольное число, лучше начинать с 1
server-id = 1

# путь к бинарному логу
log_bin = /var/log/mysql/mysql-bin.log

# название базы данных, реплика которой необходима
binlog_do_db = websitedb

Затем, перезапускаем сервер MySQL командой

/etc/init.d/mysql restart

Затем, нам нужно выдать пользователю права на репликацию. Подключаемся к серверу под пользователем root:

mysql -u root -p

Добавляем необходимые права для пользователя slave_user (владельца нашей базы websitedb) и задаем ему пароль password:

GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

Затем, нам нужно заблокировать все таблицы от всех изменений:

USE websitedb;
FLUSH TABLES WITH READ LOCK;

Затем, нам нужно проверить статус работы Master-сервера с помощью команды:

SHOW MASTER STATUS;

Если все сделано верно, Вы увидите сообщение с именем файла, с названием вида:

mysql-bin.000001

А так же запомните значение из столбца Position. В нашем случае, это 10.
Это имя нам потребуется при создании и запуска слейв-сервера.

Делаем свежий дамп базы данных:

mysqldump -u root -p websitedb > websitedb.sql

Копируем файл на слейв-сервер и на мастере подключаемся к MySQL еще раз под root'ом и выполняем команду, чтобы разблокировать таблицы:

UNLOCK TABLES;

Создаем базу на Slave-сервере

Для того, чтобы работало все корректно, на слейв сервере необходимо создать базу с таким же именем. Подключаемся к MySQL на слейв-сервере и создаем базу:

CREATE DATABASE websitedb;

И заливаем наш дамп, который мы уже скопировали командой:

mysql -u root -p websitedb < websitedb.sql

Настройка Slave-сервера

Открываем файл my.cnf и указываем следующие параметры:

# ID сервера, будет удобно выбирать следующим числом после Master
server-id = 2

# Путь к relay логу
relay-log = /var/log/mysql/mysql-relay-bin.log

# Путь к bin логу на Мастере
log_bin = /var/log/mysql/mysql-bin.log

# База данных для репликации
binlog_do_db = websitedb

И перезапускаем сервер MySQL командой

/etc/init.d/mysql restart

Запуск Slave сервера

Все сделано, осталось самое главное - подключить Slave сервер к мастеру. Подключаемся к MySQL под root'ом и выполняем следующую команду:

CHANGE MASTER TO MASTER_HOST='192.168.0.1', MASTER_USER='slave_user', MASTER_PASSWORD='password', MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 10;

Здесь мы вставляем номер из столбца Position (в нашем случае, это было число 10) и название binlog файла - mysql-bin.000001

И теперь стартуем слейв сервер командой в консоли MySQL:

START SLAVE;

Проверить работу на мастер сервере можно командой в MySQL консоли:

SHOW MASTER STATUS\G;

А на слейв-сервере, соответственно:

SHOW SLAVE STATUS\G;

Под настройку репликации мы рекомендуем выделенные сервера купить в аренду у нашей компании. Мы поможем с настройкой и поддержкой Ваших баз данных MySQL и MariaDB.

Если у вас возникли вопросы или трудности в настройках - вы можете в любое время обратиться за помощью к специалистам хостинга RigWEB. Мы будем рады вам помочь!

Заказать VDS

VPS/VDS за 389 р. от RigWEB.RU с администрированием

VPS/VDS серверы

Спасибо, что выбрали RigWEB!

Получить консультацию
специалиста
Вы получите ответ в течение 15 минут
Получить консультацию
специалиста в подборе VPS
Вы получите ответ в течение 15 минут
Заявка на бесплатный перенос сайта
Данные для переноса

Откуда перенести:

Список сайтов для переноса:
(укажите через запятую)

Доступ к текущему хостингу Чтобы мы смогли перенести сайты с Вашего текущего хостинга,нам необходимы реквизиты доступа в панель управления.

Логин

Пароль

Информация по Вашему аккаунту

Электронная почта

Фамилия, Имя,
Отчество

Комментарий к заказу

Получить консультацию специалиста
в подборе VPS
Пример

Память: 2GB RAM

Диск: 5GB SSD

Для сайта на Wordpress посещаемость 500 человек в сутки

Получить консультацию специалиста
в подборе выделенного сервера
Пример

Процессор: 2xXeon E5-2620

Память: 32 Gb

Диски: 2x1Tb SATA 2x240 SSD

RAID: контроллер + батарейка

Комментарий: нужен сервер с двумя блоками питания

Ваш запрос находится в стадии обработки.

Мы ответим Вам в течение 15 минут.

Спасибо, что выбрали RigWEB!