Когда я столкнулся с этой проблемной (не на nodejs, а на java), то причиной оказалось то, что если соединение не передает данные приблизительно минут 15 - MySQL сервер принудительно разрывает соединение с клиентом, хотя клиент не ловит никаких событий по этому поводу до тех пор пока не начнет передавать данные - и в этом моменте ловим exeption о том, что нет соединения. Даже MySQL опция MYSQL_OPT_RECONNECT не работает...
Я выкрутился сл. образом - с момента первого удачного соединения с MySQL каждые 5 минут (в таймере) клиент отправлял пустой запрос в базу (SELECT 1) - это помогало поддержать соединение - MySQL сервер сбрасывал таймер timeout`а пользователя и одно соединение удавалось поддерживать месяцамим!