Zyo
@Zyo
Zyo

Как научить bareos/bacula удалять использованные тома и автоматически создавать новые?

Подскажите, пожалуйста, кто настраивал Bacula или ее форка Bareos для бэкапа?
В чем суть проблемы: на разделе места немного, данных для бэкапа - впритык под него. Делаю ежедневный полный бэкап баз мускуля, раз в неделю полный бэкап файлов и ежедневно инкрементно файлов. Хочется, чтобы Bareos корректно или: а) удалял старые вольюмы и создавал новые по истечению заданного срока; б) корректно использовал уже заполненные и просроченные. Сейчас у меня дирректор периодиски либо висит в ожидании свободного места, либо предлагает создать новые тома.

Вот для примера конфиг тома:
MySQL
Pool {
  Name = Mysql
  Pool Type = Backup
  Use Volume Once = no
  Recycle = yes
  AutoPrune = yes
  Recycle Oldest Volume = no      # Это пробовалось для удаления просроченых томов. Можно и закаментить.
  ActionOnPurge = Truncate
  Volume Retention = 3 days         # How long should the Full Backups be kept?
  Maximum Volume Bytes = 700M          # Limit Volume size to something reasonab
  Maximum Volumes = 20              # Limit number of Volumes in Pool
  Label Format = "Mysql-"              # Volumes will be labeled "Full-<volume-i
}

Т.е. я хочу хранить 3 последних бэкапа. Все тома, что просрочены >3 дней - удалять и заменять новыми или просто использовать по новой.
  • Вопрос задан
  • 3661 просмотр
Решения вопроса 1
Zyo
@Zyo Автор вопроса
Zyo
Спасибо за ответ. Я видел этот скрипт, он мне помог на первых порах борьбы за место.
С местом у меня все довольно предсказуемо, главное, чтобы тома использовались повторно. Вот сейчас все работает как я хочу с таким конфигом.
Pool {
  Name = Mysql
  Pool Type = Backup
  Recycle = yes                       # Bareos can automatically recycle Volumes
  AutoPrune = yes                     # Prune expired volumes
  Volume Retention = 2 days         # How long should the Full Backups be kept?
  Maximum Volume Bytes = 700M          # Limit Volume size to something reasonab
  Maximum Volumes = 20              # Limit number of Volumes in Pool
  Label Format = "Mysql-"              # Volumes will be labeled "Full-<volume-i
}

В теории, если мне не изменяет память, то почти точно такие же параметры используются по умолчанию, но почему-то у меня со старта не завелось.
Еще раз спасибо за ответ. Думаю вопрос закрыт.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@younghacker
У каждого пула и задания есть параметр Volume Retention который задаёт время по истечении которого файлы попавшие в этот том бакула считает удалёнными. Если установлена опция AutoPrune = yes то bacula удалит записи из каталога (SQL). А если установлена опция ActionOnPurge = Truncate то урежет размер файла до нуля.

Нужно для себя уяснить одну вещь: bacula/bareos заточена под ленты и воспринимает файлы как ленты. И ведёт себя соответственно, использует их повторно если не установлен параметр Maximum Volume Jobs = 1. Проблема заключается в том что у меня объём бэкапов растёт и сложно понять сколько нужно хранить. И часто случалось что какой-то том раздувался и заполнял диск. Мы ведь в большинстве своём используем диски, а не ленты. Удалять такие тома дело сложное особенно когда задание "размазано" по нескольким файлам-лентам.
Поэтому для себя я решил так что задания будут иметь определённый формат напрямую связанный с именем сервера, типом бэкапа и датой. В этом случае очередь на удаление очевидна. Кроме этого не возникает больших проблем при восстановлении из одного лишь файла бэкапа (без SQL каталога, несколько раз приходилось это делать) так как всё задание целиком в одном файле.

За основу можете взять скрипт отсюда исправить его под свою задачу и добавить в cron. Помните что этот скрипт для ручного запуска. Он интерактивный и удаляет файлы по датам и невзирая на то сколько файлов осталось. Другими словами если бэкап не будет создаваться этот скрипт, выполняясь, будет удалять файлы. И в конце концов удалит все бэкапы. Кстати, скрипт вместо крона можно вставить в обработчик например каталога. Поставить бэкап SQL каталога в конец очереди и в него добавить задание "RunScript after/Run After Job"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
24 апр. 2024, в 20:57
3000 руб./за проект
24 апр. 2024, в 20:35
5000 руб./за проект