MySQL (6) репликация master-slave

Статьи серии MySQL

MySQL (1) Базовая структура, оператор SQL, попробуйте
MySQL (2) Принцип индексирования и оптимизация
MySQL (3) Оптимизация SQL, пул буферов, буфер изменений
MySQL (4) Принцип транзакций и анализ
MySQL (5) Стратегия кэширования
MySQL (6) Три парадигмы базы данных репликации master-slave


предисловие

MySQL имеет собственный механизм синхронизации master-slave.Устройство, на котором установлена ​​MySQL, может реализовать функцию синхронизации базы данных master-slave, установив соответствующие параметры.

Каковы преимущества настройки master-slave MySQL?

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

Какой режим используется master-slave?

Обычно один мастер и один раб или один мастер и много рабов.

Главный сервер отвечает только за запись, а подчиненный сервер — только за чтение, что повышает эффективность и снижает нагрузку.

Принцип репликации master-slave

вставьте сюда описание изображения

  1. Основная БД обновляется , то есть при выполнении операций обновления, вставки, удаления основная БД будет писать логику операции в binlog через io-thread;
  2. Подчиненная библиотека запросит чтение бинарного журнала из основной библиотеки, а основная библиотека отправит содержимое бинарного журнала в подчиненную библиотеку через поток дампа журнала.
  3. Подчиненная библиотека записывает обновленный бинлог в локальный релейный журнал (relay log) подчиненной библиотеки через поток io-thread;
  4. Ведомая библиотека в конечном итоге прочитает журнал ретрансляции через sql-thread, разберет содержимое на определенные операции и, наконец, обеспечит согласованность данных ведущий-ведомый;

Метод синхронизации данных

В процессе синхронизации передаются два типа данных бинарного журнала: оператор и данные строки.

репликация оператора

То есть весь процесс репликации master-slave передает записи операций вместо данных базы данных. Следовательно, необходимо выполнить команду операции из базы данных после ее усложнения в базу данных, чтобы результаты данных можно было окончательно синхронизировать на диск.

преимущество:

  • Это может уменьшить объем передачи данных и задержку репликации , а также повысить эффективность репликации master-slave (поскольку для передачи данных необходимо передать всю библиотеку).
  • Предполагая, что в таблице один миллион записей и один sql обновляет все таблицы, репликация на основе операторов должна отправить только один sql, а репликация на основе строк должна отправить один миллион обновленных записей.

недостаток:

  • Может быть предупреждение о невозможности корректного копирования
  • Инструкции Insert... select будут выполнять большое количество таблиц блокировки на уровне строк.
  • Оператор Update выполнит большое количество блокировок таблицы на уровне строк для сканирования всей таблицы.

Режим репликации операторов используется по умолчанию в mysql5.6.

копия данных строки

То есть обновить каждую строку данных в фактической библиотеке. Это приводит к относительно высокой нагрузке на репликацию, большому пространству, занимаемому журналами, и большой пропускной способности канала передачи. Но этот метод более точен, чем репликация на основе операторов.
преимущество:

  • План запроса не требуется.

  • Я не знаю, какое выражение выполняется.

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

недостаток:

  • журнал будет огромным

синхронный режим

MySQL поддерживает асинхронную репликацию, синхронную репликацию и полусинхронную репликацию.

асинхронная репликация

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

Таким образом, будет проблема.Если главный узел выйдет из строя, транзакция, которая была отправлена ​​​​на главный узел, может не быть передана на подчиненный узел в это время, неполные данные.

синхронная репликация

Уникальный метод репликации в кластере MySQL.

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

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

полусинхронная репликация

На основе асинхронной репликации гарантируется, что по крайней мере одна подчиненная библиотека получила и записала транзакцию в любой главной библиотеке перед ее фиксацией.
Между асинхронной репликацией и полной синхронной репликацией главная библиотека не возвращается к клиенту сразу после выполнения транзакции, отправленной клиентом, а ждет, пока по крайней мере одна подчиненная библиотека получит и запишет в журнал ретрансляции, прежде чем вернуть клиенту информацию об успешном выполнении. end (вы можете только убедиться, что Binlog основной библиотеки был передан хотя бы на одну подчиненную ноду), в противном случае вам нужно дождаться периода тайм-аута, а затем переключиться в асинхронный режим перед отправкой.

По сравнению с асинхронной репликацией, полусинхронная репликация повышает безопасность данных и в определенной степени обеспечивает успешное резервное копирование данных в подчиненную базу данных. задержка полносинхронного режима, которая является наименьшей задержкой, — это время для одного кругового пути TCP/IP. Поэтому полусинхронную репликацию лучше всего использовать в сетях с малой задержкой.

Для получения подробной информации обратитесь к
Принципу репликации MySQL Master-Slave
Настройка синхронизации Mysql Master-Slave (репликация)

Supongo que te gusta

Origin blog.csdn.net/weixin_44477424/article/details/131742569
Recomendado
Clasificación