gitlab备份与恢复

默认备份的是放在 /var/opt/gitlab/backups 路径下。通常公司有专门挂载盘存放数据的,这里将备份目录改成 /data/gitlab/backups

修改 /etc/gitlab/gitlab.rb 配置

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

通常只修改一下几个参数

  • 第1个:启动gitlab备份,默认启动
  • 第2个:配置备份路径,默认路径 /var/opt/gitlab/backups
  • 第3个:设置备份的权限,默认权限 0600
  • 第4个:备份保留周期,单位(s)。604800s = 7天

注意: 如果有修改过 /etc/gitlab/gitlab.rb 配置文件,请重新执行 sudo gitlab-ctl reconfigure 生效配置文件

gitlab备份

$ sudo gitlab-rake gitlab:backup:create

$ sudo ls -l /data/gitlab/backups/1659688520_2022_08_05_14.10.5_gitlab_backup.tar
-rw-------. 1 git git 378880 Aug  5 16:35 /data/gitlab/backups/1659688520_2022_08_05_14.10.5_gitlab_backup.tar

gitlab恢复

  1. 确认pg数据库中,gitlab的账号是否为超级用户
$ sudo su - gitlab-psql

$ /opt/gitlab/embedded/bin/psql -h 127.0.0.1 gitlabhq_production
psql (12.7)
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.

gitlabhq_production=# SELECT rolname,rolsuper FROM  pg_roles WHERE rolname='gitlab';
 rolname | rolsuper 
---------+----------
 gitlab  | t
(1 row)

可能遇到两个问题:

  1. 连接pg数据库失败,原因是没有监听对应pg数据端口
$ sudo sed -ri.bak "s@(listen_addresses).*@\1 = '*'@g" /var/opt/gitlab/postgresql/data/postgresql.conf
$ cat <<EOF | sudo tee -a /var/opt/gitlab/postgresql/data/pg_hba.conf >> /dev/null
local   all         all                               trust
host    all         all                               127.0.0.1/32 trust
EOF
$ sudo gitlab-ctl restart
  1. gitlab的账号不是超级用户,请设置超级用户
ALTER USER gitlab WITH SUPERUSER;
  1. 停止相关数据连接服务
$ sudo gitlab-ctl stop unicorn
$ sudo gitlab-ctl stop sidekiq
  1. 恢复
$ gitlab-rake gitlab:backup:restore BACKUP=/data/gitlab/backups/1659688520_2022_08_05_14.10.5

BACKUP的参数不需要后面的 _gitlab_backup.tar 字符串

  1. 启动相关数据连接服务
$ sudo gitlab-ctl start unicorn
$ sudo gitlab-ctl start sidekiq
posted @ 2022-08-05 17:58  jiaxzeng  阅读(260)  评论(0)    收藏  举报