gitlab的升级【二】旧数据的备份和新数据的恢复
? ? gitab的升級的前置條件就是已經安裝好了和舊的gitab服務器相同版本的Omnibus gitlab。source源碼安裝的gitlab升級到最新的gitlab的Omnibus版本,操作步驟是:
? ? 1.source源碼安裝的gitlab更改成相同版本的Omnibus版本的gitlab。
? ? ? source源碼安裝的gitlab的版本是gitlab 7.14.3;MySQL是5.6。
? ? 2.Omnibus版本的gitlab升級到最新版本。
? ? ? 下載最新版本的gitlab的CE的rpm包,然后直接yum localinstall安裝即可。
一.舊服務器,source源碼安裝的gitlab的備份。
? ? 1.關閉gitlab服務
? ? ? ? ?su - git
? ? ? ? ?sudo /etc/init.d/gitlab stop
? ? 2.備份最新的數據
? ? ? ? su - git
? ? ? ? cd /home/git/gitlab/
? ? ? ??sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production
? ? ? ? #上述命令執行完成之后會在gitlab下的tmp/backup/目錄下面獲取一個前綴是時間戳的tar.gz壓縮文件,這個文件就是備份了數據庫信息已經git倉庫,wiki信息。
? ? 3.備份數據庫,以postgresql的格式備份出來
? ? ? ??mysqldump --compatible=postgresql --default-character-set=utf8 -r gitlabhq_production.mysql -u gitlab gitlabhq_production -p
? ? 4.mysql轉postgresql。
? ? ? ? a).下載mysql轉postgresql的工具集
? ? ? ? ? ? git clone https://github.com/gitlabhq/mysql-postgresql-converter.git -b gitlab
? ? ? ? b).mysql的sql語句轉換成postgresql的sql語句
? ? ? ? ? ? python mysql-postgresql-converter/db_converter.py gitlabhq_production.mysql db/database.sql
? ? ? ? #因為備份之后的壓縮文件解壓之后,mysql的sql文件是放在一個db目錄下面的database.sql文件,之所以創建db目錄就是因為為了替換壓縮文件里面的db/database.sql文件
? ? ? ? c).轉儲
? ? ? ? ? ??ed -s db/database.sql < mysql-postgresql-converter/move_drop_indexes.ed
? ? ? ? #上述命令的執行需要在python2.7或者以上的環境才能夠執行
? ? ? ? d).替換壓縮文件中的db/database.sql
? ? ? ? ? ? gzip db/database.sql
? ? ? ? ? ??tar rf 1448859844_gitlab_backup.tar db/database.sql.gz
二.新服務器的恢復
? ? 1.安裝好Omnibus gitlab 7.14.3
? ? 2.拷貝備份到新服務器的備份目錄
? ? ? ? scp?1448859844_gitlab_backup.tar root@new_gitlab:/home/gitlab/git-data/backup
? ? 3.更改壓縮文件權限
? ? ? ? chown git?1448859844_gitlab_backup.tar
? ? 4.恢復備份 ? ? ? ?
? ? ? ? sudo gitlab-ctl stop unicorn
? ? ? ? sudo gitlab-ctl stop sidekiq
? ? ? ? LC_ALL="en_US.UTF-8" sudo gitlab-rake gitlab:backup:restore BACKUP=1448859844
? ? ? ? #加上這個變量,否則執行到gitlab:shell:setup重新生成authorized_keys時會報錯
? ? 5.更改git倉庫權限信息
? ? ? ? sudo chmod -R ug+rwX,o-rwx /var/opt/gitlab/git-data/repositories
? ? ? ? sudo chmod -R ug-s /var/opt/gitlab/git-data/repositories
? ? ? ? find /var/opt/gitlab/git-data/repositories -type d -print0 | sudo xargs -0 chmod g+s
? ? 6.恢復git和項目信息
? ? ? ??sudo gitlab-rake gitlab:satellites:create RAILS_ENV=production
? ? 7.啟動gitlab
? ? ? ??sudo gitlab-ctl start
? ? 8.gitab檢測
? ? ? ??sudo gitlab-rake gitlab:check
三.新服務局升級到最新版本的gitlab
? ? yum localinstall gitlab-ce.*.rpm
? ? #yum安裝會自動升級和清除原來舊版本的gitlab信息
? ??
當執行rpm進行升級時Gitlab會自動執行以下命令:
1. 關閉gitlab服務。
2. 使用當前的舊版本Gitlab創建備份(輕量級備份,僅備份數據庫)
3. 運行gitlab-ctl reconfigure,進行必要的數據庫更新遷移。
4. 重新啟動Gitlab服務。
四.更改配置文件信息:
? ? 1.更改gitlab的倉庫文件目錄。
? ? ? ? cd /etc/gitlab/
? ? ? ? vi gitlab.rb
? ? ? ??
? ? ? ? # git_data_dir "/var/opt/gitlab/git-data" ?
? ? ? ? git_data_dir "/home/gitlab/git-data"
? ? 2.更改gitlab的backup倉庫 ? ? ?
? ? ? ? # gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
? ? ? ? gitlab_rails['backup_path'] = "/home/gitlab/backups"
? ? 3.更改捆綁的Nginx的主配置文件nginx.conf信息
? ? ? ??nginx['custom_nginx_config'] = "include /var/opt/gitlab/*.conf;"
? ? 4.更改捆綁的Nginx的子配置文件gitlab-http.conf文件信息
? ? ? ??nginx['custom_gitlab_server_config'] = " location = /wiki { \n return 301 ?http://git.moumentei.com/other/wiki/wikis/home; \n}\n"
? ? 5.使用公司內部的SMTP郵件服務器 ?
? ? ? ? gitlab_rails['smtp_enable'] = true
? ? ? ? gitlab_rails['smtp_address'] = "smtp.server"
? ? ? ? gitlab_rails['smtp_port'] = 25
? ? ? ? gitlab_rails['smtp_authentication'] = false
? ? ? ? gitlab_rails['smtp_enable_starttls_auto'] = false
? ? ? ? gitlab_rails['gitlab_email_from'] = 'xxx@xxxx.com'
? ? ? ? gitlab_rails['gitlab_email_display_name'] = 'Gitlab'
#所有在/etc/gitlab/gitlab.rb配置文件里面的修改都需要執行gitlab-ctl reconfigure,重新讀取配置文件信息。
升級完成之后,若是在web見面創建項目失敗,可以執行以下命令,清除緩存信息
? ??sudo gitlab-rake cache:clear
五.關于hosts和known_hosts映射問題。
? ? 因為更換了新的gitlab服務器,所以之前所有基于git-clone過的服務器在重新提交或者拉去的時候會報錯,提示Host key verification failed.需要在knwon_hosts文件里面把包含舊的服務器信息的公鑰刪除,在重新ssh一次。
? ??
轉載于:https://blog.51cto.com/11819159/1916589
總結
以上是生活随笔為你收集整理的gitlab的升级【二】旧数据的备份和新数据的恢复的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信公众号开发之网页授权认证获取用户的详
- 下一篇: JS window对象的top、pare