I使用命令
docker exec -t $CONTAINER_ID gitlab-backup create
创建备份。恢复时,我遵循文档的官方说明。
docker exec -it <container_id> gitlab-ctl stop puma
docker exec -it <container_id> gitlab-ctl stop sidekiq
docker exec -it <container_id> gitlab-backup restore BACKUP=<backup_name>
在还原过程中,在恢复Postgres表的末尾显示错误(
ActiveRecord::StatementInvalid: PG::ConnectionBad: PQsocket() can't get socket descriptor
):2025-01-30 13:41:12 UTC -- Unpacking backup ...
2025-01-30 13:41:12 UTC -- Unpacking backup ... done
2025-01-30 13:41:12 UTC -- Restoring database ...
2025-01-30 13:41:12 UTC -- Be sure to stop Puma, Sidekiq, and any other process that
connects to the database before proceeding. For Omnibus
installs, see the following link for more information:
Do you want to continue (yes/no)? yes
2025-01-30 13:41:21 UTC -- Removing all tables. Press `Ctrl-C` within 5 seconds to abort
2025-01-30 13:41:26 UTC -- Cleaning the database ...
2025-01-30 13:43:19 UTC -- done
2025-01-30 13:43:19 UTC -- Restoring PostgreSQL database gitlabhq_production ...
SET
... filling the database with data from backup ...
ALTER TABLE
2025-01-30 14:27:04 UTC -- [DONE]
2025-01-30 14:27:04 UTC -- Source backup for the database ci doesn't exist. Skipping the task
2025-01-30 14:27:04 UTC -- Restoring database ... done
2025-01-30 14:27:04 UTC -- Restoring repositories ...
2025-01-30 14:27:04 UTC -- Deleting tar staging files ...
2025-01-30 14:27:04 UTC -- Cleaning up /var/opt/gitlab/backups/backup_information.yml
2025-01-30 14:27:04 UTC -- Cleaning up /var/opt/gitlab/backups/db
2025-01-30 14:27:04 UTC -- Cleaning up /var/opt/gitlab/backups/repositories
2025-01-30 14:27:14 UTC -- Cleaning up /var/opt/gitlab/backups/uploads.tar.gz
2025-01-30 14:27:14 UTC -- Cleaning up /var/opt/gitlab/backups/builds.tar.gz
2025-01-30 14:27:14 UTC -- Cleaning up /var/opt/gitlab/backups/artifacts.tar.gz
2025-01-30 14:27:14 UTC -- Cleaning up /var/opt/gitlab/backups/pages.tar.gz
2025-01-30 14:27:14 UTC -- Cleaning up /var/opt/gitlab/backups/lfs.tar.gz
2025-01-30 14:27:14 UTC -- Cleaning up /var/opt/gitlab/backups/terraform_state.tar.gz
2025-01-30 14:27:14 UTC -- Cleaning up /var/opt/gitlab/backups/packages.tar.gz
2025-01-30 14:27:14 UTC -- Cleaning up /var/opt/gitlab/backups/ci_secure_files.tar.gz
2025-01-30 14:27:14 UTC -- Cleaning up /var/opt/gitlab/backups/external_diffs.tar.gz
2025-01-30 14:27:14 UTC -- Deleting tar staging files ... done
2025-01-30 14:27:14 UTC -- Deleting backups/tmp ...
2025-01-30 14:27:14 UTC -- Deleting backups/tmp ... done
2025-01-30 14:27:14 UTC -- Deleting backup and restore PID file ... done
rake aborted!
ActiveRecord::StatementInvalid: PG::ConnectionBad: PQsocket() can't get socket descriptor
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/schema_cache_with_renamed_table_legacy.rb:27:in ` columns'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/schema_cache_with_renamed_table_legacy.rb:31:in ` columns_hash'
/opt/gitlab/embedded/service/gitlab-rails/app/models/pool_repository.rb:23:in `<class:PoolRepository>'
/opt/gitlab/embedded/service/gitlab-rails/app/models/pool_repository.rb:6:in `<top (required)>'
<internal:/opt/gitlab/embedded/lib/ruby/site_ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
<internal:/opt/gitlab/embedded/lib/ruby/site_ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/targets/repositories.rb:128:in `restore_object_pools'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/targets/repositories.rb:48:in `ensure in restore'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/targets/repositories.rb:48:in `restore'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/tasks/task.rb:31:in `restore!'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/restore/process.rb:30:in `execute!'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/manager.rb:101:in `run_restore_task'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/manager.rb:168:in `block in run_all_restore_tasks'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/manager.rb:165:in `each_value'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/manager.rb:165:in `run_all_restore_tasks'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/manager.rb:68:in `restore'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/backup.rake:21:in `block in restore_backup'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/backup.rake:75:in `lock_backup'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/backup.rake:18:in `restore_backup'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/backup.rake:120:in `block (3 levels) in <top (requir ed)>'
/opt/gitlab/embedded/bin/bundle:25:in `load'
/opt/gitlab/embedded/bin/bundle:25:in `<main>'
Caused by:
PG::ConnectionBad: PQsocket() can't get socket descriptor
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/schema_cache_with_renamed_table_legacy.rb:27:in ` columns'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/schema_cache_with_renamed_table_legacy.rb:31:in ` columns_hash'
/opt/gitlab/embedded/service/gitlab-rails/app/models/pool_repository.rb:23:in `<class:PoolRepository>'
/opt/gitlab/embedded/service/gitlab-rails/app/models/pool_repository.rb:6:in `<top (required)>'
<internal:/opt/gitlab/embedded/lib/ruby/site_ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
<internal:/opt/gitlab/embedded/lib/ruby/site_ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:37:in `require'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/targets/repositories.rb:128:in `restore_object_pools'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/targets/repositories.rb:48:in `ensure in restore'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/targets/repositories.rb:48:in `restore'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/tasks/task.rb:31:in `restore!'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/restore/process.rb:30:in `execute!'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/manager.rb:101:in `run_restore_task'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/manager.rb:168:in `block in run_all_restore_tasks'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/manager.rb:165:in `each_value'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/manager.rb:165:in `run_all_restore_tasks'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/manager.rb:68:in `restore'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/backup.rake:21:in `block in restore_backup'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/backup.rake:75:in `lock_backup'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/backup.rake:18:in `restore_backup'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/backup.rake:120:in `block (3 levels) in <top (requir ed)>'
/opt/gitlab/embedded/bin/bundle:25:in `load'
/opt/gitlab/embedded/bin/bundle:25:in `<main>'
Caused by:
ActiveRecord::StatementInvalid: PG::ConnectionBad: PQconsumeInput() server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/schema_cache_with_renamed_table_legacy.rb:27:in ` columns'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/schema_cache_with_renamed_table_legacy.rb:31:in ` columns_hash'
/opt/gitlab/embedded/service/gitlab-rails/ee/lib/ee/backup/targets/repositories.rb:12:in `group_relation'
/opt/gitlab/embedded/service/gitlab-rails/ee/lib/ee/backup/targets/repositories.rb:19:in `find_groups_in_batche s'
/opt/gitlab/embedded/service/gitlab-rails/ee/lib/ee/backup/targets/repositories.rb:37:in `enqueue_consecutive_g roups'
/opt/gitlab/embedded/service/gitlab-rails/ee/lib/ee/backup/targets/repositories.rb:31:in `enqueue_consecutive'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/targets/repositories.rb:43:in `restore'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/tasks/task.rb:31:in `restore!'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/restore/process.rb:30:in `execute!'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/manager.rb:101:in `run_restore_task'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/manager.rb:168:in `block in run_all_restore_tasks'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/manager.rb:165:in `each_value'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/manager.rb:165:in `run_all_restore_tasks'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/manager.rb:68:in `restore'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/backup.rake:21:in `block in restore_backup'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/backup.rake:75:in `lock_backup'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/backup.rake:18:in `restore_backup'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/backup.rake:120:in `block (3 levels) in <top (requir ed)>'
/opt/gitlab/embedded/bin/bundle:25:in `load'
/opt/gitlab/embedded/bin/bundle:25:in `<main>'
Caused by:
PG::ConnectionBad: PQconsumeInput() server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/schema_cache_with_renamed_table_legacy.rb:27:in ` columns'
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/database/schema_cache_with_renamed_table_legacy.rb:31:in ` columns_hash'
/opt/gitlab/embedded/service/gitlab-rails/ee/lib/ee/backup/targets/repositories.rb:12:in `group_relation'
/opt/gitlab/embedded/service/gitlab-rails/ee/lib/ee/backup/targets/repositories.rb:19:in `find_groups_in_batche s'
/opt/gitlab/embedded/service/gitlab-rails/ee/lib/ee/backup/targets/repositories.rb:37:in `enqueue_consecutive_g roups'
/opt/gitlab/embedded/service/gitlab-rails/ee/lib/ee/backup/targets/repositories.rb:31:in `enqueue_consecutive'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/targets/repositories.rb:43:in `restore'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/tasks/task.rb:31:in `restore!'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/restore/process.rb:30:in `execute!'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/manager.rb:101:in `run_restore_task'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/manager.rb:168:in `block in run_all_restore_tasks'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/manager.rb:165:in `each_value'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/manager.rb:165:in `run_all_restore_tasks'
/opt/gitlab/embedded/service/gitlab-rails/lib/backup/manager.rb:68:in `restore'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/backup.rake:21:in `block in restore_backup'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/backup.rake:75:in `lock_backup'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/backup.rake:18:in `restore_backup'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/backup.rake:120:in `block (3 levels) in <top (requir ed)>'
/opt/gitlab/embedded/bin/bundle:25:in `load'
/opt/gitlab/embedded/bin/bundle:25:in `<main>'
Tasks: TOP => gitlab:backup:restore
(See full trace by running task with --trace)
备份文件中有GIT存储库数据,但未将其还原为Git-data。 备份文件:
backup_information.yml
db/
db/database.sql.gz
repositories/default/@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.git/1738579720_2025_02_03_17.8.1-ee/001.refs
repositories/default/@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.git/1738579720_2025_02_03_17.8.1-ee/001.bundle
repositories/default/@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.wiki.git/
repositories/default/@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.wiki.git/1738579720_2025_02_03_17.8.1-ee/
repositories/default/@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.wiki.git/1738579720_2025_02_03_17.8.1-ee/001.refs
repositories/manifests/default/@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.git/+latest.toml
repositories/manifests/default/@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.git/1738579720_2025_02_03_17.8.1-ee.toml
repositories/manifests/default/@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.wiki.git/+latest.toml
repositories/manifests/default/@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.wiki.git/1738579720_2025_02_03_17.8.1-ee.toml
uploads.tar.gz
builds.tar.gz
artifacts.tar.gz
pages.tar.gz
lfs.tar.gz
terraform_state.tar.gz
packages.tar.gz
ci_secure_files.tar.gz
external_diffs.tar.gz
恢复后的git-data:
root@git:/# ls -la /var/opt/gitlab/git-data/repositories/
total 1
drwx--S--- 3 git git 1 Feb 3 10:58 +gitaly
drwxrws--- 3 git git 2 Feb 3 10:58 .
drwxr-xr-x 3 root root 1 Feb 3 10:58 ..
-rw------- 1 git git 64 Feb 3 10:58 .gitaly-metadata
不是因为GL版本 - 我用17.2进行了检查 - 相同的错误。
试图在docs.gitlab
使用Docker swarm对GitLab实例进行修复有时可能导致GIT存储库未正确恢复,即使数据库和其他组件已成功恢复。
似乎问题是,当您使用GitLab备份/还原过程时,GIT存储库无法正确恢复。以下是您可以遵循的一些步骤进行故障排除并解决此问题:
如果您使用的是Docker,请确保正确安装存储库数据的卷。如果由于量错误而无法正确备份数据,则不会恢复。
3。使用正确的还原命令:恢复后,需要正确指定备份ID。例如:
(<backup-id>_gitlab_backup.tar)
repeplace(usually /var/opt/gitlab)
带有容器的名称,并使用备份的正确ID。
4。匹配GitLab版本:您还原的GitLab版本必须匹配创建备份的版本。不匹配的版本可能会导致恢复过程中的问题。
5。监视错误:在还原过程中,检查日志是否有任何错误或警告。这些通常指出出了什么问题。
6。评论配置:确保正确设置了GitLab配置(例如
docker exec -t <container_name> gitlab-backup restore BACKUP=<backup-id>
中的存储库路径)。这里的设置不正确可能导致还原过程跳过存储库。
7。检查权限:如果文件还原,但Gitlab无法访问它们,则可能是权限问题。确保将正确的所有权和权限应用于还原的数据。如果您经历了这些步骤,并且仍然不起作用,请随时分享更多细节。例如,任何特定的错误消息或您的设置(例如Docker swarm或独立安装)。这可能有助于缩小问题!