Составив план восстановления компонентов установки, необходимо настроить систему резервного копирования: без неё невозможно восстановить данные некоторых компонентов.
Данное руководство поможет настроить систему резервного копирования Bacula.
Основное преимущество полноценных систем типа Bacula состоит в том, что они предоставляют полный контроль над копируемыми данными, а также позволяют планировать резервное копирование и восстановление.
В данном случае Bacula будет ежедневно создавать бэкап серверов db1, app1, app2 и lb1. По сути, это руководство покажет, как использовать Bacula на стеке LAMP. Также вы узнаете, как использовать Percona XtraBackup для создания горячих резервных копий MySQL. Скопированные данные будут перемещаться на удаленный сервер с помощью rsync. Таким образом, у вас появится два новых сервера:
backups и remotebackups.
1: Установка Bacula
Установите Bacula на сервер backups с помощью этих руководств:
Для всех процессов сервера backups будет использоваться пул RemoteFile.
2: Установка клиента Bacula
Установите клиент Bacula на все серверы, которые нуждаются в резервном копировании (в данном случае это db1, app1, app2 и lb1). Все необходимые инструкции вы найдете в руководстве Резервное копирование сервера Ubuntu 14.04 с помощью Bacula.
Укажите FileDaemon Name (обычно это имя хоста с суффиксом –fd) и Director Password (этот пароль сервер Bacula использует для подключения к клиентам) в файле bacula-fd.conf на каждом сервере.
3: Добавление клиентов Bacula на сервер
Перейдите на сервер backups и добавьте клиентов в /etc/bacula/conf.d/clients.conf.
Откройте файл:
sudo vi /etc/bacula/conf.d/clients.conf
Ниже вы найдете пример определения ресурсов клиента, сервера db1. Обратите внимание: значение Name должно совпадать со значением FileDaemon, а значение Password – с паролем Director Password (эти значения можно найти в файле /etc/bacula/bacula-fd.conf на каждом клиентском сервере).
Client {
Name = db1-fd
Address = db1.nyc3.example.com
FDPort = 9102
Catalog = MyCatalog
Password = "PDL47XPnjI0QzRpZVJKCDJ_xqlMOp4k46" # password for Remote FileDaemon
File Retention = 30 days # 30 days
Job Retention = 6 months # six months
AutoPrune = yes # Prune expired Jobs/Files
}
По этому примеру создайте ресурс для каждого клиента Bacula. В данном случае нужно добавить клиентские записи для db1-fd, app1-fd, app2-fd и lb1-fd.
Сохраните и закройте файл.
Читайте также: Резервное копирование сервера Ubuntu 14.04 с помощью Bacula
4: Горячее резервное копирование базы данных
Чтобы получить согласованные, не конфликтующие резервные копии базы данных, необходимо соблюдать особую осторожность. Простой и эффективный способ создания горячих резервных копий MySQL предлагает Percona XtraBackup.
Установка Percona XtraBackup
Перейдите на сервер базы данных, db1, и установите и настройте Percona XtraBackup, следуя руководству Горячее резервное копирование данных MySQL при помощи Percona XtraBackup в Ubuntu 14.04.
Создание сценария Percona XtraBackup
Приложение Percona XtraBackup готово к созданию резервных копий MySQL, которые будут обслуживаться Bacula. Но горячее резервное копирование необходимо спланировать.
Для этого можно создать сценарий bash и и добавить запись в cronjob.
Создайте сценарий run_extra_backup.sh in /usr/local/bin:
sudo vi /usr/local/bin/run_xtrabackup.sh
Добавьте в него следующий код (вместо условных данных укажите свои учетные данные, полученные во время установки XtraBackup).
#!/bin/bash
# pre xtrabackup
chown -R mysql: /var/lib/mysql
find /var/lib/mysql -type d -exec chmod 770 "{}" \;
# delete existing full backup
rm -r /data/backups/full
# xtrabackup create backup
innobackupex --user=bkpuser --password=bkppassword --no-timestamp /data/backups/full
# xtrabackup prepare backup
innobackupex --apply-log /data/backups/full
Сохраните и закройте файл.
Запустите сценарий с правами суперпользователя. Он удалит все текущие резервные копии XtraBackup из /data/backups/full и создаст новый полный бэкап.
Читайте также: Горячее резервное копирование данных MySQL при помощи Percona XtraBackup в Ubuntu 14.04
Сделайте сценарий исполняемым:
sudo chmod +x /usr/local/bin/run_xtrabackup.sh
Чтобы создать цельную резервную копию базы данных, сценарий XtraBackup должен выполниться до того, как Bacula начнет создавать резервную копию сервера базы данных. Для этого можно использовать cron.
Читайте также: Планирование рутинных задач Linux при помощи Cron и Anacron
Создайте конфигурационный файл cron в /etc/cron.d.
sudo vi /etc/cron.d/xtrabackup
Добавьте в него строку:
30 22 * * * root /usr/local/bin/run_xtrabackup.sh
Сценарий будет запускаться с помощью пользователя root каждый день в 22:30. Bacula начинает резервное копирование ежедневно в 23:05. На выполнение сценария XtraBackup есть 35 минут.
5: Настройка Bacula FileSets
Bacula создаст резервные копии файлов, указанных в FileSets. Создайте FileSets для бэкапа файлов, которые необходимы для восстановления.
На сервере backups создайте файл filesets.conf.
sudo vi /etc/bacula/conf.d/filesets.conf
FileSet для базы данных
Для восстановления сервера БД необходимо копировать:
- Базу данных MySQL (копия поддерживается сценарием XtraBackupв /data/backups/full).
- Конфигурационный файл MySQL, /etc/mysql.
Также нужно указать сценарий XtraBackup (/usr/local/bin/run_xtrabackup.sh) и файл cron.
Добавьте в FileSet следующие строки:
FileSet {
Name = "MySQL Database"
Include {
Options {
signature = MD5
compression = GZIP
}
File = /data/backups
File = /etc/mysql/my.cnf
File = /usr/local/bin/run_xtrabackup.sh
File = /etc/cron.d/xtrabackup
}
Exclude {
File = /data/backups/exclude
}
}
FileSet для серверов приложений
Для восстановления сервера приложений нужно резервная копия корневого каталога веб-сервера, /var/www/html
В FileSet для Apache DocumentRoot добавьте такие строки:
FileSet {
Name = "Apache DocumentRoot"
Include {
Options {
signature = MD5
compression = GZIP
}
File = /var/www/html
}
Exclude {
File = /var/www/html/exclude
}
}
Также сюда можно добавить файл ports для Apache.
FileSet для балансировщика нагрузки
Для восстановления балансировщика нагрузки понадобятся резервные копии следующих файлов:
- Файлы сертификата SSL (/root/certs).
- Конфигурационный файл HAProxy (/etc/haproxy).
Добавьте в FileSet для HAProxy такие параметры:
FileSet {
Name = "SSL Certs and HAProxy Config"
Include {
Options {
signature = MD5
compression = GZIP
}
File = /root/certs
File = /etc/haproxy
}
Exclude {
File = /root/exclude
}
}
Сохраните и закройте файл.
h2>6: Создание задач Bacula
Создайте задачи (Jobs) Bacula, чтобы своевременно копировать данные.
Создайте файл jobs.conf в /etc/bacula/conf.d:
sudo vi /etc/bacula/conf.d/jobs.conf
Задачи для сервера БД
Для бэкапа сервера БД создайте задачу Backup db1. Укажите клиента (db1-fd) и FileSet (MySQL Database).
Job {
Name = "Backup db1"
JobDefs = "DefaultJob"
Client = db1-fd
Pool = RemoteFile
FileSet="MySQL Database"
}
Задачи для серверов приложений
Для серверов приложений нужно создать задачи Backup app1 и Backup app2. Укажите правильное значение в Client (app1-fd и app2-fd) и FileSet (Apache DocumentRoot).
Задача для сервера app1:
Job {
Name = "Backup app1"
JobDefs = "DefaultJob"
Client = app1-fd
Pool = RemoteFile
FileSet="Apache DocumentRoot"
}
Задача для сервера app2:
Job {
Name = "Backup app2"
JobDefs = "DefaultJob"
Client = app2-fd
Pool = RemoteFile
FileSet="Apache DocumentRoot"
}
Задача для балансировщика
Создайте задачу Backup lb1 для балансировщика нагрузки, указав соответствующие значения в Client (lb1-fd) и FileSet (SSL Certs and HAProxy Config).
Job {
Name = "Backup lb1"
JobDefs = "DefaultJob"
Client = lb1-fd
Pool = RemoteFile
FileSet="SSL Certs and HAProxy Config"
}
Сохраните и закройте файл.
7: Перезапуск Bacula Director
На сервере backups перезапустите Bacula Director:
sudo service bacula-director restart
Теперь нужно протестировать клиентские подключения и задачи. Об этом можно прочитать в этом руководстве.
Для поддержки резервных копий MySQL нужно настроить ротацию копий.
8: Планирование бэкапа
План бэкапа Bacula можно отредактировать на в настройках Bacula Director (/etc/bacula/bacula-dir.conf). Все созданные ранее задачи используют DefaultJob, который привязан к плану WeeklyCycle. Он:
- создает полный бэкап в первое воскресенье месяца в 23:05.
- поддерживает дифференциальное копирование в другие воскресенья месяца в 23:05.
- Поддерживает инкрементное копирование в другие дни недели в 23:05.
Убедиться в этом можно в настройках Bacula Director.
Director Status — Scheduled Jobs
Scheduled Jobs:
Level Type Pri Scheduled Name Volume
===================================================================================
Incremental Backup 10 20-May-15 23:05 BackupLocalFiles MyVolume
Incremental Backup 10 20-May-15 23:05 Backup lb1 Remote-0002
Incremental Backup 10 20-May-15 23:05 Backup app2 Remote-0002
Incremental Backup 10 20-May-15 23:05 Backup app1 Remote-0002
Incremental Backup 10 20-May-15 23:05 Backup db1 Remote-0002
Вы можете добавить или откорректировать план бэкапа. Было бы целесообразно изменить расписание бэкапа серверов приложений, чтобы они выполняли сценарий Percona XtraBackup одновременно (в 22:30) . Это предотвратит несоответствие данных.
9: Удаленное резервное копирование
Теперь можно настроить удаленный сервер remotebackups, на котором будут храниться копии бэкапов Bacula. Этот удаленный сервер должен находиться в другом регионе: так вы сможете получить доступ к данным даже тогда, когда в центре обработки данных произошел сбой.
Подключитесь к серверу remotebackups и создайте пользователя.
Читайте также: Начальная настройка сервера Ubuntu 14.04
Подключитесь к серверу backups как пользователь root и создайте пару ключей SSH. Установите открытый ключ на сервере remotebackups.
Читайте также: Как настроить SSH-ключи
На сервере backups запустите команду rsync, которая скопирует резервные данные Bacula (/bacula/backup) на сервер remotebackups.
Читайте также: Использование Rsync для синхронизации локального и удаленного каталогов на VPS
rsync -az /bacula/backup remoteuser@remotebackups_public_hostname_or_IP:/path/to/remote/backup
Поместите команду в сценарий /usr/local/bin/rsync_backups.sh.
Настройте cron для запуска сценария rsync_backups.sh с помощью пользователя root после копирования Bacula.
10: Дополнительные рекомендации
Данное руководство не охватывает распределение дискового пространства.
Проверьте, сколько дискового пространства используют резервные копии, и пересмотрите расписание резервного копирования на основе ваших потребностей и ресурсов.
В дальнейшем вы сможете настроить резервное копирование новых серверов – сервера мониторинга и сервера логирования.
Теперь резервные копии данных будут создаваться на ежедневной основе. Кроме того, копии бэкапа будут храниться удаленно, что обеспечит доступ к данным даже в случае сбоя в ЦОД. Обязательно убедитесь, что можете восстановить файлы из резервных копий.
В следующем мануале вы узнаете, как настроить мониторинг приложения.