Установка Bacula + PostgreSQL на Centos 7

Bacula + PostgreSQL

Bacula — кроссплатформенное клиент-серверное программное обеспечение, позволяющее управлять резервным копированием, восстановлением, и проверкой данных по сети для компьютеров и операционных систем различных типов.

Добавляем репозиторий Bacula.
Для этого переходим по ссылке, заполняем фрому, на почту нам скидывают доступ в репозиторий

Создаем файл с содержимым:

$ sudo cat > /etc/yum.repos.d/bacula.repo
[bacula]
name=bacula repo
baseurl=https://bacula.org/packages/%код из письма%/rpms/9.4.4/el7/$basearch/
gpgcheck=0
enabled=1

Далее нам надо отключить SELinux, т.к. судя по ответу разработчиков в релизной на сегодняшней день версии 9.4.4 они еще не допилили связь Bacula и SELinux

$ sudo setenforce 0
$ sudo nano /etc/selinux/config
...
SELINUX=disabled
...

Открываем порты

$ sudo firewall-cmd --permanent --zone=public --add-port=9101-9103/tcp
$ sudo firewall-cmd --reload

Установка и настройка PostgreSQL 10

Добавляем репозиторий PostgreSQL 10

$ sudo yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Устанавливаем PostgreSQL 10, инициализируем БД сервер

$ sudo yum install postgresql10-server postgresql10-devel
$ sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
Initializing database ... OK

Запускаем сервис и добавляем его в автозагрузк

$ sudo systemctl start postgresql-10
$ sudo systemctl enable postgresql-10

Создаем пользователя PostgreSQL «bacula» и задаем ему пароль «bacula»

$ sudo su - postgres
-bash-4.2$ createuser bacula
-bash-4.2$ psql
postgres=# ALTER USER bacula PASSWORD 'bacula';
postgres=# ALTER USER bacula LOGIN SUPERUSER CREATEDB CREATEROLE;
ALTER ROLE
postgres=# \q
-bash-4.2$ exit

Настраиваем PostgreSQL
Раскоментируем строку listen_addresses

$ sudo nano /var/lib/pgsql/10/data/postgresql.conf
listen_addresses = 'localhost'

Настраиваем подключения к базе

$ sudo nano /var/lib/pgsql/10/data/pg_hba.conf
# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     peer
local   bacula          bacula                                  md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5

Перезапускаем PostgreSQL

$ sudo systemctl restart postgresql-10

Установка Bacula 9.4.4

Устанавливаем Bacula

$ sudo yum install bacula-postgresql

Выполняем скрипты, для корректной работы Bacula с PostgreSQL

$ cd /opt/bacula/scripts
$ sudo -u bacula ./create_postgresql_database
$ sudo -u bacula ./make_postgresql_tables
$ sudo -u bacula ./grant_postgresql_privileges

Делаем симлинки для удобства управления, запускаем службу и смотрим статус

$ sudo ln -s /opt/bacula/bin/* /usr/bin
$ sudo bacula start
$ sudo bacula status

Создаем директории для бэкапов / ресторов (к ним можно примонтировать NFS-хранилище)

$ sudo mkdir -p /bacula/{backup,restore}
$ sudo chown -R apache:bacula /bacula
$ sudo chmod -R 777 /bacula

Создаем директории для логов

$ sudo mkdir /opt/bacula/log/
$ sudo chown -R bacula:bacula /opt/bacula/log/

Теперь надо отредактировать конфиги Bacula, прописать наш пароль

$ sudo nano /opt/bacula/etc/bacula-dir.conf

Настройка ресурса Director

Найдите ресурс Director и настройте его для прослушивания ip-адреса. Для этого добавьте в раздел строку DirAddress.

Director {
...
  Password = "bacula"
  DirAddress = 192.168.1.25
}

Настройка локальных задач

Задачи Bacula (job) выполняют резервное копирование и восстановление данных. Ресурсы задания – это подробные данные о том или ином задании: имя клиента, файлы для бэкапа или восстановления (FileSet) и многое другое.
Найдите ресурс Job с именем BackupClient1. Замените значение в строке Name именем BackupLocalFiles.

Job {
Name = "BackupLocalFiles"
JobDefs = "DefaultJob"
}

Затем найдите ресурс Job с именем RestoreFiles. В строке Name укажите имя RestoreLocalFiles, а в строке Where – каталог /bacula/restore.

Job {
  Name = "RestoreLocalFiles"
...
  Where = /bacula/restore
}

Файлы для бэкапа

FileSet определяет список файлов и каталогов, которые нужно включить или исключить из резервного копирования.
Найдите ресурс FileSet по имени Full Set (под комментарием # List of files to be backed up). Сюда нужно внести следующие изменения:

  • Добавить сжатие gzip.
  • В разделе Include заменить /usr/sbin в строке File на /.
  • В конце раздела Exclude добавить строку File = /bacula.
# List of files to be backed up
FileSet {
  Name = "Full Set"
  Include {
    Options {
      signature = MD5
      compression = GZIP
    }
...
  Exclude {
  ...
    File = /bacula
  }
}

Настройка каталога

Ресурс Catalog определяет БД, к которой будет подключаться Director.
Найдите ресурс Catalog по имени MyCatalog (под комментарием Generic catalog service). Обновите значение dbpassword и укажите пароль пользователя MySQL/PostgeSQL bacula.
Еще надо добавить адрес, иначе при проверке (sudo bacula-dir -tc /opt/bacula/etc/bacula-dir.conf) нет конекта к базе

# Generic catalog service
Catalog {
  Name = MyCatalog
  dbname = "bacula"; DB Address = "localhost"; dbuser = "bacula"; dbpassword = "bacula"
}

Настройка пула

Ресурс Pool определяет набор хранилищ, используемых Bacula для записи резервных копий. В данном случае в качестве томов хранения используются файлы. Обновите метки, чтобы локальные резервные копии были правильно помечены.

# File Pool definition
Pool {
  ...
  Label Format = "Local-"               # Auto label
}

Сохраните и закройте файл. Настройка компонента Bacula Director завершена.

Проверка настроек

$ sudo bacula-dir -tc /opt/bacula/etc/bacula-dir.conf

Настройка Storage Daemon

Надо настроить Storage Daemon, чтобы система Bacula понимала, где хранить файлы.

Откройте конфигурационный файл SD.

$ sudo nano /opt/bacula/etc/bacula-sd.conf
Storage {                             # definition of myself
  ...
  SDAddress = 192.168.1.25
}

Настройка устройства хранения

Autochanger {
  Name = FileChgr1
  Device = FileChgr1-Dev1, FileChgr1-Dev2
  Changer Command = ""
  Changer Device = /dev/null
}

Device {
  Name = FileChgr1-Dev1
  Media Type = File1
  Archive Device = /bacula/backup
  ...
}

Device {
  Name = FileChgr1-Dev2
  Media Type = File1
  Archive Device = /bacula/backup
  ...
}

Проверка настроек

$ sudo bacula-sd -tc /opt/bacula/etc/bacula-sd.conf

Во всех файлах надо поменять пароль на наш «bacula«

Максим Макаров

У блога появился хостинг, его любезно предоставила компания Облакотека. Облакотека - облачные сервисы для создания и управления виртуальной ИТ-инфраструктурой.
Если вам понравился мой блог и вы хотели бы видеть на нем еще больше полезных статей, большая просьба поддержать этот ресурс.

Оцените автора
IT Draft
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.