gitlab实时备份方案(非官方命令)

gitlab自带的备份功能做不到实时备份,为了尽可能减少意外情况导致的丢失数据,自己搞了一个实时备份的功能。

备份的大头主要是两部分,数据库和代码库。数据库由DBA配置主备。

仓库经过测试,通过lsyncd同步repo仓库是可行的。lsyncd封装了inotify & rsync,会比使用inotify好用许多。

 

lsyncd的使用:

安装 yum install -y lsyncd

使用 lsyncd -log Execxxx.conf

xxx.conf 配置文件:

settings {
    logfile      ="/var/log/lsyncd/lsyncd.log",
    statusFile   ="/var/log/lsyncd/lsyncd.status",
    inotifyMode  = "CloseWrite",  #inotify监控的时间
    maxProcesses = 10,  #同时最大起的rsync进程数,一个rsync同步一个文件
    }
 
sync {
    default.rsync,
    source    = "$GITLAB_REPO_PATH", #源目录,路径使用绝对路径
    target    = "$USER@$BACKUP_IP_ADDRESS:$GITLAB_REPO_PATH", #目标目录
    maxDelays = 50,  #统计到多少次监控事件即开始一次同步
    delay = 60,           #若60s内未出发50次监控事件,则每60s同步一次
   delete = true,  #rsync 是否启用--delete
    rsync     = {
        binary ="/usr/bin/rsync",  #rsync可执行文件
        archive = true,  #保持文件所有属性
        compress = true,  #压缩传输,是否开启取决于带宽及cpu
        bwlimit   =5000  #限速 kb/s
        -- rsh ="/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no" #可指定端口
        }
    }


由于仓库文件数量通常较多,往往需要修改inotify的监控数量上限

/etc/sysct.conf: fs.inotify.max_user_watches=xxxxx

打通源机器到备份机器的ssh端口,然后启动lsyncd

 

数据库备库设置为只读,这样备机其实可以一直开着,在主机发生问题时,通过dns/lvs直接切换。


lsyncd配置部分参考文章:https://segmentfault.com/a/1190000002737213

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值