Что такое Master в базах данных при репликации
1️⃣ Как кратко ответить
Master в базах данных при репликации — это основной сервер, который принимает все операции записи и изменения данных. Он отвечает за распространение этих изменений на другие серверы, называемые репликами или слейвами, чтобы обеспечить согласованность данных.
2️⃣ Подробное объяснение темы
В контексте баз данных, репликация — это процесс копирования и поддержания данных между несколькими серверами для обеспечения доступности, отказоустойчивости и масштабируемости. В этой архитектуре выделяются два основных типа серверов: Master (или Primary) и Slave (или Replica).
Master-сервер:
-
Основная роль: Master-сервер является центральной точкой, где происходят все операции записи и изменения данных. Это может включать в себя вставку, обновление и удаление данных. Все изменения, сделанные на Master-сервере, затем передаются на Slave-серверы.
-
Распределение изменений: Master отвечает за отправку изменений данных на все подключенные Slave-серверы. Это гарантирует, что все реплики имеют актуальные данные, что критично для согласованности системы.
-
Пример использования: В системах, где требуется высокая доступность и отказоустойчивость, таких как банковские приложения или онлайн-магазины, Master-сервер обеспечивает, чтобы все изменения данных были надежно распространены на все реплики.
Как это работает:
-
Запись данных: Когда приложение или пользователь вносит изменения в базу данных, они сначала записываются на Master-сервер. Это может быть новая запись, обновление существующей или удаление.
-
Лог изменений: Master-сервер ведет журнал изменений (например, бинарный лог в MySQL), который содержит все операции, выполненные над данными. Этот журнал используется для передачи изменений на Slave-серверы.
-
Репликация: Slave-серверы подключаются к Master-серверу и получают копию журнала изменений. Они применяют эти изменения к своим локальным копиям данных, чтобы оставаться синхронизированными с Master.
-
Согласованность данных: Благодаря этому процессу, все Slave-серверы имеют актуальные данные, что позволяет распределять нагрузку на чтение между несколькими серверами и повышать доступность системы.
Пример кода:
Рассмотрим пример настройки репликации в MySQL:
-- На Master-сервере
-- Включаем бинарный лог для отслеживания изменений
[mysqld]
log-bin=mysql-bin
server-id=1
log-bin=mysql-bin: Включает бинарный лог, который будет использоваться для записи всех изменений данных.server-id=1: Уникальный идентификатор для Master-сервера в кластере репликации.
-- На Slave-сервере
-- Указываем, от какого Master-сервера получать данные
CHANGE MASTER TO
MASTER_HOST='master_host',
MASTER_USER='replication_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=4;
MASTER_HOST='master_host': Указывает адрес Master-сервера.MASTER_USER='replication_user': Имя пользователя, который имеет права на репликацию.MASTER_PASSWORD='password': Пароль для пользователя репликации.MASTER_LOG_FILE='mysql-bin.000001': Имя файла бинарного лога, с которого начинать репликацию.MASTER_LOG_POS=4: Позиция в бинарном логе, с которой начинать репликацию.
Этот процесс позволяет распределять нагрузку на чтение между несколькими серверами и обеспечивает высокую доступность и отказоустойчивость системы.
🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!
Подписаться