Streaming или делаем бэкап MySQL сразу на удаленный хост

Поднимал на днях реплики и попался хост у которого БД ~300 гб и свободного места около 30 гб. Первые мысли замаунтить по nfs шару и делать сразу в нее, но погуглив понял что innobackupex может все заворачивать в STDOUT, ну а дальше ssh и все как я люблю.
innobackupex --compress --stream=xbstream /tmp/db/ | ssh [email protected] "xbstream -x -C /tmp/db/"
Где:
--сompress - сжатие
--stream=xbstream - говорим в поток используя формат xbstream
/tmp/ - каталог для временых файлов
[email protected] - куда и под каким пользователем
-x - извлекаем
-C /tmp/db/ - куда складываем
Далее на принимающей стороне подготавливаем то что получили используя след конструкцию, плюс к этому у нас должен быть установлен qpress.
for bf in `find /tmp/db -iname "*\.qp"`; do echo "processing $bf" ; qpress -d $bf $(dirname $bf) && rm -f $bf; done
После
xtrabackup --prepare --target-dir=/tmp/db
Хотя согласно доке в Percona XtraBackup 2.1.4 появился innobackupex --decompress, который делает все тоже самое, но я использовал первый вариант.
Далее осталось выполнить
innobackupex --apply-log /tmp/db/
Из полезного у данной фичи есть параметр --use-memory=1G, который может ускорить этот шаг, по умолчанию используется 100MB.
Ну и на выходе после всего этого у нас готовые файлы для бэкапа или реплики. Если это реплика - то позиция и номер бинлога лежит в каталоге, под названием xtrabackup_binlog_info
Cсылки:
Streaming and Compressing Backups
Making a Compressed Backup