Вопрос проверяет понимание архитектуры распределенных систем и баз данных, где используется модель master-slave для репликации и распределения нагрузки.
В распределенных системах и базах данных модель master-slave — это архитектурный паттерн для управления данными и распределения нагрузки. Основная идея заключается в разделении ролей между узлами (нодами): один узел назначается мастером (master), а остальные — подчиненными (slave).
Репликация данных обычно происходит асинхронно или синхронно. При асинхронной репликации master подтверждает запись клиенту до того, как изменения переданы всем slave, что повышает производительность, но может привести к небольшой задержке (лаг) в данных на slave. Синхронная репликация гарантирует, что данные записаны на master и хотя бы на одном slave перед подтверждением клиенту, обеспечивая консистентность, но снижая скорость записи.
-- На master-сервере настраиваем бинарный лог и пользователя для репликации
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
-- На slave-сервере указываем master для подключения
CHANGE MASTER TO
MASTER_HOST='master_host',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
START SLAVE;
-- Проверяем статус репликации
SHOW SLAVE STATUS\G
Архитектура master-slave широко используется в базах данных (MySQL, PostgreSQL, MongoDB), системах кэширования (Redis) и распределенных файловых системах. Ключевые преимущества:
Вывод: Модель master-slave стоит применять в системах, где требуется масштабировать операции чтения, обеспечить отказоустойчивость и разделить нагрузку между узлами. Она особенно полезна для веб-приложений с высокой читаемой нагрузкой, таких как CMS, блоги или каталоги товаров.