У нас есть некоторые репликационные соединения между mariadb-серверами, большинство из них являются master-slave-соединениями (одинаковые версии на master и slave).Время от времени, но регулярно соединение перестает работать.Но ошибки нет, потоки ввода-вывода и SQL-потока работают.в этих случаях мы замечаем только пропущенные значения на ведомом устройстве, и затем я останавливаюсь и снова запускаю ведомое устройство, и после этого у нас есть Seconds_behind_master> 0, прежде чем нет.Теперь я кое-что узнал о переменной MASTER_HEARTBEAT_PERIOD , но она включена со значением по умолчанию (30 секунд) и, похоже, тоже не работает.В чем может быть причина этого странного поведения?Что мы можем сделать?
РЕДАКТИРОВАТЬ: После некоторого исследования (запланированное событие на ведущем и ведомом: на главном записывает текущую метку времени в таблице, на ведомом сохраняет разницу этой отметки с текущим временем), я обнаружил, что мырегулярно через несколько часов делайте эти остановки рабов.И раб начинает снова через ровно 7200 секунд (2 часа).Это случилось сейчас два раза за 11 часов.Что это может быть?
РЕДАКТИРОВАТЬ2: Дальнейшие исследования показывают, что явление, вероятно, не вызвано mariadb.Я контролировал несколько соединений (описанных в моем первом редактировании), и таким образом я обнаружил, что только репликации с мастерами из виртуальных машин определенного хоста (MS Hyper-V) задерживают, и они задерживают абсолютную синхронизацию.Я думаю, что причина задержек (до 7200 секунд, затем задержки исчезают) должна быть на этом хосте.Но - у нас есть некоторые master-master-репликации с экземплярами на этих виртуальных машинах, но проблема не возникает в этих соединениях.И у нас нет проблем с другими подключениями репликации на нашей ведомой виртуальной машине от виртуальных машин с других хостов.Странно.
EDIT3: Ну, это, вероятно, не проблема DNS.Несколько дней назад я переключил все главные адреса на ip и установил skip_no_resolve.Но ничего не изменилось.Есть два основных раза в день, когда это происходит каждый раз (около 05:58 и 10:15).Интересно, что первый раз (05:58) является относительно постоянным, но второй раз (10:15) происходит примерно на 30 секунд в будущем каждый день (с 10:11 19.10 до 10:19).И, что интересно, ночью с 27 на 28.10.у нас было изменение во времени (лето на зимнее время, + 1 час), изменился и второй раз (10:15) (до 28.10. это было каждые 11:15, теперь это примерно каждые 10:15).Первый раз 05:58 не изменился.И (я знаю, я должен был сделать это давным-давно) У меня есть в журнале ошибок mysql каждый раз 2 записи:
2018-11-06 10:19:50 6172 [ERROR] Error reading packet from server: Lost connection to MySQL server during query (server_errno=2013)
2018-11-06 10:19:50 6172 [Note] Slave I/O thread: Failed reading log event, reconnecting to retry, log 'mysql-bin.002007' at position 113739713
Ну, что-то позволяет репликации останавливаться два раза в день (около 03:58 и 08:15) без каких-либо ошибок, почти одинаково, но во второй раз примерно через 20-30 секунд каждый день, и через 2 часа mariadb узнает оэто, печатает эти 2 сообщения в журнал и повторно подключает подчиненное устройство.Я беспомощен.