gitlab是个内存老虎, 在使用32G无力内存的服务器中, 在默认配置下一直吃满内存, 甚至在使用过程中经常出现各种5xx错误, 然后一看剩余内存就仅剩几百兆...... 然后经过摸索, 终于把内存占用控制在16G左右(吹牛逼了,32G最少了)修改的配置文件内容如下:
[root@gitlab ~]# vi /etc/gitlab/gitlab.rb
进入配置文件,按Go ,然后直接粘贴进去,保存退出。
[root@gitlab ~]# gitlab-ctl reconfigure && gitlab-ctl restart(并且在前面命令执行成功的情况下,再次执行一个动作,连起来叫生效配置文件,且进行gitlab的重启)
生产环境中最少64g,经过调优后最少给到32g,上不封顶,不吃cpu,存代码完成基本的操作,cpu差不多也按基本的配置16核64G.
gitlab的备份是运维的责任。
首先,gitlab的备份很简单,只需要在gitlab的配置文件中设定一下我们的备份目录,以及备份保存的时间。
如果想恢复,停掉两个进程,然后再去进行备份的一个恢复,把它启动起来就好了。总体的操作流程比较简单。但要明确gitlab什么时候备份,备份多少次?以及备份正常设定的保存时间是多少?
备份时间周期: 30天---60天 因为害怕公司源代码的丢失
备份在gitlab里也称之为迁移,相同版本的gitlab之间可以相互恢复其备份的这些库以及表等等一系列的东西。也就是说我们在A机器的gitlab进行了一次备份到达B机器之后也同样能进行恢复,前提必须保持gitlab的版本是一致的,但是gitlab版本又分为主版本,次版本和修订版本。(我们要保持的是大版本一致)次版本和修订版本不要太多的关注。
由于我们只是备份里面的源代码,一般情况下是不会丢的,代码的安全性还是比较高的,我们要关注一下备份的周期和时长。30-60天之间都是合理的。
[root@gitlab ~]# cd /etc/gitlab/
[root@gitlab gitlab]# vim gitlab.rb 修改配置文件
备份的目录
备份的保存时间,默认情况下,一周也可以,但是每次备份的时长规定在30d-60d。
保存的时长是30天(最少了),而备份的周期已经确定了要多长时间备份一次,那每次保留一个备份也可以,当然在一个月中间出现了,gitlab的代码丢失了,同事那边也没有代码怎么办?
一、可以建立两个gitlab 第一个gitlab专门搞程序员推送上去的代码 第二个让它时刻同步生产上用的gitlab。时刻同步的方式可以给它设定成每一天晚上两三点的时候让它先备份再把备份传到另一台gitlab里,让他在恢复。
可以写一个脚本,脚本里的内容:先运行备份命令,会生成目录,把目录传到对应的机器中,再到对应的机器中去执行远程的命令,让它恢复回去,这就可以避免掉这一个月中间,突然某一天代码全丢了,这种情况的一个发生。正常来说这种情况一般不会遇到,因为它只存储我们公司内部的项目,虽然多,但也不是每一个项目每时每刻都在活动的,不像github,gitlab构建在公司内部,还是比较稳定,只要机器配置给足就OK了。再其次gitlab里真正存的仓库文件,就是一堆文件,不涉及什么数据更改,把gitlab那张磁盘保留住,把磁盘挂到其他磁盘上去运行起来也可以。解决方法比较多,不用担心它真的会丢,有很多种方法能找回来。
挂磁盘是一种,去实时同步是一种,把线上生产环境的代码拉回来也是一种。甚至用一个共享存储也可以,比如上传代码到了gitlab里面,运维再写一个脚本,同步过来的代码再给他同步到ftp上也可以。
【注意】在做任何操作时,一定要备份,稳妥。(包括修改文件时,cp一份)
改完配置文件之后,保存退出,重新将配置文件生效。
[root@gitlab gitlab]# gitlab-ctl reconfigure
对配置生效之后,如果没有报错就重启gitlab里面的一些服务
[root@gitlab gitlab]# gitlab-ctl restart
重启完成之后,去查看一下所有服务是不是启动
[root@gitlab gitlab]# gitlab-ctl status
确定没有问题,去gitlab的空间里看到有项目。如果是502应该是里边服务启动速度比较慢。
再回到gitlab的服务器,使用gitlab的命令对我们的服务进行一个备份操作
[root@gitlab gitlab]# gitlab-rake gitlab:backup:create 创建一个备份(固定的命令)
备份完成,中间这是警告,警告你的配置文件和对应的json文件是没有进行相关的备份,想备份的话自己手动的备份。
备份的配置文件是在 /var/opt/gitlab/创建的backups目录,稍等就去对应的目录找到它的备份文件就可以了。
上图,是刚刚所创建出的备份文件。选中的就是它的一个版本号后面是它的后缀。在备份恢复的时候就直接添版本号就行了。
备份生成了,到gitlab界面中,将项目删掉。
项目空了。然后恢复它。
先停服务,因为这两个服务可能会破坏gitlab里的一些东西,就像冷备份mysql数据库一样,需要数据库停掉,同一个意思。
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
这两个服务停掉之后,我们就可以对gitlab进行恢复了。
执行恢复gitlab仓库 BACKUP要大写
[root@gitlab backups]# gitlab-rake gitlab:backup:restore BACKUP=1667504495_2022_11_03_15.5.2
继续,正在移除表,ctrl+c终止 不用管,报错是数据库的报错,不重要
echo $? 看看状态返回码是不是0,如果是0就说明没问题。
由于停了两个服务,要去看一下里面服务的运行状态,
它停掉了,把它开启。
[root@gitlab backups]# gitlab-ctl start sidekiq
[root@gitlab backups]# gitlab-ctl status unicorn
unicorn,因为写了调优选项,调优选项把它禁掉了(不用管它),查看状态的时候里边有宕掉的进程,把它开启来就行了。
开启之后回到gitlab的界面刷新一下。
看见项目又回来了,这就是gitlab里面进行备份和恢复的一个过程。以及怎么样设置它备份的时间和保留的时间,这两个要对应起来。这就是gitlab的备份。
【注意】少熬夜,多看书。