gitlab 日常运维命令
2018-10-24
gitlab查看版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
查看gitlab服务状态命令
gitlab-ctl status
启动、停止服务
# 启动Gitlab所有组件 sudo gitlab-ctl start # 停止Gitlab所有组件 sudo gitlab-ctl stop # 重启Gitlab所有组件 sudo gitlab-ctl restart
备份与恢复
备份配置
配置文件再/etc/gitlab/ 下面,将所有的配置用tar备份即可
[root@localhost init.d]# cd /etc/gitlab/ [root@localhost gitlab]# ls gitlab.rb gitlab-secrets.json trusted-certs
备份数据
Gitlab的备份目录路径设置
[root@code-server ~]# vim /etc/gitlab/gitlab.rb gitlab_rails['manage_backup_path'] = true gitlab_rails['backup_path'] = "/data/gitlab/backups" //gitlab备份目录 gitlab_rails[ //生成的备份文件权限 gitlab_rails[ //备份保留天数为3个月(即90天,这里是7776000秒) [root@code-server ~]# mkdir -p /data/gitlab/backups [root@code-server ~]# chown -R git.git /data/gitlab/backups [root@code-server ~]# chmod -R /data/gitlab/backups 如上设置了gitlab备份目录路径为/data/gitlab/backups,最后使用下面命令重载gitlab配置文件,是上述修改生效! root@code-server ~]# gitlab-ctl reconfigure
GItlab备份操作(使用备份命令"gitlab-rake gitlab:backup:create")
手动备份gitlab [root@code-server backups]# gitlab-rake gitlab:backup:create Dumping database ... Dumping PostgreSQL database gitlabhq_production ... [DONE] done Dumping repositories ... * treesign/treesign ... [DONE] * gateway/gateway ... [DONE] * treesign/treesign-doc ... [SKIPPED] * qwsign/qwsign ... [DONE] * qwsign/qwsign-doc ... [DONE] * test/test ... [DONE] done Dumping uploads ... done Dumping builds ... done Dumping artifacts ... done Dumping pages ... done Dumping lfs objects ... done Dumping container registry images ... [DISABLED] Creating backup archive: 1510471890_2017_11_12_9..5_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 ... done. ( removed) 然后查看下备份文件(文件权限是设定好的644) [root@code-server backups]# ll total -rw-r--r-- git git Nov : 1510472027_2017_11_12_9..5_gitlab_backup.tar 编写备份脚本,结合crontab实施自动定时备份,比如每天0点、6点、12点、18点各备份一次 [root@code-server backups]# pwd /data/gitlab/backups [root@code-server backups]# vim gitlab_backup.sh #!/bin/bash /usr/bin/gitlab-rake gitlab:backup:create CRON= 注意:环境变量CRON=1的作用是如果没有任何错误发生时, 抑制备份脚本的所有进度输出 [root@code-server backups]# crontab -l ,,, * * * /bin/bash -x /data/gitlab/backups/gitlab_backup.sh > /dev/>&
3)Gitlab恢复操作
GItlab只能还原到与备份文件相同的gitlab版本。 假设在上面gitlab备份之前创建了test项目,然后不小心误删了test项目,现在就进行gitlab恢复操作: )停止相关数据连接服务 [root@code-server backups]# gitlab-ctl stop unicorn ok: down: unicorn: 0s, normally up [root@code-server backups]# gitlab-ctl stop sidekiq ok: down: sidekiq: 1s, normally up [root@code-server backups]# gitlab-ctl status run: gitaly: (pid ) 1883s; run: log: (pid ) 163003s run: gitlab-monitor: (pid ) 1883s; run: log: (pid ) 163002s run: gitlab-workhorse: (pid ) 1882s; run: log: (pid ) 163002s run: logrotate: (pid ) 1882s; run: log: (pid ) 160832s run: nginx: (pid ) 1881s; run: log: (pid ) 163002s run: node-exporter: (pid ) 1881s; run: log: (pid ) 163002s run: postgres-exporter: (pid ) 1881s; run: log: (pid ) 163003s run: postgresql: (pid ) 1880s; run: log: (pid ) 163002s run: prometheus: (pid ) 1880s; run: log: (pid ) 163002s run: redis: (pid ) 1879s; run: log: (pid ) 163002s run: redis-exporter: (pid ) 1879s; run: log: (pid ) 163003s down: sidekiq: 8s, normally up; run: log: (pid ) 163001s down: unicorn: 21s, normally up; run: log: (pid ) 163001s )现在通过之前的备份文件进行恢复(必须要备份文件放到备份路径下,这里备份路径我自定义的/data/gitlab/backups,默认的是/var/opt/gitlab/backups) [root@code-server backups]# pwd /data/gitlab/backups [root@code-server backups]# ll total -rw-r--r-- git git Nov : 1510472027_2017_11_12_9..5_gitlab_backup.tar Gitlab的恢复操作会先将当前所有的数据清空,然后再根据备份数据进行恢复 [root@code-server backups]# gitlab-rake gitlab:backup:restore BACKUP=1510472027_2017_11_12_9.4.5 Unpacking backup ... done Before restoring the database we recommend removing all existing tables to avoid future upgrade problems. Be aware that if you have custom tables in the GitLab database these tables and all data will be removed. Do you want to continue (yes/no)? ........ ALTER TABLE ALTER TABLE ALTER TABLE ALTER TABLE WARNING: no privileges were granted for "public" GRANT [DONE] done Restoring repositories ... * treesign/treesign ... [DONE] * gateway/gateway ... [DONE] * treesign/treesign-doc ... [DONE] * qwsign/qwsign ... [DONE] * qwsign/qwsign-doc ... [DONE] * test/test ... [DONE] Put GitLab hooks in repositories dirs [DONE] done Restoring uploads ... done Restoring builds ... done Restoring artifacts ... done Restoring pages ... done Restoring lfs objects ... done This will rebuild an authorized_keys file. You will lose any data stored in authorized_keys file. Do you want to continue (yes/no)? yes Deleting tmp directories ... done done done done done done done done [root@code-server backups]# 最后再次启动Gitlab [root@code-server backups]# gitlab-ctl start ok: run: gitaly: (pid ) 2138s ok: run: gitlab-monitor: (pid ) 2138s ok: run: gitlab-workhorse: (pid ) 2137s ok: run: logrotate: (pid ) 2137s ok: run: nginx: (pid ) 2136s ok: run: node-exporter: (pid ) 2136s ok: run: postgres-exporter: (pid ) 2136s ok: run: postgresql: (pid ) 2135s ok: run: prometheus: (pid ) 2135s ok: run: redis: (pid ) 2134s ok: run: redis-exporter: (pid ) 2134s ok: run: sidekiq: (pid ) 0s ok: run: unicorn: (pid ) 1s [root@code-server backups]# gitlab-ctl status run: gitaly: (pid ) 2142s; run: log: (pid ) 163262s run: gitlab-monitor: (pid ) 2142s; run: log: (pid ) 163261s run: gitlab-workhorse: (pid ) 2141s; run: log: (pid ) 163261s run: logrotate: (pid ) 2141s; run: log: (pid ) 161091s run: nginx: (pid ) 2140s; run: log: (pid ) 163261s run: node-exporter: (pid ) 2140s; run: log: (pid ) 163261s run: postgres-exporter: (pid ) 2140s; run: log: (pid ) 163262s run: postgresql: (pid ) 2139s; run: log: (pid ) 163261s run: prometheus: (pid ) 2139s; run: log: (pid ) 163261s run: redis: (pid ) 2138s; run: log: (pid ) 163261s run: redis-exporter: (pid ) 2138s; run: log: (pid ) 163262s run: sidekiq: (pid ) 4s; run: log: (pid ) 163260s run: unicorn: (pid ) 4s; run: log: (pid ) 163260s 恢复命令完成后,可以check检查一下恢复情况 [root@code-server backups]# gitlab-rake gitlab:check SANITIZE=true Checking GitLab Shell ... GitLab Shell version >= ? ... OK () Repo base directory exists? default... yes Repo storage directories are symlinks? default... no Repo paths owned by git:root, or git:git? default... yes Repo paths access is drwxrws---? default... yes hooks directories in repos are links: ... / ... ok / ... ok / ... repository is empty / ... ok / ... ok Running /opt/gitlab/embedded/service/gitlab-shell/bin/check Check GitLab API access: OK Access to /var/opt/gitlab/.ssh/authorized_keys: OK Send ping to redis server: OK gitlab-shell self-check successful Checking GitLab Shell ... Finished Checking Sidekiq ... Running? ... yes Number of Sidekiq processes ... Checking Sidekiq ... Finished Checking Reply by email ... Reply by email is disabled in config/gitlab.yml Checking Reply by email ... Finished Checking LDAP ... LDAP is disabled in config/gitlab.yml Checking LDAP ... Finished Checking GitLab ... Git configured correctly? ... yes Database config exists? ... yes All migrations up? ... yes Database contains orphaned GroupMembers? ... no GitLab config exists? ... yes GitLab config up to date? ... yes Log directory writable? ... yes Tmp directory writable? ... yes Uploads directory exists? ... yes Uploads directory has correct permissions? ... yes Uploads directory tmp has correct permissions? ... yes Init script exists? ... skipped (omnibus-gitlab has no init script) Init script up-to-date? ... skipped (omnibus-gitlab has no init script) Projects have namespace: ... / ... yes / ... yes / ... yes / ... yes / ... yes Redis version >= ? ... yes Ruby version >= ? ... yes () Git version >= ? ... yes () Active users: ... Checking GitLab ... Finished 然后稍等一会(如果启动gitlab后,访问出现500,这是因为redis等程序还没完全启动,等一会儿访问就ok了),再次登录Gitlab,就会发现之前误删除的test项目已经恢复了! 另外:Gitlab迁移与恢复一样,但是要求两个GitLab版本号一致
GItlab只能还原到与备份文件相同的gitlab版本。假设在上面gitlab备份之前创建了test项目,然后不小心误删了test项目,现在就进行gitlab恢复操作: 1)停止相关数据连接服务[root@code-server backups]# gitlab-ctl stop unicornok: down: unicorn: 0s, normally up[root@code-server backups]# gitlab-ctl stop sidekiqok: down: sidekiq: 1s, normally up[root@code-server backups]# gitlab-ctl statusrun: gitaly: (pid 98087) 1883s; run: log: (pid 194202) 163003srun: gitlab-monitor: (pid 98101) 1883s; run: log: (pid 194363) 163002srun: gitlab-workhorse: (pid 98104) 1882s; run: log: (pid 194362) 163002srun: logrotate: (pid 98117) 1882s; run: log: (pid 5793) 160832srun: nginx: (pid 98123) 1881s; run: log: (pid 194359) 163002srun: node-exporter: (pid 98167) 1881s; run: log: (pid 194360) 163002srun: postgres-exporter: (pid 98173) 1881s; run: log: (pid 194204) 163003srun: postgresql: (pid 98179) 1880s; run: log: (pid 194365) 163002srun: prometheus: (pid 98187) 1880s; run: log: (pid 194364) 163002srun: redis: (pid 98230) 1879s; run: log: (pid 194358) 163002srun: redis-exporter: (pid 98234) 1879s; run: log: (pid 194208) 163003sdown: sidekiq: 8s, normally up; run: log: (pid 194437) 163001sdown: unicorn: 21s, normally up; run: log: (pid 194443) 163001s 2)现在通过之前的备份文件进行恢复(必须要备份文件放到备份路径下,这里备份路径我自定义的/data/gitlab/backups,默认的是/var/opt/gitlab/backups)[root@code-server backups]# pwd/data/gitlab/backups[root@code-server backups]# lltotal 244-rw-r--r-- 1 git git 245760 Nov 12 15:33 1510472027_2017_11_12_9.4.5_gitlab_backup.tar Gitlab的恢复操作会先将当前所有的数据清空,然后再根据备份数据进行恢复[root@code-server backups]# gitlab-rake gitlab:backup:restore BACKUP=1510472027_2017_11_12_9.4.5Unpacking backup ... doneBefore restoring the database we recommend removing all existingtables to avoid future upgrade problems. Be aware that if you havecustom tables in the GitLab database these tables and all data will beremoved. Do you want to continue (yes/no)?........ALTER TABLEALTER TABLEALTER TABLEALTER TABLEWARNING: no privileges were granted for "public"GRANT[DONE]doneRestoring repositories ... * treesign/treesign ... [DONE] * gateway/gateway ... [DONE] * treesign/treesign-doc ... [DONE] * qwsign/qwsign ... [DONE] * qwsign/qwsign-doc ... [DONE] * test/test ... [DONE]Put GitLab hooks in repositories dirs [DONE]doneRestoring uploads ...doneRestoring builds ...doneRestoring artifacts ...doneRestoring pages ...doneRestoring lfs objects ...doneThis will rebuild an authorized_keys file.You will lose any data stored in authorized_keys file.Do you want to continue (yes/no)? yes Deleting tmp directories ... donedonedonedonedonedonedonedone[root@code-server backups]# 最后再次启动Gitlab[root@code-server backups]# gitlab-ctl startok: run: gitaly: (pid 98087) 2138sok: run: gitlab-monitor: (pid 98101) 2138sok: run: gitlab-workhorse: (pid 98104) 2137sok: run: logrotate: (pid 98117) 2137sok: run: nginx: (pid 98123) 2136sok: run: node-exporter: (pid 98167) 2136sok: run: postgres-exporter: (pid 98173) 2136sok: run: postgresql: (pid 98179) 2135sok: run: prometheus: (pid 98187) 2135sok: run: redis: (pid 98230) 2134sok: run: redis-exporter: (pid 98234) 2134sok: run: sidekiq: (pid 104494) 0sok: run: unicorn: (pid 104497) 1s[root@code-server backups]# gitlab-ctl statusrun: gitaly: (pid 98087) 2142s; run: log: (pid 194202) 163262srun: gitlab-monitor: (pid 98101) 2142s; run: log: (pid 194363) 163261srun: gitlab-workhorse: (pid 98104) 2141s; run: log: (pid 194362) 163261srun: logrotate: (pid 98117) 2141s; run: log: (pid 5793) 161091srun: nginx: (pid 98123) 2140s; run: log: (pid 194359) 163261srun: node-exporter: (pid 98167) 2140s; run: log: (pid 194360) 163261srun: postgres-exporter: (pid 98173) 2140s; run: log: (pid 194204) 163262srun: postgresql: (pid 98179) 2139s; run: log: (pid 194365) 163261srun: prometheus: (pid 98187) 2139s; run: log: (pid 194364) 163261srun: redis: (pid 98230) 2138s; run: log: (pid 194358) 163261srun: redis-exporter: (pid 98234) 2138s; run: log: (pid 194208) 163262srun: sidekiq: (pid 104494) 4s; run: log: (pid 194437) 163260srun: unicorn: (pid 104497) 4s; run: log: (pid 194443) 163260s恢复命令完成后,可以check检查一下恢复情况[root@code-server backups]# gitlab-rake gitlab:check SANITIZE=trueChecking GitLab Shell ...GitLab Shell version >= 5.3.1 ? ... OK (5.3.1)Repo base directory exists?default... yesRepo storage directories are symlinks?default... noRepo paths owned by git:root, or git:git?default... yesRepo paths access is drwxrws---?default... yeshooks directories in repos are links: ...5/1 ... ok6/2 ... ok5/3 ... repository is empty12/4 ... ok12/5 ... okRunning /opt/gitlab/embedded/service/gitlab-shell/bin/checkCheck GitLab API access: OKAccess to /var/opt/gitlab/.ssh/authorized_keys: OKSend ping to redis server: OKgitlab-shell self-check successfulChecking GitLab Shell ... FinishedChecking Sidekiq ...Running? ... yesNumber of Sidekiq processes ... 1Checking Sidekiq ... FinishedChecking Reply by email ...Reply by email is disabled in config/gitlab.ymlChecking Reply by email ... FinishedChecking LDAP ...LDAP is disabled in config/gitlab.ymlChecking LDAP ... FinishedChecking GitLab ...Git configured correctly? ... yesDatabase config exists? ... yesAll migrations up? ... yesDatabase contains orphaned GroupMembers? ... noGitLab config exists? ... yesGitLab config up to date? ... yesLog directory writable? ... yesTmp directory writable? ... yesUploads directory exists? ... yesUploads directory has correct permissions? ... yesUploads directory tmp has correct permissions? ... yesInit script exists? ... skipped (omnibus-gitlab has no init script)Init script up-to-date? ... skipped (omnibus-gitlab has no init script)Projects have namespace: ...5/1 ... yes6/2 ... yes5/3 ... yes12/4 ... yes12/5 ... yesRedis version >= 2.8.0? ... yesRuby version >= 2.3.3 ? ... yes (2.3.3)Git version >= 2.7.3 ? ... yes (2.13.4)Active users: ... 11Checking GitLab ... Finished 然后稍等一会(如果启动gitlab后,访问出现500,这是因为redis等程序还没完全启动,等一会儿访问就ok了),再次登录Gitlab,就会发现之前误删除的test项目已经恢复了! 另外:Gitlab迁移与恢复一样,但是要求两个GitLab版本号一致gitlab 日常运维命令的更多相关文章
- hadoop记录-hadoop集群日常运维命令
hadoop集群日常运维命令 #1.namenode hadoop namenode -format #格式化,慎用 su hdfs hadoop-daemon.sh start namenode h ...
- Docker Swarm 日常运维命令笔记
之前介绍了Docker管理工具-Swarm部署记录,这里简单总结下Docker Swarm的日常维护命令,以作为平时运维笔记. Swarm作为一个管理Docker集群的工具,首先需要将其部署起来,可以 ...
- ogg日常运维命令
1.查看历史记录.快捷执行历史中的一条命令 GGSCI (11g) 32> h 23: view param exta24: info all25: lag exta.... GGSCI (11 ...
- AIX—日常运维命令总结
1. 查看AIX服务器的物理构造信息,包括服务器网络配置信息 # prtconf # ifconfig -a # lsattr -E -l mem0 :查看系统内存大小 # netstat -in : ...
- Jenkins日常运维笔记-重启数据覆盖问题、迁移、基于java代码发版(maven构建)
之前在公司机房部署了一套jenkins环境,现需要迁移至IDC机房服务器上,迁移过程中记录了一些细节:1)jenkins默认的主目录放在当前用户家目录路径下的.jenkins目录中.如jenkins使 ...
- hadoop日常运维与升级总结
日常运维 升级 问题处理方法 日常运维 进程管理 由于配置文件的更改,需要重启生效, 或者是进程自己因某种致命原因终止, 或者发现进程工作出现异常等情况下,需要进行手动进程的关闭或启动, 或者是增删节 ...
- zookeeper 用法和日常运维
本文以ZooKeeper3.4.3版本的官方指南为基础:http://zookeeper.apache.org/doc/r3.4.3/zookeeperAdmin.html,补充一些作者运维实践中的要 ...
- 关于总结一些CentOS7常用的运维命令
Centos7日常需要用的运维命令 1.删除0字节文件 find-type f -size 0 -exec rm -rf {} \ 2.查看进程 按内存从大到小排列 ps -e -o " ...
- DB2常用运维命令
DB2是IBM公司推出关系型数据库管理系统.主要应用于银行.医院等大型机构.现今DB2主要包含以下三个系列:DB2 for Linux, UNIX and Windows(LUW) . DB2在Lin ...
随机推荐
- UOJ#46. 【清华集训2014】玄学
传送门 分析 清华集训真的不是人做的啊嘤嘤嘤 我们可以考虑按操作时间把每个操作存进线段树里 如果现在点x正好使一个整块区间的右端点则更新代表这个区间的点 我们不难发现一个区间会因为不同的操作被分成若干 ...
- jqgrid常用操作
.jqgrid控件列在需要的地方加上edittable=true <asp:JQGrid runat=" DataUrl="/ccr/CcrCompanyPromoterMa ...
- python,itertools模块
itertools模块的使用: # coding=utf-8 """ itertools模块 """ import itertools im ...
- (回溯法)ip地址的合理性
题目: 给定一个只包含数字的字符串,通过返回所有可能有效的IP地址组合来恢复它. 例如: 给定“”, return [“255.255.11.135”,“255.255.111.35”]. (顺序无所 ...
- datebox 和 datetimebox 添加『清空』按钮
需要引入 easyui-lang-zh_CN.js $(document).ready(function(){ var d_buttons = $.extend([], $.fn.datebox.de ...
- 小学四则运算生成器(Java) 刘少允,梁新男
github传送门 项目相关要求 使用 -n 参数控制生成题目的个数.(实现) 使用 -r 参数控制题目中数值(自然数.真分数和真分数分母)的范围.(实现) 生成的题目中计算过程不能产生负数.(实现) ...
- PHP 去掉emoji字符
function isMatchEmoji($str) { $pattern='/./u'; $rs=preg_match_all($pattern,$str,$match); if($rs>0 ...
- Mac php7本地安装mongodb扩展以适配使用mongo扩展的线上老代码
从https://pecl.php.net/package/mongodb官网下载压缩包(不懂事的我下载了1.5.1版本) 解压安装包 tar -zxvf mongodb-1.5.1.tgz 进入解压 ...
- Python第二周总结
之所以晚发10天是因为中途发生了很多事情,让我比较懵,甚至都想放弃学Python,但自己选择的路,在艰难也得走下去,加油!!! 补充上期str后缀小魔法: 字符串一旦创建不得修改,一旦修改或拼接,就会 ...
- React基础篇(2) -- state&props&refs
内容简介 state props refs 行内样式及动态类名 state 基本介绍 React 把组件看成是一个状态机(State Machines).通过与用户的交互,实现不同状态,然后渲染 UI ...