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恢复
- 确认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)
可能遇到两个问题:
- 连接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
- gitlab的账号不是超级用户,请设置超级用户
ALTER USER gitlab WITH SUPERUSER;
- 停止相关数据连接服务
$ sudo gitlab-ctl stop unicorn
$ sudo gitlab-ctl stop sidekiq
- 恢复
$ gitlab-rake gitlab:backup:restore BACKUP=/data/gitlab/backups/1659688520_2022_08_05_14.10.5
BACKUP的参数不需要后面的
_gitlab_backup.tar字符串
- 启动相关数据连接服务
$ sudo gitlab-ctl start unicorn
$ sudo gitlab-ctl start sidekiq

浙公网安备 33010602011771号