Gitlab server migration / 把 gitlab server 搬家
这篇文章整理得很好,把落落长的gitlab官方文章变得精简许多。
安装新server
目前gitlab 已经把EE (enterprise edition) 跟CE (community edition) 整合在一起,如果EE 没有付费,那么试用期过后自动变成CE。但如果直接就是要安装CE 的话,安装说明要找一下(虽然跟EE 差不多),以ubuntu 来说的话在这边。
备份原有server
这次migration 是从gcp 要搬去alibaba cloud,所以比较懒惰的方式是透过gcp bucket storage,之前做的备份机制刚好可以用,设定在/etc/gitlab/gitlab.rb。
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups" gitlab_rails['backup_keep_time'] = 604800 gitlab_rails['backup_upload_connection'] = { 'provider' => 'Google', 'google_storage_access_key_id' => 'YOUR_GCP_BUCKET_STORAGE_ACCESS_KEY_ID', 'google_storage_secret_access_key' => 'YOUR_GCP_BUCKET_STORAGE_SECRET_ACCESS_KEY' } gitlab_rails['backup_upload_remote_directory'] = 'YOUR_GCP_BUCKET_NAME'
找bucket name 以及access key 以及secret access key 可以参考下面两张图。
设定完成之后,就可以开始做备份。
/opt/gitlab/bin/gitlab-rake gitlab:backup:create
备份完成后,档案就会自动复制到gcp storage bucket 去,档案名字会类似”TIMESTAMP_gitlab_backup.tar”这样的格式。接下来只要开启公开连结功能,就可以从新server 上下载了。
Restore
新机器安装完gitlab 后,先做gitlab-ctl reconfigure,然后启动gitlab (必须要在gitlab 运行状况下才能restore),在把当中的unicorn 与sidekiq 两个服务先暂时关闭,然后把下载下来的备份档案搬去在gitlab.rb 档案中设定的gitlab_rails['backup_path'] 里头,然后开始restore。
sudo gitlab-ctl stop unicorn sudo gitlab-ctl stop sidekiq sudo gitlab-rake gitlab:backup:restore BACKUP=<TIMESTAMP> #注意只要备份档案的timestamp 部分就好,不用加上_gitlab_backup.tar
接下来就是漫长的restore 过程(有同事把build 出来的binary file 都丢上去了,只能无言面对40 GB 的漫长restore),除了中间会有几次询问是不是要overwrite 现有的gitlab 之外,就只能等了。
Restore后做检查
gitlab-ctl reconfigure gitlab-ctl start sudo gitlab-rake gitlab:check SANITIZE=true
喔,对了,这个一行的checkout all remote branch 也蛮好用的。
for remote in `git branch -r`; do git branch --track ${remote#origin/} $remote; done
Original link: Phanix's Blog
喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!