Skip to content

创建数据备份

Docker 方式下的 GitLab 备份操作基本一致,具体可参考 官方文档

GitLab 备份一般需要备份 配置文件代码数据,备份时记得备份配置文件。 因为 Gitlab 密钥文件-此密钥包含了数据库加密密钥和密钥变量,如恢复不了,那之前的用户密码就无法访问,或打开项目时报 500 错误。 另外做服务器迁移操作时,可能服务器的域名或 IP 与之前的不一样,此时需要修改 gitlab.rb 文件的 url 参数。

1)配置文件备份,可以直接修改对应的配置项启用

1
2
3
4
5
6
7
$ sudo docker exec -it gitlab vim /etc/gitlab/gitlab.rb
### Backup Settings
###! Docs: https://docs.gitlab.com/omnibus/settings/backups.html
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
gitlab_rails['backup_archive_permissions'] = 0644
gitlab_rails['backup_keep_time'] = 604800

启动自动备份功能,定义输出路径、生成文件权限和保留天数(7天=604800秒)

2)另外可手动拷贝或直接执行命令导出至指定路径

1
2
3
4
5
# 备份的配置文件gitlab.rb gitlab-secrets.json trusted-certs

# 通过命令备份配置文件,自动保存至config_backup中,也可使用--backup-path重新定义
$ docker exec -it gitlab gitlab-ctl backup-etc && cd /etc/gitlab/config_backup
$ docker exec -it gitlab gitlab-ctl backup-etc --backup-path <DIRECTORY>

3)备份代码数据,先停止服务,保证数据完整性

$ docker exec -it gitlab gitlab-ctl stop unicorn
$ docker exec -it gitlab gitlab-ctl stop sidekiq
1
2
3
4
5
6
7
$ docker exec -it gitlab gitlab-rake gitlab:backup:create
Creating backup archive: 1677147985_2023_02_23_13.3.5_gitlab_backup.tar ... done
...
Backup task is done.

$ docker exec -it gitlab ls /var/opt/gitlab/backups/
1677147985_2023_02_23_13.3.5_gitlab_backup.tar

备份完成后,可在 /var/opt/gitlab/backups/ 查看到备份文件,重新启动服务即可正常使用

$ docker exec -it gitlab gitlab-ctl restart