← Назад ко всем вопросам

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

1️⃣ Как кратко ответить

Master в базах данных при репликации — это основной сервер, который принимает все операции записи и изменения данных. Он отвечает за распространение этих изменений на другие серверы, называемые репликами или слейвами, чтобы обеспечить согласованность данных.

2️⃣ Подробное объяснение темы

В контексте баз данных, репликация — это процесс копирования и поддержания данных между несколькими серверами для обеспечения доступности, отказоустойчивости и масштабируемости. В этой архитектуре выделяются два основных типа серверов: Master (или Primary) и Slave (или Replica).

Master-сервер:

  • Основная роль: Master-сервер является центральной точкой, где происходят все операции записи и изменения данных. Это может включать в себя вставку, обновление и удаление данных. Все изменения, сделанные на Master-сервере, затем передаются на Slave-серверы.

  • Распределение изменений: Master отвечает за отправку изменений данных на все подключенные Slave-серверы. Это гарантирует, что все реплики имеют актуальные данные, что критично для согласованности системы.

  • Пример использования: В системах, где требуется высокая доступность и отказоустойчивость, таких как банковские приложения или онлайн-магазины, Master-сервер обеспечивает, чтобы все изменения данных были надежно распространены на все реплики.

Как это работает:

  1. Запись данных: Когда приложение или пользователь вносит изменения в базу данных, они сначала записываются на Master-сервер. Это может быть новая запись, обновление существующей или удаление.

  2. Лог изменений: Master-сервер ведет журнал изменений (например, бинарный лог в MySQL), который содержит все операции, выполненные над данными. Этот журнал используется для передачи изменений на Slave-серверы.

  3. Репликация: Slave-серверы подключаются к Master-серверу и получают копию журнала изменений. Они применяют эти изменения к своим локальным копиям данных, чтобы оставаться синхронизированными с Master.

  4. Согласованность данных: Благодаря этому процессу, все 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: Позиция в бинарном логе, с которой начинать репликацию.

Этот процесс позволяет распределять нагрузку на чтение между несколькими серверами и обеспечивает высокую доступность и отказоустойчивость системы.

Тема: GO: Архитектура
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки