Назад к списку

Что такое репликация баз данных?

Репликация в сферу IT перетекла из науки генетики, и изначально так называли процесс деления клеток. Репликация ДНК и репликация БД имеет сходство, так как подразумевает то же копирование (репликация с лат. replico - “повторяю”) в IT - копирование изменений данных с главного сервера баз данных на одном или нескольких зависимых серверах. Главный сервер, собственно, главный, а зависимые — реплики, отсюда и термин.


Зачем это вообще нужно бизнесу и его базам данных, в частности?

  • Рост производительности. Репликация помогает масштабироваться и справляться с нагрузкой, вызываемой одновременными операциями чтения и записи в БД. Одному серверу работать в таком режиме сложно, поэтому, чем больше реплик, тем, больше операций чтения приходится на одну операцию записи в системе (а значит и работать, что логично, серверу становится легче. Производительность растёт). 
  • Fault Tolerance. В случае отказа реплики, все запросы чтения можно безопасно перевести на главный сервер. В обратном режиме это также работает. 
  • Резервирование. Работу реплики можно приостановить на время, чтобы выполнить mysqldump, работу мастера приостановить нельзя. 
  • Отложенные вычисления. Неповоротливые SQL-запросы можно выполнять на отдельной реплике, не боясь помешать оптимальной работе всей системы. 


Кроме того, с помощью репликации можно использовать различную структуру таблиц на главном сервере и репликах (а иногда без этого действительно не обойтись). Может отличаться как тип таблицы (engine), так и набор индексов. 


В реальном времени или в отложенном периоде проводится репликация БД - не так уж и важно, важна сама настройка. Грамотно настроенная репликация позволит устранить единичные точки отказа, сбалансировать режим нагрузки, особенно если производительность реплик неодинакова и изменять логику работы приложения. В идеальной ситуации, запросы на чтение данных отправляются на реплики, остальные - на главный сервер. Однако, такая схема работает не всегда, из-за возможного отставания реплик. Тогда задачей специалиста по БД, чтобы не потерять производительность, становится также вовремя выявить такие запросы на чтение и отправить их на главный сервер “вручную”.