一:备份与恢复:
1.1:备份
在gitlab运行时,执行命令gitlab-rake gitlab:backup:create即可备份,效果如下
#执行命令 gitlab-rake gitlab:backup:create ,进行备份
[root@gitlab1 ~]# gitlab-rake gitlab:backup:create
2020-08-17 10:26:27 +0800 -- Dumping database ...
Dumping PostgreSQL database gitlabhq_production ... [DONE]
2020-08-17 10:26:30 +0800 -- done
2020-08-17 10:26:30 +0800 -- Dumping repositories ...
* whatever/whatfuckprojet (@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b) ... [DONE]
[SKIPPED] Wiki
* whatever/whatafuckingprojcet (@hashed/d4/73/d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35) ... [DONE]
[SKIPPED] Wiki
2020-08-17 10:26:31 +0800 -- done
2020-08-17 10:26:31 +0800 -- Dumping uploads ...
2020-08-17 10:26:31 +0800 -- done
2020-08-17 10:26:31 +0800 -- Dumping builds ...
2020-08-17 10:26:31 +0800 -- done
2020-08-17 10:26:31 +0800 -- Dumping artifacts ...
2020-08-17 10:26:31 +0800 -- done
2020-08-17 10:26:31 +0800 -- Dumping pages ...
2020-08-17 10:26:31 +0800 -- done
2020-08-17 10:26:31 +0800 -- Dumping lfs objects ...
2020-08-17 10:26:31 +0800 -- done
2020-08-17 10:26:31 +0800 -- Dumping container registry images ...
2020-08-17 10:26:31 +0800 -- [DISABLED]
Creating backup archive: 1597631191_2020_08_17_13.1.6_gitlab_backup.tar ... done
Uploading backup archive to remote storage ... skipped
Deleting tmp directories ... done
done
done
done
done
done
done
done
Deleting old backups ... skipping
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.
Backup task is done.
备份过程中,会提示“warning Your gitlab.rb and gitlab-secrets.json”。这意味着gitlab没有帮我们备份这些配置文件,需要我们自己手动备份。
我的理解:如果这些配置文件没有重大变更的话,可以不必频繁备份。
备份后,会产生一个形如(1597375837_2020_08_14_13.0.12_gitlab_backup.tar)的 备份文件
/etc/gitlab/gitlab.rb 文件中,关于备份的常用属性解释
gitlab_rails['backup_path']属性。用于设置备份文件的存放位置。修改后,需要执行gitlab-ctl reconfigure 刷新配置。
gitlab_rails['backup_keep_time']属性。用于设置备份文件过期时间,这里的时间以秒计算
gitlab_rails['backup_multipart_chunk_size']属性。用于设置备份文件拆分后,每个子文件大小。
gitlab_rails['backup_encryption']属性,用于设置备份文件的加密方式。
1.2:恢复
#为进行恢复的数据源赋予可执行权限
[root@gitlab1 backups]# chmod 755 /var/opt/gitlab/backups/1597375837_2020_08_14_13.0.12_gitlab_backup.tar
#停止gitlab的数据写入服务,但git本身依然在运行。第一个是托管服务,第二个是任务队列
[root@gitlab1 backups]# gitlab-ctl stop unicorn
[root@gitlab1 backups]# gitlab-ctl stop sidekiq
#执行命令,进行恢复。这里“BACKUP”的值,就是备份数据源tar包的前半部分名称
[root@gitlab1 backups]# gitlab-rake gitlab:backup:restore BACKUP=1597375837_2020_08_14_13.0.12
恢复过程的内容较多,不在此进行展示。需要注意的是,在恢复过程中会有各种提示,然后需要我们两次确认(输入yes即可)。如果一切正常,就会成功恢复到备份的数据源的状态。然后再次重启服务即可(执行命令gitlab-ctl start)
二:升级
2.1:同版本内部升级
比如从13.0.12升级到13.1.6。这种情况下不需考虑太多,直接升级就好了,操作如下所示
#第一步,下载期望版本的安装包,下载地址见我的上一篇
#第二步,停止所有gitlab服务。如下所示
[root@gitlab1 backups]# gitlab-ctl stop
#或者像恢复操作一样,停止队列服务和托管等服务即可,如下所示
[root@gitlab1 backups]# gitlab-ctl stop unicorn
[root@gitlab1 backups]# gitlab-ctl stop sidekiq
[root@gitlab1 backups]# gitlab-ctl stop nginx
#第三步,升级
[root@gitlab1 backups]# rpm -Uvh gitlab-ce-13.1.6-ce.0.el7.x86_64.rpm
#第四步,刷新配置,重启服务
[root@gitlab1 backups]# gitlab-ctl reconfigure
[root@gitlab1 backups]# gitlab-ctl restart postgresql
[root@gitlab1 backups]# gitlab-ctl start
2.2:跨版本升级
跨版本升级,特别是跨了多个版本的情况下(如,从10.1.3升到13.1.6)
最稳妥的方式,就是是逐个大版本升级。比如先从10升到11,再升到12、13这样。
推荐大家在升级到每个大版本后,都启动一次验证一下能否正常使用。
其他的操作与同版本内部升级完全一致,在此不再赘述。
三:迁移
3.1:在同版本的不同服务器间迁移
相同版本间的迁移,就相当于一次异地恢复操作。
需要注意的就是异地服务器中配置文件的备份,具体操作步骤这里不再具体举例详述了。
3.2:向高版本迁移
其实就是一次升级操作。假设我们为迁移源和迁移目标服务器分别命名为A和B
我们可以在停止A服务器的服务之后,先将A升级到目标版本,再将升级后的A做备份
最后我们将A的最新高版本备份复制到B服务器,以A的最新备份对B服务器做恢复即可完成迁移。
四:需要注意的地方
在恢复和升级‘迁移中,最可能遇到的问题就是操作完毕不能启动。
为了避免这种情况,我们一定要在操作前,做好各种备份!!!包括配置文件的备份。这点很重要!!!