
Обычно после дампа базы данных MySQL с помощью mysqldump
команды я сразу же tar/gzip получающийся файл. Я ищу способ сделать это одной командой:
Итак, из этого следует:
mysqldump dbname -u root -p > dbname.sql
tar czvf dbname.sql.tgz dbname.sql
rm dbname.sql
Что-то вроде этого:
mysqldump dbname -u root -p > some wizardry > dbname.sql.tgz
Или даже лучше (поскольку я обычно копирую файл дампа на другой сервер):
mysqldump dbname -u root -p > send dbname.sql.tgz to user@host
Я использую bash на Debian.
решение1
mysqldump --opt <database> | gzip -c | ssh user@wherever 'cat > /tmp/yourfile.sql.gz'
В таком конвейере вы не сможете использовать tar, да он вам и не нужен, поскольку вы выводите только один файл. tar полезен только в том случае, если у вас несколько файлов.
решение2
Если вы запускаете это локально, просто используйте следующую команду для резервного копирования вашей базы данных и заархивируйте ее с помощью gzip:
mysqldump -u userName -p (passwordPrompt) yourDatabaseName | gzip -c > output.gz
(Изменить: исправлен ключ -c)
решение3
Используйте именованный канал.
mkfifo mysql_pipe
gzip -9 -c < mysql_pipe > name_of_dump.gz &
mysqldump database > mysql_pipe
rm mysql_pipe
Я пользуюсь им постоянно, он потрясающий.
решение4
Используйте pv
и следите за скоростью!
mysqldump prod_db -h dbslave | pv | gzip -c > prod_2012_08_20.dump.tgz
Или, если вы знаете размер (3 ГБ), получите точную оценку:
mysqldump prod_db -h dbslave | pv -s 3g | gzip -c > prod_2012_08_20.dump.tgz