На фоне всякого рода сбоев и вирусов, многие начинают вспоминать о резервных копиях и все те, кто не поскупился на резервное хранилище достаточных объемов, чувствуют себя спокойно. Ну а кто «скряга» – тому и не возможно объяснить поговорку: «Скупой платит дважды».nnСегодня поговорим о продуктах Atlassian, а конкретнее о Jira и Confluence и ручном бекапеn
Что надо бекапить
Первое что нужно понять – что и зачем бекапить. У приведенных выше продуктов можно делать полный и частичный бэкапы.n
Частичный бекап
- n
- Jiran
- n
- Папку export
- Папку data
n
- Confluencen
- n
- Папку backups
- Папку attachments
n
nЭто позволит сэкономить место и время. Конечно, для восстановления потребуется рабочие Jira и/или Confluence.nnУточнение:n
- указанные папки желательно синхронизировать с удаленных хранилищем, так как файлы в них могут добавляться, удалятся или изменятся.
- Файлы в папках export и/или backups – это резервная копия, которая делается при помощи приложения Jira и Confluence соответственно. В них находятся метаданные и пользовательские данные из БД, в формате ПО Atlassian.
- Файлы в папках data и/или attachments – это прикрепленные файлы(изображения, документы и т.п.) в Jira и/или Confluence
Полный бекап
Полный бэкап – это расширенная версия частичного. В нем делается бекап папки установки и папки с данными. Если по поводу папки установки более-менее понятно, то вот папка с данными может вызвать вопрос.nnЧто бы найти путь к папке с данными, следует посмотреть:n
- Jiran
- Файл sh/setenv.bat и найти в нем переменную JIRA_HOME
- Файл jira-application.properties и в нем посмотреть на переменную jira.home
- Confluencen
- Файл confluence-init.properties и найти в нем переменную home
Теперь, когда мы знаем пути, то следует:n
- n
- Остановить Jira и/или Confluence
- Сделать дамп БД
- Заархивировать все (папку инсталляции, папку данных и дамп БД)
- Положить в надежное место
nПосле этого, любой сбой и потеря данных в ПО не проблема.n
Как мы делаем
Если очень коротко, то мы комбинируем первый и второй варианты. Раз в месяц мы делаем полный бэкап. А каждую ночь частичный. Конечно же, перед всякого рода бекапом, мы удаляем старые файлы export и/или backups, а файлы в data и/или attachments – во время частичного бекапа, синхронизируем с удаленным хранилищем.nnНиже будет будет небольшой скрипт, который делает резервную копию. В нем не сложно разобраться. Строки 3,4,5 задают путь к папкам бекапа инсталляции, данных и БД.nnДалее идет функция остановки ПО, создания нужных папок для бекапа и синхронизация при помощи rsync.nnНу и в самом конце перед началом бекапа идет проверка, не запущен ли бекап уже. Плюс в этом скрипте – подробный лог-действий.nn
n
#!/bin/bashnTIMESTAMP=`date '+%d%m%y_%H%M%S'`nINSTALL_BACKUP="/srv/backup/atlassian_install_backup_$TIMESTAMP"nHOME_BACKUP="/srv/backup/atlassian_home_backup_$TIMESTAMP"nDATABASE_BACKUP="/srv/backup/atlassian_db_backup_$TIMESTAMP"nBACKUP_LOG_FILE="atlassian_backup_${TIMESTAMP}.log"nPID_FILE="/var/run/atlassian-backup.pid"nn# Print messages to log filen_log() {n echo "$(date '+%b %d %T') $1: $2" >> $LOG_FILEn}nn# Creating backupsn_create_backup() {n systemctl stop jira; JIRA_STOP_STATUS=$?n sleep 10n systemctl stop confluence; CONFL_STOP_STATUS=$?n sleep 10n if [ $JIRA_STOP_STATUS -eq 0 ] && [ $CONFL_STOP_STATUS -eq 0 ]; thenn MSG="Atlassian services stopped successfully"n _log INFO $MSGnn mkdir -p $INSTALL_BACKUPn if [ -d $INSTALL_BACKUP ]; thenn MSG="Creating installation directory backups"n _log INFO $MSGn rsync -avhP /opt/atlassian/ $INSTALL_BACKUP; INSTALL_BACKUP_STATUS=$?n if [ $INSTALL_BACKUP_STATUS -eq 0 ]; thenn MSG="... Created"n _log INFO $MSGn elsen MSG="... Failed"n _log ERROR $MSGn exit 1n fin elsen MSG="Installation backup directory doesn't exist"n _log ERROR $MSGn exit 1n fin mkdir -p $HOME_BACKUPn if [ -d $HOME_BACKUP ]; thenn MSG="Creating home directory backups"n _log INFO $MSGn rsync -avhP /var/atlassian/application-data/ $HOME_BACKUP; HOME_BACKUP_STATUS=$?n if [ $HOME_BACKUP_STATUS -eq 0 ]; thenn MSG="... Created"n _log INFO $MSGn elsen MSG="... Failed"n _log ERROR $MSGn exit 1n fin elsen MSG="Home backup directory doesn't exist"n _log ERROR $MSGn exit 1n fin mkdir -p $DATABASE_BACKUPn if [ -d $DATABASE_BACKUP ]; thenn MSG="Creating database backups"n _log INFO $MSGn pg_dump -U postgres jiradb > $DATABASE_BACKUP/jiradb.sql && pg_dump -U postgres confldb > $DATABASE_BACKUP/confldb.sql; DB_BACKUP_STATUS=$?n if [ $DB_BACKUP_STATUS -eq 0 ]; thenn MSG="... Created"n _log INFO $MSGn elsen MSG="... Failed"n _log ERROR $MSGn exit 1n fin elsen MSG="Database backup directory doesn't exist"n _log ERROR "$MSG"n exit 1n fin elsen MSG="Failed to stop atlassian services"n _log ERROR $MSGn exit 1n finn systemctl start jira; JIRA_START_STATUS=$?n sleep 30n systemctl start confluence; CONFL_START_STATUS=$?n sleep 30n if [ $JIRA_START_STATUS -eq 0 ] && [ $CONFL_START_STATUS -eq 0 ]; thenn MSG="Atlassian services started successfully"n _log INFO $MSGn elsen MSG="Failed to start atlassian services"n _log ERROR $MSGn exit 1n fin}nif [ ! -f $PID_FILE ]; thenn echo $$ > $PID_FILEn _create_backupnelsen $MSG="Script is already started"n echo "$MSG"n _log ERROR $MSGn exit 1nfi
- Используется БД postgres
- Пароль от БД указан непосредственно в сроке выгрузки дамп
- Нет проверки на остановку ПО Atlassian(из практики, последнии версии 7.3.х страдают долгим выключением и тем, что оставляют за собой мусор.)
Вам нужна установка, настройка, миграция, бэкап продуктов Atlassian, обращайтесь [email protected]