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同步一次
de

本文介绍了如何使用lsyncd结合inotify实现gitlab仓库的实时备份,以确保在数据库由DBA处理主备同步的情况下,减少意外导致的数据丢失。lsyncd配置包括设置监控模式、同步参数和限制,同时调整inotify的最大监控数量,并确保备份服务器的SSH访问权限。通过这种方式,可以在主服务器出现问题时快速通过DNS/LVS切换到只读的备用数据库。
最低0.47元/天 解锁文章
1568

被折叠的 条评论
为什么被折叠?



