Рано или поздно перед любым администратором возникает проблема, когда мощности его серверов не хватает для выполнения поставленных задач, а приобретение новой техники практически невозможно по причине финансовых трудностией, или просто такая покупка вызывает сомнение по поводу ее окупаемости в будущем.
В свете таких событий не лишним будет узнать о таком понятии, как репликация баз данных. Подобные знания значительно упростят жизнь любому человеку, занимающимся обслуживанием высоконагруженных систем и позволят создать оптимальную рабочую аппаратную конфигурацию. В общих чертах репликация базы данных подразумевает объединение мощностей набора компьютеров для повышения коэффициента производительности системы и ее отказоустойчивости. Первого эффекта можно добиться путем перекидывания части запросов на резервный сервер, а второго - путем создания локальной копии базы данных, которая в случае необходимости заменит главную базу.
Наиболее простой и распространенный способ организации репликации – это репликация MySQL. Причем MySQL поддерживает этот функционал с 3.23.15-версии и только одностороннюю репликацию. В данном случае создается специальная конфигурация «master-slave», причем главный сервер (master) может также одновременно быть и подчиненным сервером (slave).
Репликация MySQL на данный момент времени реализовывается следующим образом. Создается главный сервер, в обязанности которого входит следить за изменениями двоичного файла, в котором отображаются все изменения базы данных и подчиненная машина или машины, читающие и выполняющие из этого файла запросы. Подчиненный сервер постоянно связывается с главным, поэтому все изменения, произошедшие на master, переходят на slave, и не возникает ситуации расходимости и некорректности данных.
Репликация MySQLустанавливается в несколько этапов.
Видео: Ещё немного о репликации в MySQL. Опыт использования Galera.
- Администратор системы должен удостовериться, что на всех его машинах установлена последняя версия MySQL.
- Необходимо создать нового пользователя на главном сервере, под логином которого будет происходить репликация MySQL (он должен иметь уровень привилегии FILE и права связываться со slave-машинами).
- Далее нужно остановить MySQL на главком и подчиненных серверах и скопировать все данные, относящиеся к репликации. На Unix-системах это можно сделать командой tar, которая делает резервный архив всего каталога. Пользователям Windows подойдет WinZip.
- В секцию mysqld добавить следующие строки: server-id=unique number, log-bin. Все изменения проводятся в файле My.conf на master сервере, после чего он должен быть обязательно перегружен.
- На slave-машинах в аналогичный файл нужно дописать следующий фрагмент кода:
master-host=<имя Вашего master хоста>
master-user=<логин пользователя>
master-password=<секретный пароль пользователя>
Видео: Java. Установка и конфигурирование сервера MySQL. JDBC. Урок 1
master-port=<порт, по которому будут подключаться подчиненные сервера к главному>
server-id=< id данной slave машины>
* в треугольных скобках нужно вводить свои данные, а не вышеупомянутый текст.
В конце скопируйте все базы данных на подчиненные сервера и перезапустите все машины.
После таких действий репликацию можно считать установленной и настроенной, а это значит, что теперь ваш главный сервер не будет страдать от высокой загрузки и в случае сбоя какой-либо таблицы на нем ее с легкостью можно будет восстановить с другого компьютера. В итоге можно на несколько лет забыть про покупку нового аппаратного обеспечения для высоконагруженных систем и довольствоваться налаженной работой существующей техники.