一、备份
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.rb
和 gitlab-secrets.json
这两个文件,这两个文件包含了敏感数据,例如配置信息和加密密钥,因此在恢复备份时需要手动备份这两个文件。
为了确保完整的备份和恢复过程,请务必手动备份 gitlab.rb
和 gitlab-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