GitLab备份与恢复测试(基于Docker)

GitLab环境准备

bash 复制代码
docker run --name gitlab \
-p 2022:22 -p 2080:80 -p 2443:443 -d \
-v /opt/gitlab/config:/etc/gitlab \
-v /opt/gitlab/gitlab/logs:/var/log/gitlab \
-v /opt/gitlab/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:16.2.1-ce.0

备份

1.修改配置文件/opt/gitlab/config/gitlab.rb

bash 复制代码
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
# gitlab_rails['backup_gitaly_backup_path'] = "/opt/gitlab/embedded/bin/gitaly-backup"

###! Docs: https://docs.gitlab.com/ee/raketasks/backup_restore.html#backup-archive-permissions
gitlab_rails['backup_archive_permissions'] = 0644

# gitlab_rails['backup_pg_schema'] = 'public'

###! The duration in seconds to keep backups before they are allowed to be deleted
gitlab_rails['backup_keep_time'] = 604800

2.重新加载配置

bash 复制代码
docker exec -t gitlab gitlab-ctl reconfigure

3.备份应用程序

bash 复制代码
docker exec -t gitlab gitlab-backup create STRATEGY=copy

4.备份配置

bash 复制代码
docker exec -t gitlab /bin/bash -c 'gitlab-ctl backup-etc'

恢复

1.启动gitlab

bash 复制代码
docker run --name gitlab-bak1 \
-p 2022:22 -p 2080:80 -p 2443:443 -d \
-v /opt/gitlab_bak1/config:/etc/gitlab \
-v /opt/gitlab_bak1/logs:/var/log/gitlab \
-v /opt/gitlab_bak1/data:/var/opt/gitlab \
gitlab/gitlab-ce:16.2.1-ce.0

2.修改配置文件/opt/gitlab_bak1/config/gitlab.rb

bash 复制代码
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
# gitlab_rails['backup_gitaly_backup_path'] = "/opt/gitlab/embedded/bin/gitaly-backup"

###! Docs: https://docs.gitlab.com/ee/raketasks/backup_restore.html#backup-archive-permissions
gitlab_rails['backup_archive_permissions'] = 0644

# gitlab_rails['backup_pg_schema'] = 'public'

###! The duration in seconds to keep backups before they are allowed to be deleted
gitlab_rails['backup_keep_time'] = 604800

3.重新加载配置

bash 复制代码
docker exec -t gitlab-bak1 gitlab-ctl reconfigure

4.复制备份文件到2指定的目录

bash 复制代码
cp /opt/gitlab/gitlab/data/backups/1705891184_2024_01_22_16.2.1_gitlab_backup.tar /opt/gitlab_bak1/data/backups/

5.停止连接到数据库的进程

bash 复制代码
docker exec -it gitlab-bak1 gitlab-ctl stop puma
docker exec -it gitlab-bak1 gitlab-ctl stop sidekiq
docker exec -it gitlab-bak1 gitlab-ctl status

6.恢复,名称中省略了_gitlab_backup.tar

bash 复制代码
docker exec -it gitlab-bak1 gitlab-backup restore BACKUP=1705891184_2024_01_22_16.2.1

7.恢复gitlab-secrets文件

bash 复制代码
tar -xf /opt/gitlab/config/config_backup/gitlab_config_1705891508_2024_01_22.tar -C /tmp/ && mv -f /tmp/etc/gitlab/gitlab-secrets.json /opt/gitlab_bak1/config/

8.重启gitlab容器

bash 复制代码
docker restart gitlab-bak1

9.检查

bash 复制代码
docker exec -it gitlab-bak1 gitlab-rake gitlab:check SANITIZE=true

参考链接

官方文档: https://docs.gitlab.com/omnibus/settings/backups.html

gitlab数据及用户迁移: https://blog.csdn.net/IT_shinchan/article/details/130783545?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-4-130783545-blog-122261961.235v40pc_relevant_anti_t3&spm=1001.2101.3001.4242.3&utm_relevant_index=5

相关推荐
叹一曲当时只道是寻常5 分钟前
docker推荐应用汇总及部署实战
docker
董可伦9 分钟前
Docker 安装 Oracle 12C
docker·oracle
IT成长日记1 小时前
【Docker基础】Docker核心概念:容器(Container)与镜像(Image)的区别与联系
运维·docker·区别与联系·container·imgae
容器魔方1 小时前
科大讯飞基于Volcano实现AI基础设施突破,赢得CNCF最终用户案例研究竞赛
云原生·容器·云计算
德育处主任1 小时前
亚马逊云 Lambda 容器化部署教程
后端·容器
xixingzhe21 小时前
docker compose安装Prometheus、Grafana
docker·grafana·prometheus
Linux运维技术栈2 小时前
GitLab 拉取变慢的原因及排查方法
运维·gitlab
Kevin不想说话926192 小时前
WSL2 Ubuntu Docker 完整部署指南
docker
啃火龙果的兔子3 小时前
在服务器上使用 Docker 部署 Node.js 后端服务和前端项目
服务器·docker·node.js
风清再凯3 小时前
docker-compose容器单机编排
docker·容器·dubbo