Что я хотел сделать: Я активно использую percona mysql в своих проектах, поэтому я написал обёртку для xtrabackup на питоне, чтобы красивенько бекапы в s3 складывать, потому что я могу.
Что получилось не так: База жирная, весит 129 гигабайт. Когда я сжимаю её при помощи tarfile из python, я получаю tar весом 121 гигабайт. Та же самая база при помощи pigz мало того, что ужималась всеми ядрами сервера, так ещё и весила всего 15 гигов.
Как я это делал? Вот так:
with tarfile.open(self.backup_dir + f'/{backupfile}.tar.gz', 'w:gz', compresslevel=9) as tar:
tar.add(f'{self.backup_dir}/backup/', arcname='backup')
Отсюда вытекают два вопроса:
- Как мне использовать для сжатия все ядра? Чертовски медленно это всё выполняется, просто невыносимо.
- Почему tarfile так херово сжимает? Как понять какой там алгоритм и какой алгоритм у pigz?
В целом я мог бы через subprocess дёргать pigz и пофигу, но интересно как сделать это через питон.
P.S. Кстати, вероятно проблема с сжатием в том, что раньше я бекапы не шифровал, а теперь шифрую. Пока проверю эту гипотезу.