Что такое репликация в MySQL?
Не так давно меня попросили рассказать о репликации в MySQL. Я решил, что эта тема может быть многим полезна, поэтому этой статье я расскажу о том, что такое репликация в MySQL, когда она нужна и как её настроить.
Главная задача репликации - объединять мощности нескольких серверов. Допустим, у Вашего сайта выделенный сервер, но со временем он становится очень посещаемым и уже не выдерживает нагрузку. В результате, начинаются тормоза и регулярные падения сервера. Самый простой способ - это купить более мощный сервер, и так большинство и поступает. Но рано или поздно настаёт момент, когда уже стоимость роста цены на сервер не соответствует росту его производительности, поэтому выгоднее купить 2 разных сервера за меньшие деньги.
В итоге, Ваша база будет сразу на двух серверах. Когда один главный сервер (он же головной) уже не справляется, то идёт переключение на запасной.
Все запросы обновления базы всегда идут на головной сервер. После обновления головного сервера, он помещает об этом информацию в отдельный файл, откуда и берут всю информацию подчинённые сервера. А вот операции выборки, которых обычно большинство, и они самые медленные, уже могут передаваться на подчинённые сервера, поскольку и там, и там данные одинаковые.
Теперь разберём, как настраивается репликация в MySQL:
- Установите самые свежие версии MySQL на все сервера.
- Создайте на головном сервере пользователя с привилегией REPLACATION SLAVE. В качестве адреса, с которого он может подключаться, укажите "все".
- Остановите все сервера.
- В настройках MySQL (в файле my.cnf) в разделе [mysqld] добавьте следующие строки:
log-bin
Обратите внимание, что server-id на всех серверах должен быть разный. Фактически это то, что отличает один сервер от другого.
server-id=1 - На подчинённых серверах добавьте в настройки MySQL следующие строки:
master-host=имя_головного_хоста
master-user=логин_созданного_пользователя
master-password=пароль_созданного_пользователя
master-port=порт_для_подключения_к_головному_серверу
server-id=id_данного_подчинённого_сервера - Перенесите все базы с головного сервера на подчинённые.
- Запустите головной сервер, потом все подчинённые.
Репликацию можно считать настроенной. После запуска всех серверов они друг к другу подключатся. И когда сервер уже не выдерживает, то все запросы, НЕ обновляющие данные, он будет перенаправлять на подчинённые сервера.
И ещё раз повторюсь, что вся эта тема нужна только высоконагруженным проектам, которым не то, что хостинга не хватает, а и мощного выделенного сервера.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.