GitLab的备份与恢复

一、备份

1. docker执行备份

docker exec gitlab gitlab-rake gitlab:backup:create

默认将备份文件保存至docker的/var/opt/gitlab/backups/ 目录

这条命令是在 Docker 容器内部执行 GitLab 的备份操作。让我来解释一下这个命令的各个部分:
docker exec:这是 Docker 命令,用于在正在运行的容器内部执行命令。
gitlab:指定要操作的容器名称或 ID,即运行 GitLab 服务的容器。
gitlab-rake gitlab:backup:create:这部分是在 GitLab 容器内部执行的实际命令。具体来说:
gitlab-rake:是 GitLab 提供的用于管理数据库和执行其他任务的命令行工具。
gitlab:backup:create:是使用 gitlab-rake 工具创建 GitLab 数据库备份的命令。
通过执行这条命令,GitLab 将会在容器内部创建一个数据库备份。这样可以确保数据的安全性和可恢复性。

执行完会有一个警告

Warning: Your gitlab.rb and gitlab-secrets.json files contain sensitive data 
and are not included in this backup. You will need these files to restore a backup.
Please back them up manually.

这个警告是在执行 GitLab 备份时提醒您,备份文件中不包含 gitlab.rbgitlab-secrets.json 这两个文件,这两个文件包含了敏感数据,例如配置信息和加密密钥,因此在恢复备份时需要手动备份这两个文件。
为了确保完整的备份和恢复过程,请务必手动备份 gitlab.rbgitlab-secrets.json 文件。

2. 备份敏感数据

docker cp gitlab:/var/opt/gitlab/backups/1709697433_2024_03_06_13.6.2_gitlab_backup.tar  /data/gitlab-bak/
docker cp gitlab:/etc/gitlab/gitlab.rb  /data/gitlab-bak/
docker cp gitlab:/etc/gitlab/gitlab-secrets.json  /data/gitlab-bak/

备份完成

二、数据的恢复

我们启动新的容器,然后将刚才备份的文件拷贝到容器里,后面两个文件直接覆盖即可

docker cp /data/gitlab-bak/1709697433_2024_03_06_13.6.2_gitlab_backup.tar  gitlab:/var/opt/gitlab/backups/
docker cp /data/gitlab-bak/gitlab-secrets.json   gitlab:/etc/gitlab/
docker cp /data/gitlab-bak/gitlab.rb   gitlab:/etc/gitlab/

拷贝完之后,我们进入容器,进入备份目录,执行如下命令

docker exec -it gitlab bash
gitlab-rake gitlab:backup:restore BACKUP=1709697433_2024_03_06_13.6.2

如果没有权限,则执行

chmod 777 文件名

恢复之后,我们重新加载配置,并重启gitlab

gitlab-ctl reconfigure 
gitlab-ctl restart 
posted @ 2024-11-26 12:35  李济宏(Amadeus)  阅读(54)  评论(0编辑  收藏  举报