公司更換了新的服務器,需要把原先的gitlab遷移到新的服務器上。
1.遷移准備工作和思路:從a服務器遷移到b服務器,由於Gitlab自身的兼容性問題,高版本的Gitlab無法恢復低版本備份的數據,需要注意在b服務器部署和a服務器一樣版本的gitlab,部署好環境后開始備份和數據遷移.
關於gitlab服務器部署請參考我的 另一遍文章:http://www.cnblogs.com/wenwei-blog/p/5861450.html
查看gitlab版本的命令:
gitlab-rake gitlab:env:info
2. 備份原a服務器上的的數據
gitlab-rake gitlab:backup:create RAILS_ENV=production
PS: 備份后的文件一般是位於/var/opt/gitlab/backups下, 自動生成文件名文件名如1481529483_gitlab_backup.tar
3. 將步驟2生成的tar文件拷貝到b服務器上相應的backups目錄下
可以利用scp進行直接拷貝.
scp username@src_ip:/var/opt/gitlab/backups/1481529483_gitlab_backup.tar /var/opt/gitlab/backups
PS: username為原服務器的用戶名,src_ip原服務器IP地址
4. 在b服務器恢復數據
gitlab-rake gitlab:backup:restore RAILS_ENV=production BACKUP=1481529483
PS:BACKUP的時間點必須與原服務器備份后的文件名一致
5.出錯解決:
數據遷移到后檢查登錄gialab有時候會跳出500報錯(Something went wrong on our end.)以及無法正常新建用戶
查看日志:tail -f /var/log/gitlab/redis/current
Can't save in background: fork: Cannot allocate memory
解決方案
修改/etc/sysctl.conf
加上vm.overcommit_memory = 1, Linux內核會根據參數vm.overcommit_memory參數的設置決定是否放行。
修改完執行sysctl -p
vm.overcommit_memory = 1 #直接放行
vm.overcommit_memory = 0 #則比較 此次請求分配的虛擬內存大小和系統當前空閑的物理內存加上swap,決定是否放行。
vm.overcommit_memory = 2 #則會比較進程所有已分配的虛擬內存加上此次請求分配的虛擬內