2. Настройка слейва
Что делает эта инструкция
Краткая пошаговая инструкция по настройке MySQL-реплики (slave) для базы exampledb. Определяет варианты: импорт дампа SQL или получение данных через LOAD DATA FROM MASTER, настройку конфигурации и команд MySQL для запуска репликации.
1. Создаём базу данных на слейве
Сначала на слейве создайте пустую базу exampledb:
mysql -u root -p
Enter password:
CREATE DATABASE exampledb;
quit;Важно: эти команды выполняются в клиенте mysql. Если вы будете импортировать дамп — база должна существовать заранее.
2. Импорт дампа с мастера (вариант A)
Если на мастере вы сделали SQL-дамп и скопировали файл на слейв, импортируйте его в только что созданную exampledb:
mysql -u root -p exampledb < /path/to/exampledb.sql Замените
Если вы планируете использовать LOAD DATA FROM MASTER вместо предварительного импорта, этот шаг можно пропустить.
3. Настройка конфигурации MySQL на слейве
Укажите слейву, где находится мастер и какую базу реплицировать. Добавьте в /etc/mysql/my.cnf следующие строки (или поправьте существующие):
server-id=2
master-host=192.168.0.100
master-user=slave_user
master-password=secret
master-connect-retry=60
replicate-do-db=exampledbПояснения:
- server-id должен быть уникальным в кластере репликации.
- master-host — IP или имя хоста мастера.
- master-user — пользователь, которому на мастере даны права REPLICATION SLAVE.
- replicate-do-db ограничивает репликацию указанной базой.
После правки перезапустите MySQL:
/etc/init.d/mysql restart4. Получение данных через LOAD DATA FROM MASTER (вариант B)
Если вы не импортировали дамп и хотите подтянуть данные прямо с мастера:
mysql -u root -p
Enter password:
LOAD DATA FROM MASTER;
quit;После выполнения команды проверьте, появились ли таблицы и данные. Если установлен phpMyAdmin на слейве — можно убедиться визуально.
5. Остановка слейва и привязка к мастеру
Остановите слейв перед настройкой параметров мастера:
mysql -u root -p
Enter password:
SLAVE STOP;Затем внутри MySQL замените значения на свои и выполните:
CHANGE MASTER TO MASTER_HOST='192.168.0.100', MASTER_USER='slave_user', MASTER_PASSWORD='**', MASTER_LOG_FILE='mysql-bin.006', MASTER_LOG_POS=183; Кратко о параметрах:
- MASTER_HOST — адрес мастера.
- MASTER_USER — репликационный пользователь, созданный на мастере.
- MASTER_PASSWORD — пароль этого пользователя.
- MASTER_LOG_FILE и MASTER_LOG_POS — имя бинлог-файла и позиция, которые вы получили на мастере через SHOW MASTER STATUS;.
Теперь запустите слейв:
START SLAVE;
quit;6. Проверка статуса и базовые шаги отладки
Проверьте статус репликации внутри mysql:
SHOW SLAVE STATUS\GОбратите внимание на поля Slave_IO_Running и Slave_SQL_Running — оба должны быть Yes. Если нет, смотрите поля Last_IO_Error и Last_SQL_Error для причины.
Типичные причины проблем:
- Ошибка авторизации (неверный MASTER_USER/MASTER_PASSWORD).
- Несовпадающая структура таблиц (при импорте дампа пропущены таблицы).
- Неверные MASTER_LOG_FILE или MASTER_LOG_POS.
- Права репликационного пользователя на мастере отсутствуют.
Полезные команды для диагностики:
SHOW MASTER STATUS; -- на мастере
SHOW SLAVE STATUS\G; -- на слейве
SHOW PROCESSLIST; -- поиск зависших потоков
tail -f /var/log/mysql/error.log -- проверка логов сервераРоли и чеклист: кто что делает
- Системный администратор:
- Создаёт пользователя slave_user на мастере с правами REPLICATION SLAVE.
- Открывает сетевой доступ между мастер и слейв (порт 3306).
- DBA:
- Проверяет структуру и делает дамп базы.
- Определяет правильный MASTER_LOG_FILE и MASTER_LOG_POS (SHOW MASTER STATUS).
- Оператор на слейве:
- Создаёт базу, импортирует дамп или выполняет LOAD DATA FROM MASTER.
- Настраивает /etc/mysql/my.cnf и перезапускает сервис.
- Выполняет CHANGE MASTER TO и START SLAVE, проверяет SHOW SLAVE STATUS.
Критерии приёмки
- SLAVE_IO_Running = Yes и SLAVE_SQL_Running = Yes в SHOW SLAVE STATUS.
- Отсутствуют ошибки в Last_IO_Error и Last_SQL_Error.
- Данные в exampledb на слейве соответствуют мастеру (проверочные таблицы/записи).
Быстрый помощник (Cheat sheet)
- Создать базу: CREATE DATABASE exampledb;
- Импорт дампа: mysql -u root -p
exampledb < /path/to/exampledb.sql - Загрузить с мастера: LOAD DATA FROM MASTER;
- Остановить/запустить слейв: SLAVE STOP; / START SLAVE;
- Привязать к мастеру: CHANGE MASTER TO …
- Проверить статус: SHOW SLAVE STATUS\G
Когда это не сработает — типовые контрпримерные ситуации
- Если структура таблиц на мастере и слейве различается — репликация выдаст ошибки SQL. Решение: синхронизируйте схему перед репликацией.
- Если в сети блокируется порт 3306 — слейв не подключится. Решение: открыть порт или настроить VPN/SSH-туннель.
- Если был пропущен дамп и мастер уже продвинулся — получение данных может привести к рассинхронизации; в этом случае лучше сделать свежий дамп и рестарт репликации с корректной позицией.
Итог
Следуя шагам: создайте базу на слейве, импортируйте данные или используйте LOAD DATA FROM MASTER, внесите параметры мастера в my.cnf, выполните CHANGE MASTER TO с правильными мастером-логом и позицией и запустите START SLAVE. Проверяйте SHOW SLAVE STATUS и логи в случае ошибок.
Важно: всегда делайте резервную копию данных перед началом настроек репликации.
Ссылки
- MySQL: http://www.mysql.com
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента