запуск удаленной команды с помощью ssh, похоже, останавливает всю остальную сетевую активность

запуск удаленной команды с помощью ssh, похоже, останавливает всю остальную сетевую активность

Я запускаю следующую команду для резервного копирования базы данных MySQL с удаленного компьютера:

ssh [email protected] 'mysqldump mainserver' | gzip -c > mainserver.sql.gz

Я засек время выполнения команды, и, похоже, она занимает около 2,5–3 минут. Кажется, все работает без проблем.

Однако проблема в том, что весь остальной сетевой трафик на удаленном сервере, по-видимому, прерывается.

Удаленный сервер имеет "кометные" http-соединения (соединения, которые остаются открытыми в течение длительного периода), и эти соединения, похоже, останавливаются. Есть также другие TCP-соединения, которые остаются открытыми, которые, похоже, отключаются именно в тот момент, когда указанная выше команда ssh завершается. (по крайней мере, сообщения журнала появляются, когда команда ssh останавливается, но я подозреваю, что до этого никакие данные не передаются).

решение1

База данных заблокирована.

Хотя в вопросе это описано как «весь остальной сетевой трафик на удаленном сервере, похоже, прерван», гораздо более вероятно, что дамп базы данных блокирует (все) таблицы innodb.

В этом сценарии любой процесс чтения/записи в заблокированные таблицы будет ждать завершения дампа, прежде чем он сможет получить блокировку, прочитать/записать в базу данных и завершить запрос. Если весь http-трафик должен читать/писать в базу данных, это создаст впечатление, что весь http-трафик заблокирован.

Предотвращение блокировок

Mysqldump предоставляет--отдельная транзакцияфлаг, который позволяет mysqldumpнетзаблокировать innodbтаблицы.

Связанный контент