Обмен технологиями

Репликация MySQL-master-slave и разделение чтения и записи

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Репликация «главный-подчиненный» MySQL и разделение чтения и записи являются важными техническими средствами повышения производительности и доступности базы данных.

 

Репликация «главный-подчиненный»:

 

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

 

Конфигурация главного сервера:

 

1. Включите двоичный журнал (Binary Log): записывайте все операции модификации в базу данных.

2. Настройте уникальный идентификатор сервера: используется для идентификации главного и подчиненного серверов.

 

Конфигурация подчиненного устройства:

 

1. Также настройте уникальный идентификатор сервера, который не может совпадать с идентификатором основного сервера.

2. Укажите информацию о соединении главного сервера, включая имя хоста, порт, имя пользователя и пароль.

 

Конкретный процесс репликации master-slave:

 

1. Поток ввода-вывода подчиненного сервера подключается к главному серверу и запрашивает главный сервер начать отправку двоичных журналов с указанной позиции.

2. После того, как главный сервер получает запрос, он запускает поток для отправки содержимого двоичного журнала на подчиненный сервер.

3. Получите данные двоичного журнала из потока ввода-вывода сервера и запишите их в локальный журнал ретрансляции (Relay Log).

4. Считайте содержимое журнала ретрансляции из потока SQL сервера и воспроизведите операции журнала в локальной базе данных для синхронизации данных.

 

Режим копирования:

 

1. Репликация на основе операторов. Главный сервер записывает выполненные операторы SQL в двоичный журнал, а подчиненный сервер воспроизводит эти операторы. Этот метод прост, но может вызвать несогласованность некоторых недетерминированных утверждений.

2. Репликация на основе строк: записывает изменения в строках данных, что более точно, но генерирует больший объем журналов.

3. Гибридная репликация. Автоматический выбор репликации на основе операторов или строк в зависимости от ситуации.

 

Задержка репликации «главный-подчиненный»:

Из-за задержки в сети, производительности подчиненного сервера и других факторов может возникнуть определенная задержка между данными подчиненного сервера и главным сервером.

 

Прочитайте и напишите разделение:

 

Разделение чтения и записи реализовано на основе репликации master-slave. Операции чтения базы данных возлагаются на подчиненный сервер, а операции записи – на главный сервер.

 

Способы достижения разделения чтения и письма:

 

1. Ручная настройка в приложении: Отправка запросов на разные серверы в зависимости от типа операции (чтение или запись).

2. Используйте промежуточное программное обеспечение: такое как MyCat, ProxySQL и т. д., которое может автоматически перенаправлять трафик на главный или подчиненный сервер в зависимости от типа запроса.

 

Преимущества разделения чтения и записи:

 

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

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

 

Проблемы разделения чтения и письма:

 

1. Согласованность данных. Из-за задержки на подчиненном сервере могут быть прочитаны не самые последние данные.

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

 

Подводя итог, можно сказать, что репликация «главный-подчиненный» MySQL и разделение операций чтения и записи представляют собой сложное, но эффективное решение для оптимизации базы данных, которое необходимо тщательно спроектировать и настроить в соответствии с реальными потребностями бизнеса и архитектурой системы, чтобы в полной мере использовать его преимущества и справиться с возможными проблемами. .