Установка Bacula + PostgreSQL на Centos 7
Bacula — кроссплатформенное клиент-серверное программное обеспечение, позволяющее управлять резервным копированием, восстановлением, и проверкой данных по сети для компьютеров и операционных систем различных типов.
Добавляем репозиторий Bacula.
Для этого переходим по ссылке, заполняем форму, на почту нам скидывают доступ в репозиторий
Создаем файл с содержимым:
1
2
3
4
5
6
$ 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
1
2
3
4
5
$ sudo setenforce 0
$ sudo nano /etc/selinux/config
...
SELINUX=disabled
...
Открываем порты
1
2
$ sudo firewall-cmd --permanent --zone=public --add-port=9101-9103/tcp
$ sudo firewall-cmd --reload
Установка и настройка PostgreSQL 10
Добавляем репозиторий PostgreSQL 10
1
$ sudo yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Устанавливаем PostgreSQL 10, инициализируем БД сервер
1
2
3
$ sudo yum install postgresql10-server postgresql10-devel
$ sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
Initializing database ... OK
Запускаем сервис и добавляем его в автозагрузку
1
2
$ sudo systemctl start postgresql-10
$ sudo systemctl enable postgresql-10
Создаем пользователя PostgreSQL bacula
и задаем ему пароль bacula
1
2
3
4
5
6
7
8
$ 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
1
2
$ sudo nano /var/lib/pgsql/10/data/postgresql.conf
listen_addresses = 'localhost'
Настраиваем подключения к базе
1
2
3
4
5
6
7
$ 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
1
$ sudo systemctl restart postgresql-10
Установка Bacula 9.4.4
Устанавливаем Bacula
1
$ sudo yum install bacula-postgresql
Выполняем скрипты, для корректной работы Bacula с PostgreSQL
1
2
3
4
$ cd /opt/bacula/scripts
$ sudo -u bacula ./create_postgresql_database
$ sudo -u bacula ./make_postgresql_tables
$ sudo -u bacula ./grant_postgresql_privileges
Делаем сим линки для удобства управления, запускаем службу и смотрим статус
1
2
3
$ sudo ln -s /opt/bacula/bin/* /usr/bin
$ sudo bacula start
$ sudo bacula status
Создаем директории для бэкапов / ресторов (к ним можно примонтировать NFS-хранилище)
1
2
3
$ sudo mkdir -p /bacula/{backup,restore}
$ sudo chown -R apache:bacula /bacula
$ sudo chmod -R 777 /bacula
Создаем директории для логов
1
2
$ sudo mkdir /opt/bacula/log/
$ sudo chown -R bacula:bacula /opt/bacula/log/
Теперь надо отредактировать конфиги Bacula, прописать наш пароль
1
$ sudo nano /opt/bacula/etc/bacula-dir.conf
Настройка ресурса Director
Найдите ресурс Director и настройте его для прослушивания ip-адреса. Для этого добавьте в раздел строку DirAddress
.
1
2
3
4
5
Director {
...
Password = "bacula"
DirAddress = 192.168.1.25
}
Настройка локальных задач
Задачи Bacula (job) выполняют резервное копирование и восстановление данных. Ресурсы задания – это подробные данные о том или ином задании: имя клиента, файлы для бэкапа или восстановления (FileSet) и многое другое.
Найдите ресурс Job
с именем BackupClient1
. Замените значение в строке Name
именем BackupLocalFiles
.
1
2
3
4
Job {
Name = "BackupLocalFiles"
JobDefs = "DefaultJob"
}
Затем найдите ресурс Job
с именем RestoreFiles
. В строке Name укажите имя RestoreLocalFiles
, а в строке Where
– каталог /bacula/restore
.
1
2
3
4
5
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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 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) нет коннекта к базе
1
2
3
4
5
# Generic catalog service
Catalog {
Name = MyCatalog
dbname = "bacula"; DB Address = "localhost"; dbuser = "bacula"; dbpassword = "bacula"
}
Настройка пула
Ресурс Pool определяет набор хранилищ, используемых Bacula для записи резервных копий. В данном случае в качестве томов хранения используются файлы. Обновите метки, чтобы локальные резервные копии были правильно помечены.
1
2
3
4
5
# File Pool definition
Pool {
...
Label Format = "Local-" # Auto label
}
Сохраните и закройте файл. Настройка компонента Bacula Director завершена.
Проверка настроек
1
$ sudo bacula-dir -tc /opt/bacula/etc/bacula-dir.conf
Настройка Storage Daemon
Надо настроить Storage Daemon, чтобы система Bacula понимала, где хранить файлы.
Откройте конфигурационный файл SD.
1
2
3
4
5
$ sudo nano /opt/bacula/etc/bacula-sd.conf
Storage { # definition of myself
...
SDAddress = 192.168.1.25
}
Настройка устройства хранения
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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
...
}
Проверка настроек
1
$ sudo bacula-sd -tc /opt/bacula/etc/bacula-sd.conf
Во всех файлах надо поменять пароль на наш bacula