热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

gitlab自带的备份功能做不到实时备份,为了尽可能减少意外情况导致的丢失数据,自己搞了一个实时备份的功能。备份的大头主要是两部分,数据库和代码库。数据库由DBA配置主备。仓库经过测试,通过lsync

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

 


推荐阅读
  • Windows 环境下安装 Git 并连接 GitHub 的详细步骤
    本文详细介绍了如何在 Windows 系统中安装 Git 工具,并通过配置 SSH 密钥实现与 GitHub 的安全连接。包括下载、安装、环境配置及验证连接等关键步骤。 ... [详细]
  • 交互式左右滑动导航菜单设计
    本文介绍了一种使用HTML和JavaScript实现的左右可点击滑动导航菜单的方法,适用于需要展示多个链接或项目的网页布局。 ... [详细]
  • Java实现文本到图片转换,支持自动换行、字体自定义及图像优化
    本文详细介绍了如何使用Java实现将文本转换为图片的功能,包括自动换行、自定义字体加载、抗锯齿优化以及图片压缩等技术细节。 ... [详细]
  • 本文档详细介绍了在 Kubernetes 集群中部署 ETCD 数据库的过程,包括实验环境的准备、ETCD 证书的生成及配置、以及集群的启动与健康检查等关键步骤。 ... [详细]
  • 本文详细介绍了如何在Ubuntu系统上快速安装和配置Bitnami版本的GitLab,包括下载安装文件、执行安装过程以及设置邮件服务等步骤。 ... [详细]
  • #直接下载jar文件后java-jargerrit-2.14.1.warinit-doptgerrit#安装复制插件unzipgerrit-2.14.1.warssh ... [详细]
  • 在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ... [详细]
  • ElasticSearch 集群监控与优化
    本文详细介绍了如何有效地监控 ElasticSearch 集群,涵盖了关键性能指标、集群健康状况、统计信息以及内存和垃圾回收的监控方法。 ... [详细]
  • 并发编程 12—— 任务取消与关闭 之 shutdownNow 的局限性
    Java并发编程实践目录并发编程01——ThreadLocal并发编程02——ConcurrentHashMap并发编程03——阻塞队列和生产者-消费者模式并发编程04——闭锁Co ... [详细]
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • 精选多款高效实用软件及工具推荐
    本文介绍并推荐多款高效实用的软件和工具,涵盖系统优化、网络加速、多媒体处理等多个领域,并提供安全可靠的下载途径。 ... [详细]
  • 本文深入探讨了JavaScript中实现继承的四种常见方法,包括原型链继承、构造函数继承、组合继承和寄生组合继承。对于正在学习或从事Web前端开发的技术人员来说,理解这些继承模式对于提高代码质量和维护性至关重要。 ... [详细]
  • Django xAdmin 使用指南(第一部分)
    本文介绍如何在Django项目中集成和使用xAdmin,这是一个增强版的管理界面,提供了比Django默认admin更多的功能。文中详细描述了集成步骤及配置方法。 ... [详细]
  • 在Win10上利用VS2015构建Caffe2环境
    本文详细介绍如何在Windows 10操作系统上通过Visual Studio 2015编译Caffe2深度学习框架的过程。包括必要的软件安装、环境配置以及常见问题的解决方法。 ... [详细]
  • 微信小程序实现拍照与图片上传功能
    本文介绍如何在微信小程序中实现用户通过拍照或从相册选择图片,并将图片上传至服务器的功能,包括调用相关API和处理上传响应。 ... [详细]
author-avatar
星罗
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有