Назад к вопросам
Junior
117
questionbank

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

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Репликация — это процесс копирования данных из одной базы данных (мастера) в одну или несколько других баз данных (реплик) в реальном времени или с небольшой задержкой.

Основные цели репликации:

  • Повышение доступности. При отказе мастера, реплика может взять на себя нагрузку.
  • Увеличение скорости чтения. Запросы на чтение распределяются между мастером и репликами.
  • Резервное копирование. Реплика может использоваться как актуальная копия данных.
  • Аналитика. Аналитические запросы могут выполняться на репликах, не нагружая мастер.

Типы репликации:

  • Асинхронная. Мастер не ждет подтверждения от реплики о применении изменений. Возможна небольшая задержка данных.
  • Синхронная. Мастер ожидает подтверждения от реплики. Гарантирует согласованность данных, но может замедлить запись на мастере.
  • Полусинхронная. Компромисс между асинхронной и синхронной. Мастер ждет подтверждения от хотя бы одной реплики.

Пример конфигурации MySQL:

// my.cnf на мастере
[mysqld]
server-id = 1
log_bin = mysql-bin

// my.cnf на реплике
[mysqld]
server-id = 2
relay_log = mysql-relay-bin
read_only = 1 // Можно сделать реплику только для чтения

Настройка реплики:

// На реплике
CHANGE MASTER TO
MASTER_HOST='<IP_мастера>',
MASTER_USER='<repl_user>',
MASTER_PASSWORD='<repl_password>',
MASTER_LOG_FILE='<binlog_файл>', // Получается с мастера show master status;
MASTER_LOG_POS=<binlog_позиция>; // Получается с мастера show master status;

START SLAVE;