механизмы ведущий-ведомый синхронизации MySQL и отслеживание задержки синхронизации проблемы процесса

предисловие

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

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

производительность Failure

Наиболее интуитивный следующим образом:

?
1
2
3
4
5
6
7
mysql> show slave status\G;
  // 状态一
  Seconds_Behind_Master: NULL
  // 状态二
  Seconds_Behind_Master: 0
  // 状态三
  Seconds_Behind_Master: 79

Непрерывный запрос, значение атрибута большую часть времени = 0, 79, или случайные появляются как значения латентности Null. Для наблюдаемого от контроля длительности задержки синхронизации мастер-сигнализации.

Отказ причины и решения

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

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

механизмы синхронизации ведущий-ведомый

MySQL синхронизации ведущий-ведомый, называется копия (репликации), представляет собой высокопроизводительный встроенный в кластерных решений высокой доступности, основными функциями являются:

  • Распределение данных: синхронизация не требует большой пропускной способности, данные репликации центр мульти-данных.
  • Читайте балансировки нагрузки: кластер серверов, через DNS опрос, Linux LVS как GSLB режим (глобальная балансировка нагрузки), снижая давление основного сервера для чтения.
  • Резервное копирование базы данных: Копировать является частью резервной копии, но не является заменой для резервного копирования. Кроме того, мы должны быть в сочетании с быстрой камерой.
  • Высокая доступность и отказоустойчивость: Вы можете быстро переключиться на мастер-сервер с сервера, сокращая время простоя и восстановления после сбоя времени.

Синхронизация ведущий-ведомый разделен на три этапа:

  1. Первичный сервер (мастер) на двоичные данные изменяет журнал (Двоичный) в.
  2. Скопировано с сервера (ведомым) в собственном журнале реле двоичного журнала мастера (журнал реле) в.
  3. Повторить журналы из журнала релейного сервера, изменения в базу данных самостоятельно, чтобы обеспечить согласованность данных.

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

С помощью приведенного выше графика, вы можете увидеть в общей сложности три нити необходимо:

  1. Доставка журналы основного потока сервера: Инкрементальные отвечают за передачу двоичного журнала на резервную машину
  2. Из потока сервера ввода / вывода: отвечает за чтение бинарного журнала мастера, и сохраните его в журналах реле
  3. Из нити SQL Server, ответственной за реализацию протокола реле

Просмотр MySQL нитки

Мы можем использовать show full processlist;команду для просмотра состояния MySQL:

Хост состояния:

Получение конечного автомата:

Вы можете видеть, мою кластерную архитектуру 1 хозяина, 4 комплекта резервной машины, так что есть четыре одновременные потоков в хосте (Двоичный послали все данные в резервную машину, ожидая Двоичное обновление журнала), команда вида резьбы ( показать полный PROCESSLIST). Существует поток для того, чтобы просмотреть резервную машину, ввод / вывод поток (ждать хозяина, чтобы отправить событие синхронизации данных), SQL-нить (все журналы реле будет считаны, ожидая поток ввода / вывода, чтобы обновить его).

Просмотреть состояние синхронизации

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

В какой-то свойство ведущий-ведомый синхронизации, мы должны сосредоточиться на том, что мы должны отметить красным цветом:

  • Slave_IO_State: текущее состояние потоков ввода / вывода
  • Master_Log_File: тока синхронизации мастер-сервера двоичные файлы
  • Read_Master_Log_Pos: ток смещения двоичный синхронный первичный сервер, байт, как показано на синхронизированной содержание 12.9M (13630580/1024/1024) из
  • Relay_Master_Log_File: Ток реле входа синхронного двоичного файла
  • Slave_IO_Running: рабочее состояние с сервера ввода / вывода потока, ДА работает нормально
  • Slave_SQL_Running: На сервере выполняется SQL нить, YES нормально работает
  • Exec_Master_Log_Pos: указывает на смещение двоичного журнала завершение мастер синхронизации
  • Seconds_Behind_Master: представляет собой большую продолжительность, чем данные с сервера, если за основной сервер

То же самое можно показать мастер статус, команда для просмотра рабочего состояния мастеров-сервера:

Первичная синхронизация состояние от нормальной работы:

Slave_IO_Running: ДА
Slave_SQL_Running: ДА
Seconds_Behind_Master: 0

поиск неисправностей

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
mysql> show slave status\G;
#状态一:
  Slave_IO_State: Reconnecting after a failed master event read
  Slave_IO_Running: No
  Slave_SQL_Running: Yes
  Seconds_Behind_Master: NULL
#状态二:
  Slave_IO_State: Waiting for master to send event
  Slave_IO_Running: Yes
  Slave_SQL_Running: Yes
  Seconds_Behind_Master: 0
#状态三:
  Slave_IO_State: Queueing master event to the relay log
  Slave_IO_Running: Yes
  Slave_SQL_Running: Yes
  Seconds_Behind_Master: 636

По переходу MySQL ведущих-ведомого состояния потока репликации , мы можем увидеть различные значения трех состояний:

?
1
2
3
4
5
6
7
8
9
10
# 状态一
# 线程正尝试重新连接主服务器,当连接重新建立后,状态变为Waiting for master to send event。
Reconnecting after a failed master event read
# 状态二
# 线程已经连接上主服务器,正等待二进制日志事件到达。如果主服务器正空闲,会持续较长的时间。如果等待持续slave_read_timeout秒,则发生超时。此时,线程认为连接被中断并企图重新连接。
Waiting for master to send event
 
# 状态三
# 线程已经读取一个事件,正将它复制到中继日志供SQL线程来处理。
Queueing master event to the relay log

Здесь мы можем догадаться, по какой-то причине, по-прежнему отключены от сервера и основного сервера и пытается восстановить соединение, повторное подключение после отключения снова.

Давайте посмотрим на работу хоста:

.. Нашел проблему 10.144.63 10.144.68 * и * на обеих машинах, которые мы видим один из журнала ошибок:

190214 11:33:20 [Примечание] Подчиненный: получена конечный пакет от сервера, очевидно , мастер отключения: 
190214 11:33:20 [Примечание] Ведомый ввод / вывод резьба: Ошибка чтения события журнала, чтобы повторить попытку повторного подключения, журнал «MySQL-бен 0,005682' в постион 13628070

Получить Ведомый ключевое слово: полученный конечный пакет от сервера, кажущийся мастер отключение: Google поиск, в статье запутывающей репликаций MySQL Сообщение об ошибке может увидеть причину две машины резервной сервера идентификатор повторяется.

Однажды это случилось со мной, и взял меня почти час , чтобы выяснить это.
Перемещение перемещения вперед Я всегда использую базовый my.cnf , чтобы скопировать на любой другой сервер и первая вещь, чтобы увеличить идентификатор сервера.
Может MySQL просто использовать имя_сервера Intead числового значения?

Исправление ошибок

Найдите эту проблему, мы подтвердим ли следующее повторение, то два обнаружили, что поле резервной машины делает то же самое:

?
1
2
3
4
5
6
7
vim my.cnf
 
#replication
log-bin=mysql-bin
# 这个随机数字相同导致的
server- id =177230069
sync_binlog=1

更改一个其他不同的数字,保存,重启MySQL进程,报警恢复。

总结

最终来看,这个问题的解决非常简单,但从刚开始的迷茫到最后的思路清晰,都是我们排查问题所常见的,这篇文章的主要收获是让你明白主从同步的机制和追查问题的思路,希望下次我们都能很快的解决主从同步带给我们的问题。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

рекомендация

отwww.cnblogs.com/HKROnline-SyncNavigator/p/10971471.html
рекомендация