2007/02/02

Bacula - система резервного копирования и восстановления

Перед началом установки сервисов необходимо ознакомиться со структурой и функционированием составных частей системы Bacula. В этом может помочь небольшая статья [1] и исчерпывающая документация (более 700 стр.), доступная на официальном сайте. Установка сервисов - это всего лишь начало, впереди стоят более важные задачи по грамотной конфигурации сервисов и тестированию процессов резервирования и восстановления.

В приведенном описании в качестве Director и Storage сервисов используется FreeBSD 5.4, в качестве клиента (File Daemon) опробованы следующие системы: Debian 3.1 (Bacula 1.36.2), 4.0 (Bacula 1.38.11), FreeBSD 5.4 (Bacula 2.0.1), Slackware 10.1 (Bacula 2.0.2). В качестве рабочей консоли использовался Windows XP SP2 (Bacula 2.0.1).

Установка Director и Storage сервисов

1. Установка производится из портов

# cd /usr/ports/sysutils/bacula-server
# make
[X] MYSQL Use MySQL database instead of SqLite
[X] NLS Native Language Support via gettext utilities
[X] OPENSSL Enable OpenSSL for encrypted communication
...
# make install

2. Для работы Bacula Director необходима база данных для накопления и оперирования всевозможными данными о собранных резервных копиях. Такая база называется Каталог (Catalog). Таких каталогов может быть несколько, в зависимости от потребностей. Перед запуском, необходимо подготовить хотя бы один Каталог:

mysql -u root -ppassword
CREATE DATABASE `bacula_db` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
GRANT USAGE ON *.* TO 'baculauser'@'localhost' IDENTIFIED BY 'baculauser_password';
GRANT ALL PRIVILEGES ON `bacula_db`.* TO 'baculauser'@'localhost';

Для заполнения подготовленной базы необходимыми таблицами есть скрипт /usr/local/share/bacula/make_mysql_tables. Единственное, в нем по умолчанию используется база данных с именем bacula. В данном примере используется имя bacula_db, поэтому перед запуском скрипт необходимо внести соответствующую поправку.

# /usr/local/share/bacula/make_mysql_tables -u baculauser -pbaculauser_password
Creation of Bacula MySQL tables succeeded.

Перед запуском сервисов необходимо создать конфигурационные файлы на основе доступных шаблонов и сконфигурировать их в соответствии с желаемой конфигурацией.

# cd /usr/local/etc
# cp bacula-dir.conf.sample bacula-dir.conf
# cp bacula-sd.conf.sample bacula-sd.conf

Для автоматического запуска Director и Storage сервисов при загрузке сервера в /etc/rc.conf добавить строчки

bacula_dir_enable="YES"
bacula_sd_enable="YES"

Документацию и клиент-сервис (file daemon) можно установить отдельно

# cd /usr/ports/sysutils/bacula-docs
# make && make install
# cd /usr/ports/sysutils/bacula-client
# make && make install
Запуск сервисов
# /usr/local/etc/rc.d/bacula-dir.sh start
# /usr/local/etc/rc.d/bacula-sd.sh start

Установка клиента (File Daemon)

# apt-get install bacula-fd
Reading package lists... Done
Building dependency tree... Done
The following extra packages will be installed:
bacula-common
Suggested packages:
bacula-doc bacula-traymonitor
The following NEW packages will be installed
bacula-common bacula-fd
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 528kB of archives.
After unpacking 1167kB of additional disk space will be used.
Do you want to continue [Y/n]? y
Get: 1 http://ftp.at.debian.org etch/main bacula-common 1.38.11-7 [348kB]
Get: 2 http://ftp.at.debian.org etch/main bacula-fd 1.38.11-7 [180kB]
Fetched 528kB in 2s (264kB/s)
Selecting previously deselected package bacula-common.
(Reading database ... 44221 files and directories currently installed.)
Unpacking bacula-common (from .../bacula-common_1.38.11-7_all.deb) ...
Adding user 'bacula'... Ok.
Selecting previously deselected package bacula-fd.
Unpacking bacula-fd (from .../bacula-fd_1.38.11-7_i386.deb) ...
Setting up bacula-common (1.38.11-7) ...

Setting up bacula-fd (1.38.11-7) ...
Starting Bacula File daemon: bacula-fd.

В конфигурационном файле /etc/bacula/hostname-fd.conf поправить описание Director (имя, адрес, пароль), закомментировать второй Director (с опцией Monitor), в описании Messages поправить имя используемого director'а. Перезапустить fd-сервис с новыми параметрами:

# /etc/init.d/bacula-fd restart
Restarting Bacula File daemon: bacula-fd.

Установка клиента из исходников (sources)

# tar zxf bacula-2.0.x.tar.gz
# cd bacula-2.0.x
./configure --with-mysql --with-openssl --enable-client-only --localstatedir=/var --sysconfdir=/etc \
--with-job-email=roma@mycompany.com --with-dump-email=roma@mycompany.com
# make
# make install

В конфигурационном файле /etc/bacula/bacula-fd.conf поправить описание Director (имя, адрес, пароль), закомментировать второй Director (с опцией Monitor), в описании Messages поправить имя используемого director'а. Скрипт управления bacula-сервисами - /etc/bacula/bacula, его необходимо переложить, в соответствии с Вашей системой, в папку с другими скриптами и проделать необходимые манипуляции для автоматического запуска fd-сервиса в момент загрузки системы. Запустить fd-сервис с новыми параметрами:

# /etc/bacula/bacula start
Starting the Bacula File daemon

Ссылки:

  1. Bacula: Cross-Platform Client-Server Backups
  2. Bacula, the Network Backup Tool for Linux, Unix, Mac and Windows
  3. Перевод документации от Bacula v.1.38 на русский язык (частично)

5 comments:

Anonymous said...

установить то каждый сможет,
лучше бы детальное описание конфигов дал..

Roman Sozinov said...

to anonymous:
Описание конфигов прекрасно описывает статья [1], я же просто оставил для себя пометки на случай повторной установки.
p.s.
Bacula не из тех продуктов, который получится установить "одним кликом".

Mitya said...

Ставил Bacula на Red Hat AS 5.0.
Геморное это занятие, учитывая то что небыло возможности вытягивать всё из официального дистра и приходилось все зависимости с редхатнетворка по пакетно вытаскивать. А т.к. я компилил с --enable-bat то пришлось ветку qt4 вытягивать полностью и ставить. Кстати по --with-mysql если стоит в не стандартном месте то путь надо. Ещё иногда при установке Бакулы она не заводится с первого раза. В постгре скрипт создающий базу делает офнером этой базы root-а а не пользователя bacula, и хотя я выполнял скрипт ./grant_postrgre_priveleges пользователь bacula всёравно не становился владельцем базы, что приводило к автостопу директорского демона при старте. Поэтому ручками приходилось лезть в базу и менять владельца.

Roman Sozinov said...

to mitya:
Использую RHEL5, bacula ставил из rpm, доступных на sf.net (http://sourceforge.net/project/showfiles.php?group_id=50727&package_id=76408) - всё работает, как часы.
Раньше там были выложены el5-пакеты, сейчас чего-то не могу найти :/
Если интересно, могу выложить.

Mitya said...

to Roman Sozinov:
У меня немного другая ситуация, во первых у меня нет вообще доступа в репозитории редхата, т.к. система без лицензионной поддержки. Во вторых, увидев кол-во опций при компиляции решил ставить из исходников, +не хотел ставить редхатовский постгре, т.к. база постгре будет использоваться ещё одним приложением, который девелопят люди хотящие восьмёрку :). А я увидев число 7 в rh-postgresql немного смутился и сделал выбор в пользу последнего посттгре 8.3 и установки из исходников.