У нас есть приложение Rails, которое какое-то время работает в настройке «главный-подчиненный» MySQL, используя плагин master_slave_adapter .В последнее время возникла необходимость в фоновой обработке долгосрочных задач.Итак, мы остановились на DelayedJob .
В таблице / модели DelayedJob используется один и тот же адаптер ведущий-ведомый.И это поддерживает связь подчиненного, опрашивая стол.Но главное соединение остается свободным в течение длительных периодов времени, закрывается на ночь, и в следующий раз, когда кто-то активирует работу, это происходит:
Mysql::Error: MySQL server has gone away: UPDATE `delayed_jobs` SET locked_by = null, locked_at = null WHERE (locked_by = 'delayed_job host:[snip] pid:20481')
Я слышал плохие вещи об использовании опции reconnect
в моемdatabase.yml
, потому что он якобы не устанавливает набор символов соединения после переподключения, как это происходит при первой инициализации соединения.
Как правильно сделать эту работу?