Bacula

Материал из RSU WiKi
Перейти к: навигация, поиск

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

В настоящее время поддерживаются клиентские части для удалённого резервного копирования для GNU/Linux (включая zSeries), NetBSD, FreeBSD, OpenBSD, Solaris, HP-UX, Tru64, IRIX, Microsoft Windows, Mac OS X.

Bacula также может выполняться полностью на единственном компьютере или, распределённо, на нескольких, и может записывать резервные копии на различные типы носителей, включая ленты, ленточные библиотеки (autochangers/libraries) и диски [1].

Содержание

Установка bacula на клиент или сервер

Для SuSE подключите репозиторий для вашего дистрибутива с http://software.opensuse.org/package/bacula, например:

zypper ar 'http://download.opensuse.org/repositories/Archiving:/Backup:/Factory/SLE_11_SP3/Archiving:Backup:Factory.repo'
zypper refresh

Либо скачайту последнюю src.rpm с сайта http://www.bacula.org/en/ , сохрание в /usr/local/src и пересоберите командой:

rpmbuild --rebuild --define "build_su110 1" --define "build_mysql=1" bacula.src.rpm

Если все прошло успешно, в /usr/src/packages/RPMS/ будут созданы шесть пакетов.

Для сервера установите:

  • bacula-dir
  • bacula-sd

Для клиента установите:

  • bacula-fd

Воспользуйтесь следующими командами для установки из репозитория:

zypper in bacula-dir bacula-sd

для установки .rpm пакета:

rpm -i packet_name

См. также http://wiki.bacula.org/doku.php?id=howto_install_bacula_5.0.0_from_src.rpm_on_rhel_5_or_centos_5

Пакет состоит из трех частей:

  • bacula-dir (Bacula Director, конф. файл bacula-dir) - основной процесс, отвечающий за функционирование и координацию системы
  • bacula-sd (Storage Director, конф. файл bacula-sd) - процесс, запускаемый на сервере, на котором будет осуществляться хранение данных (в нашем случае это один и тот же хост)
  • bacula-fd (File Director, конф. файл bacula-fd) - клиент резервного копирования.

Установите и настройте mysql

Установите mysql со всеми зависимостями:

zypper in mysql

Запустите mysql и добавьте в автозагрузку:

rcmysql start
chkconfig mysql on

Установите пароль пользователя root

mysqladmin -u root password root_password

Через phpMyAdmin или запросом на сервере mysql создайте пользователя bacula c полным доступом к базе данных bacula. Запомните пароль пользователя bacula для дальнейшей настройки.

CREATE DATABASE `bacula`;
CREATE USER 'bacula'@'localhost' IDENTIFIED BY 'bacula_password';
GRANT ALL PRIVILEGES ON `bacula` TO 'bacula'@'localhost';

Как настроить сервер резервного копирования bacula-dir?

Конфигурационный файл по умолчанию находятся в /etc/bacula/bacula-dir.conf Все утилиты и скрипты находятся в /usr/lib/bacula/

Настройте bacula-dir на работу с БД

3 Здесь указываем путь и учетные данные для доступа к базе данных:

Catalog {
  Name = MyCatalog
  dbname = "bacula"; dbuser = "bacula"; dbpassword = "mysql_pass"
}

Задайте пароль подключения к bacula-dir

Для подключения к серверу bacula-dir задайте пароль в секции Director:

Director {
 ...
 Password = "password"         # Console password
}

Console {
 Password = "password"
}

Выберите способ доставки сообщений

Оба способа доставки сообщений Standard и Daemon должны быть включены. Выберем версию Daemon в конф. файле bacula-dir.

Director {
 ...
 Messages = Daemon
}

Настройте bacula-dir на работу с bacula-sd

Это делается в секции для связи с сервисом создания и хранения бэкапов bacula-sd. В нашем случае bacula-sd находится на том же серврере. Укажите адрес сервера и пароль для доступа к bacula-sd (должен быть идентичным паролю, указанному в /etc/bacula/bacula-sd.conf).

Storage {
 Address = bacula.example.com
 Password = "password"
}

Запустите bacula-dir

Для инициализации базы данных запустите /usr/lib/bacula/make_mysql_tables

Внесите управляющий сервер bacula-dir и дисковый сервер в автозагрузку

chkconfig bacula-dir on

Запустите управляющий сервер и дисковый сервер

rcbacula-dir start

Как настроить дисковый сервер bacula-sd?

Storage {                                # definition of myself
  Name = File
  SDPort = 9103                          # Storage Director's port      
  WorkingDirectory = "/var/lib/bacula"   # Рабочая папка
  Pid Directory = "/var/run"
  Maximum Concurrent Jobs = 20           # Количество одновременных заданий
}

Укажите учетные данные для подключения к bacula-dir:

Director {
  Name = backup-dir
  Password = "bacula-dir-password"
}

Опишите как и где хранить резервные копии:

Device {
  Name = FileStorage
  Media Type = File
  Archive Device = /backup     # где будут храниться резервные копии, например на рейде
  LabelMedia = yes;            # именовать тома автоматически
  Random Access = Yes;
  AutomaticMount = yes;        # автоматически монтировать тома, в нашем случае - автоматом создает файлы для томов
  RemovableMedia = no;
  AlwaysOpen = no;
}

Как будут доставляться сообщения от bacula-sd:

Messages {
  Name = Daemon
  director = backup-dir = all
}

Как добавить клиент для резервного копирования?

Выберите время проведения резервного копирования

Блоком Schedule описывается расписание для выполнения заданий. Например расписание WeeklyCycle выполняет полный бэкап в первое воскр. месяца в 23.05, а дифференциальный бэкап со второго по пятое воскр. в 23.05:

Schedule {
  Name = "WeeklyCycle"
  Run = Full 1st sun at 23:05
  Run = Differential 2nd-5th sun at 23:05
}

Создайте задания для восстановления и бэкапа клиентов

Cоздайте задание восстановления одно на все клиенты секцией Job:

Job {
  Name = "RestoreFiles"
  Type = Restore
  Client = client1.example.com
  FileSet = client1 
  Storage = File   
  Pool = Default
  Messages = Daemon
  Where = /tmp/bacula-restores
  Write Bootstrap = "/var/lib/bacula/%n.bsr"
}

Создайте для каждого клиента задание для восстановления. Важным пунктом является наличие файла bootstrap для каждого клиента, при его отсутствии восстановление будет невозможным. Восстановление данных запускается из консоли Bacula - bconsole.

Job {
  Name = job1
  Type = Backup            # тип задания
  Level = Full
  Client = client1.example.com # берется из описания клиента (ниже)
  FileSet = fileset1       # набор файлов для копирования (описано ниже)
  Storage = File           # выбираем хранилище (описано ниже)
  Pool = Default
  Messages = Daemon        # указываем, как будут доставляться сообщения службы
  Schedule = "WeeklyCycle" # выбираем расписание из шаблонов
  Write Bootstrap = "/var/lib/bacula/%n.bsr"
  ClientRunBeforeJob = "/path/to/scropt1 parameters" # не обязательно
  ClientRunAfterJob = "/path/to/scropt2 parameters"  # не обязательно
}

Опишите каждый клиент резервного копирования

Укажите dns-имя, адрес, пароль bacula-fd, время хранения метаданных о сохраненных файлах и заданиях клиента резервного копирования в секции Client:

Client {
  Name = client1.example.com
  Address = 192.0.0.10
  FDPort = 9102
  Catalog = MyCatalog                 # по умолчанию
  Password = "bacula-fd-password"     # пароль должен соответствовать записи в bacula-fd клиента
  File Retention = 30 days            # сколько будут храниться метаданные о сохраненных файлах для данного клиента
  Job Retention = 6 months            # сколько будут храниться метаданные о заданиях для данного клиента
  AutoPrune = yes                     # Очищать неиспользуемые файлы/задания
}
 

Опишите для каждого клиента набор файлов для резервного копирования

Шаблоны с указанием целевых директорий и файлов для резервного копирования в windows:

FileSet {
 Name = "client1.example.com" #имя набора папок идентично имени клиента
 Include {
  Options {
   signature = MD5
  }
  File = "c:\\test\\"
 }
}

в linux указываем полное имя директорий и файлов от корня: FileSet {

Name = "server.example.com" #имя набора папок идентично имени клиента
 Include {
  Options {
   compression = GZIP
   signature = MD5
  }
  File = /etc/
  File = /srv/www/
  File = /usr/local/src/
 }
}

Настройте способ записи резервных копий на диск

Для разных групп клиентов и заданий можно выбирать различные пулы для хранения бэкапов. Настройки для пулов в свою очередь могут отличаться по времени хранения томов бэкапов (volumes), по максимальному размеру тома и т.д.

Pool {
 Name = Default
 Pool Type = Backup
#  Recycle = yes                  # не даем bacula-dir перезаписывать Volume
 AutoPrune = yes                  
 Volume Retention = 60 days       
 LabelFormat = "Vol"
 Maximum Volume Bytes = 100G      # размер Volume зависит от общего количества резервируемой информации. Если ее больше 100G, создается новый Volume 
 Maximum Volumes = 34             # общее количество volume не может быть больше 34 из-за не хватки места
}

Опишите шаблон создания нового клиента из графического интерфейса (Опционально)

Необходимо для bat. Здесь могут быть шаблоны для выполнения заданий резервного копирования.

JobDefs {
 Name = "DefaultJob"
 Type = Backup
 Level = Full
 Client = client1.example.com
 FileSet = client1.example.com
 Schedule = "WeeklyCycle"
 Storage = File
 Messages = Standard
 Pool = Default
 Priority = 10
 Write Bootstrap = "/var/lib/bacula/%c.bsr"
}

Резервное копирование MySQL

Для создания резервных копий БД сервера MySQL необходимо проделать следующее. На стороне клиента (сервера баз данных) создаем скрипт:

/usr/local/sbin/mydump2bacula
 #!/bin/bash                                                                                                                                
 DBDIR=/var/lib/bacula/mysql                                                                                                                
 UP="-u $1 --password=$2"                                                                                                                   
 LOGFILE=/var/log/backup.log                                                                                                                
 mkdir $DBDIR                                                                                                                               
 mysqldump $UP --all-databases | bzip2 > $DBDIR/www.sql.bz2

В секции JOBS файла настроек bacula-dir добавляем следующие строки в соответствующее задание:

ClientRunBeforeJob = "/usr/local/sbin/mydump2bacula USERNAME PASSWORD"                                    
ClientRunAfterJob = "/bin/rm -rf /var/lib/bacula/mysql"                      

Пользователю БД для резервного копирования нужны глобальные привилегии SELECT и LOCK.

Резервное копирование Microsoft SQL Server 2005

Microsoft shipped the SQL Server 2005 command line tool “SQLCMD” along with SQL Server. Bacula client should be VSS (Volume Shadow Copy Service) enabled. You will need to arrange a 'Client Run Before Job' script like:

sqlcmd -U <username> -P <password> -Q "BACKUP DATABASE <dbname> TO DISK='C:\temp\<dbname>.bak' WITH INIT"

Как подключиться к bacula-dir через командную строку bconsole?

Настройте bconsole. Указываем адрес сервера bacula-dir и учетные данные для авторизации.

Director {                                                                                                    
  Name = backup-dir                                                                                           
  DIRport = 9101                                                                                              
  address = x.x.x.x                                                                                        
  Password = "bacula-dir-console-password"                                                                                     
}

Как настроить клиент резервного копирования bacula-fd?

Описание настройки клиента резревного копирования.

Учетная запись директора:

Director {
  Name = backup-dir
  Password = "client_pass"
}
Учетная запись консоли: 

Director {
  Name = backup-mon
  Password = "console_pass"
  Monitor = yes
}

Настройки собственно клиента:

FileDaemon {                         
  Name = deimos-fd
  FDport = 9102                  
#  FDAddress =  x.x.x.x   #существенно, если имеется несколько сетевых интерфейсов
  WorkingDirectory = /var/lib/bacula
  Pid Directory = /var/run
  Maximum Concurrent Jobs = 20
}

Способ, которым будут доставляться сообщения:

Messages {
  Name = Daemon
  director = backup-dir = all, !skipped, !restored
}

Примечания

  1. Bacula. Материал из Википедии — свободной энциклопедии

См. также

Ссылки

Личные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты