Практика служения кубам Боргов

Давно уже себе искал хорошую тулзу для бэкапа небольших серверов, такую чтоб бэкапила его всего, не поганила права, быстро, и не захлебывалась… и… кажется нашел.

Сегодня мы с Вами вскользь познакомимся с BORG.

Как начать с ним работать я не буду писать, про это и без меня неплохо написано, лучше опишу один из реальный кейсов на примере бэкапа небольшой Zabbix системы из прошлого поста.

Задача: бэкапить основной сервер и проксик, делать это каждый день, хранить 3 бэкапа, и иметь не убитую ссаным тапком базу.

BORG в этом плане несколько брутален, и ассимилирует MySQL базы на лету, в результате чего, внутри архива она может оказаться убитой. diablo 

От этого есть таблэтка, а именно: исключение папки БД из бэкапа, бекап ее сторонней утилитой, скажем innobackupex от Percona и отправку в базу бэкапа уже этого готового дапма. Ну и за одно, тут-же очищаем все что старше 3-х архивов. Чтобы не размусоливать, то в кратце, это выглядит так:

# cat /etc/cron.daily/borg_backup

#!/bin/sh

mkdir -p /mnt/db_bkp
innobackupex --compress /mnt/db_bkp

borg create -v --stats                   \
    zabbix@backup.server.my.company.com:DailyBackup::'{now:%Y-%m-%d_%H:%M}'  \
    /                                    \
    --exclude /dev                       \
    --exclude /proc                      \
    --exclude /sys                       \
    --exclude /var/run                   \
    --exclude /run                       \
    --exclude /lost+found                \
    --exclude /var/lib/lxcfs             \
    --exclude /var/lib/mysql

rm    -R /mnt/db_bkp

borg prune --keep-last 3 zabbix@backup.server.my.company.com:DailyBackup

На этом хосте база еще не достаточно разрослась, и пока вся система с базой там занимает ~8.7Гб. Но благодаря сжатию и дедупликации, архив BORG’а за 3 дня бэкапов весит всего 5.12Гб. cool

Поскольку мы создаем временную папку с архивом БД, то в процессе создания бэкапа нам понадобится место на диске, около примерно 50% от размера БД, а без указания ключа –compress, все 100%. Об этом важно помнить rtfm

На сервере проксика база не критична, т.к. это SQLite и даже если ее удалить, то проксик заббикса сам ее пересоздаст, по этому там все еще проще:

# cat /etc/cron.daily/borg_backup

#!/bin/sh

borg create -v --stats                   \
    proxy@backup.server.my.company.com:DailyBackup::'{now:%Y-%m-%d_%H:%M}'  \
    /                                    \
    --exclude /dev                       \
    --exclude /proc                      \
    --exclude /sys                       \
    --exclude /var/run                   \
    --exclude /run                       \
    --exclude /lost+found                \
    --exclude /var/lib/lxcfs             

borg prune --keep-last 4 proxy@backup.server.my.company.com:DailyBackup

И даже несмотря на хранение 4-х последних дампов, весь бекап после дедуплекации и сжатия целиком занимает 1.06Гб.

Что мне понравилось в BORG:

  • Дедупликация которая реально работает.
  • Простота.
  • Сжатие на лету. (алгоритм и степень компрессии можно задавать)
  • Бекапит сразу на внешний сервер, не создавая на исходном сервере временных файлов. (за исключением нашего костыля для сохранения целостности БД)
  • Не требует порта. (работает через SSH)
  • Есть в репозиториях всех адекватных дистрибутивов.

И главное его достоинство: Это единственная бэкапилка на планете, которая принуждает сервер служить Боргам прямо в файле SSH ключей! crazy

UPD: Тяжелые проекты которые плохо поддающиеся сжатию тоже жует нормально:

Добавить комментарий