Ответ
Репликация базы данных — это процесс автоматического копирования и поддержания согласованности данных между несколькими серверами (репликами). Основные цели: повышение доступности, отказоустойчивости и распределение нагрузки на чтение.
Основные типы репликации
- Master-Slave (Источник-Реplica): Один сервер (мастер) принимает операции записи, а один или несколько слейвов реплицируют данные только для чтения.
- Master-Master (Multi-Master): Несколько серверов могут принимать операции записи и синхронизировать изменения между собой.
Пример настройки Master-Slave в MySQL
-- На мастере
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
SHOW MASTER STATUS; -- Запомните File и Position
-- На слейве
CHANGE MASTER TO
MASTER_HOST='master_host',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='binlog.000001',
MASTER_LOG_POS=154;
START SLAVE;
Преимущества и недостатки
Плюсы:
- Отказоустойчивость: При падении мастера слейв может быть повышен.
- Производительность: Распределение запросов на чтение по репликам.
- Геораспределение: Размещение данных ближе к пользователям.
Минусы:
- Сложность: Настройка и поддержка.
- Задержка (Replication Lag): Данные на репликах могут быть неактуальны.
- Конфликты записи: В multi-master топологиях требуются стратегии разрешения конфликтов.