Backup & Restore
You can only restore a backup to exactly the same version and type (CE/EE) of GitLab on which it was created
Версию и тип можно засунуть в имя файла бэкапа
Бэкапы складываются в backup_path
root@gitlab-new:/etc/gitlab# cat gitlab.rb | grep backup_path
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
Выглядят они вот так
root@gitlab-new:/etc/gitlab# ls /var/opt/gitlab/backups
1636411695_2021_11_08_13.2.4_gitlab_backup.tar 1636413943_2021_11_08_14.0.12_gitlab_backup.tar 1636416295_2021_11_09_14.4.2_gitlab_backup.tar 1636419165_2021_11_09_14.1.7_gitlab_backup.tar
1636413054_2021_11_08_13.12.15_gitlab_backup.tar 1636414740_2021_11_08_14.1.7_gitlab_backup.tar 1636416920_2021_11_09_14.2.6_gitlab_backup.tar
root@gitlab-new:/etc/gitlab#
Команда - sudo gitlab-backup create
запустит создание бэкапа
Получается вот такой архив
root@gitlab-new:/var/opt/gitlab/backups# tar --list -f 1648556739_2022_03_29_14.4.2_gitlab_backup.tar | grep -v 'repositories/'
db/
db/database.sql.gz
uploads.tar.gz
builds.tar.gz
artifacts.tar.gz
pages.tar.gz
lfs.tar.gz
backup_information.yml
Но в нем нет конфигов
/etc/gitlab/gitlab-secrets.json
/etc/gitlab/gitlab.rb
Их нужно забэкапить отдельно (в них есть чувствительная инфа, надо быть аккуратным)
Существуют разные backup options
Например можно бэкапить через временные файлы, а можно гнать данные напрямую в tar (итд, опций полно)
Гитлаб может отправлять бэкап в удаленное хранилище (например в s3)
В /etc/gitlab/gitlab.rb нужно прописать:
gitlab_rails['backup_upload_connection'] = {
'provider' => 'AWS',
'region' => 'ru-central1',
'aws_access_key_id' => 'YCAJExaoeuaoeuTM_m8BrB',
'aws_secret_access_key' => 'YCMpK7kaoeuaoeu3_Hxhpr9XwH7__mmG',
'endpoint' => 'https://storage.yandexcloud.net',
'path_style' => true
}
gitlab_rails['backup_upload_remote_directory'] = 'zeen-backup-gitlab'
И вот такую хрень в крон
root@gitlab-new:/etc/gitlab# crontab -l | egrep -v '^#'
0 2 * * * /opt/gitlab/bin/gitlab-backup create CRON=1
No Comments