Назад | Перейти на главную страницу

Сжать потоковые данные перед отправкой

Следующее работает, как ожидалось.

Отправляющий сервер:

mysqldump db_name tbl_name -d | nc -l 1234

Принимающий сервер:

nc 10.10.10.114 1234 | mysql -uroot -proot@123 test

Когда я выгружаю данные на удаленный сервер, на передачу данных уходит много времени. Можно ли добавить смолу jcf - и деготь jxf - в этом процессе.

Конечно:

mysqldump db_name tbl_name -d | bzip2 -c | nc -l 1234

и

nc 101010.114 1234 | bzip2 -cd | mysql -uroot -proot@123 test

(Заменить bzip2 с участием gzip или какую-нибудь другую программу сжатия, если хотите; все они работают примерно одинаково в Linux)

Нет причин использовать tar; вы просто выгружаете данные из MySQL в виде одного фрагмента текста. Вы также используете nc тем, что обычно считается «обратным» путем; обычно потребитель данных (mysql в данном случае) прослушивает (но на самом деле нет никакой разницы в работе, это просто "кажется" странным).

Однако имейте в виду, что этот метод на самом деле может не ускорить работу - по моему опыту, узким местом в дампах / загрузках MySQL является MySQL, а не сеть (если вы не запускаете это по ссылке с серьезно ограниченной пропускной способностью).

Пропуск через tar должен работать нормально.

Отправка:

... | tar -cjf - | ...

Получение

... | tar -xjf - | ...

Возможно, вы захотите использовать вместо этого «z», поскольку он использует сжатие gzip вместо более дорогого bzip2, но это зависит от того, насколько быстро он работает для вас.