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

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

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


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

  1. Для роста производительности. Репликация помогает масштабироваться и справляться с нагрузкой, вызываемой одновременными операциями чтения и записи в бд. Одному серверу работать в таком режиме сложно, поэтому, чем больше реплик, тем больше операций чтения приходится на одну операцию записи в системе. Это значит что и работать серверу становится легче и производительность растёт.
  2. Для отказоустойчивости систем. В случае отказа реплики, все запросы чтения можно безопасно перевести на главный сервер. В обратном режиме это также работает.
  3. Для резервирования данных. Работу реплики можно приостановить на время, чтобы выполнить mysql dump, работу мастера приостановить нельзя.
  4. Для отложенных вычислений. Неповоротливые SQL-запросы можно выполнять на отдельной реплике, не боясь помешать оптимальной работе всей системы. 


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


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