Backup и восстановление GitLab | OTUS
⚡ Открываем подписку на курсы!
Проходите параллельно 3 онлайн-курса в месяц по цене одного.
Подробнее

Курсы

Программирование
Программист 1С Реверс-инжиниринг. Продвинутый курс
-16%
Java Developer. Professional
-17%
JavaScript Developer. Professional
-18%
Flutter Mobile Developer
-15%
JavaScript Developer. Basic
-16%
Highload Architect
-10%
Нереляционные базы данных
-17%
Подготовка к сертификации Oracle Java Programmer (OCAJP)
-8%
Алгоритмы и структуры данных
-12%
Архитектура и шаблоны проектирования
-14%
Framework Laravel
-13%
IoT-разработчик
-12%
Team Lead
-15%
VOIP инженер Разработчик C# Разработчик на Spring Framework AWS для разработчиков Cloud Solution Architecture CI/CD Vue.js разработчик Разработчик Node.js Scala-разработчик Супер - интенсив по Kubernetes Symfony Framework Advanced Fullstack JavaScript developer
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

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, куда-либо передавать данные.

Кроме локальных директорий для бэкапа, возможна загрузка и в облачные хранилища, но подробнее об этом лучше почитать в [официальной документации](https://docs.gitlab.com/ee/raketasks/backup_restore.html).

Также вы можете указать параметр времени хранения вашего бэкапа (работает лишь с локальными архивами). Когда срок закончится, 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!

Автор
0 комментариев
Для комментирования необходимо авторизоваться