Backup и восстановление GitLab | OTUS

Backup и восстановление GitLab

В GitLab предусмотрен встроенный механизм, позволяющий создавать резервные копии. Вы можете подготовить бэкап простой командой:

# gitlab-rake gitlab:backup:create

В результате бэкап создастся в директории /var/opt/gitlab/backups, что происходит по умолчанию. Однако вы сможете переместить его и в другое место.

Вообще, бывают разные стратегии создания бэкапа. Опять же, по умолчанию ваши данные сразу пакуются посредством tar, и этот процесс занимает некоторое время. Если же в этот самый момент вы будете активно работать с данными, файлы изменятся, а tar станет выдавать предупреждения. Дабы этого избежать, вы можете указывать STRATEGY=copy:

# gitlab-rake gitlab:backup:create STRATEGY=copy

В результате данные сначала будут копироваться во временную директорию и лишь только потом упаковываться в архив tar. Теоретически, такой подход лучше, однако для успешного бэкапа понадобится больше свободного места на сервере. Можно сказать, что решение более актуально для крупных серверов.

Если хотите указать директорию, куда выполнять бэкап, это делается в конфигурации следующим образом:

gitlab_rails['backup_upload_connection'] = {
   :provider => 'Local',
   :local_root => '/mnt/backups'
 }

 # The directory inside the mounted folder to copy backups to
 # Use '.' to store them in the root directory
 gitlab_rails['backup_upload_remote_directory'] = 'gitlab_backups'

В нашем случае /mnt/backups не обязательно является локальной папкой — она может быть и сетевой папкой nfs либо smb, монтированной к серверу. Можно использовать локальную директорию, а потом, используя rsync, куда-либо передавать данные.

Кроме локальных директорий для бэкапа, возможна загрузка и в облачные хранилища, но подробнее об этом лучше почитать в официальной документации.

Также вы можете указать параметр времени хранения вашего бэкапа (работает лишь с локальными архивами). Когда срок закончится, GitLab самостоятельно удалит старые архивы.

## Limit backup lifetime to 7 days - 604800 seconds
 gitlab_rails['backup_keep_time'] = 604800

Чтобы выполнять бэкап данных в GitLab регулярно, вы можете создать задачу в cron. В примере ниже выполняется регулярное резервное копирование данных в два часа ночи:

0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1

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

Чтобы восстановить GitLab из бэкапа, установите чистую GitLab такой же версии, какая у вас находится в архивной копии. Убедитесь, что она работает, а потом восстановите вручную файл /etc/gitlab/gitlab-secrets.json. Останется скопировать файл с бэкапом в директорию /var/opt/gitlab/backups, назначить владельцем файла пользователя Git и выполнить ряд команд:

# gitlab-ctl stop unicorn
# gitlab-ctl stop sidekiq
# gitlab-ctl status
# gitlab-rake gitlab:backup:restore BACKUP=1493107454_2018_04_25_10.6.4-ce

Далее нужно будет восстановить конфиг /etc/gitlab/gitlab.rb, перезапустить GitLab и выполнить проверку:

# gitlab-ctl restart
# gitlab-rake gitlab:check SANITIZE=true

Таким образом восстановление будет окончено. Если процедура прошла в штатном режиме, вы получите забэкапленную версию GitLab. Однако учтите, что если вы захотите восстановиться на другую версию, которая отличается от той, что в бэкапе, вы гарантированно столкнётесь с ошибкой, т. к. версия должна в точности совпадать.

По материалам статьи «Установка и настройка Gitlab на Centos и Ubuntu».

Более подробно ознакомиться с GitLab и освоить нюансы его работы вы можете на курсе CI/CD. Именно этой теме посвящено несколько занятий из первого модуля. Скачать программу курса можно здесь.

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
2 комментария
1

У вас форматирование поехало

0

Спасибо, поправили.

Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто