如何大规模备份Gitlab?


13

当询问Gitlab支持如何在本地Gitlab上进行3TB备份时,他们会使用我们的产生压缩包的工具进行答复。

这在所有层面上都对我来说是错误的。这个压缩包包含postgres转储,docker映像,回购数据,GIT LFS等配置。备份TB的静态数据以及KB的非常动态的数据不会正确。接下来是我们要每小时备份一次的问题。

我真的很想从别人那里知道他们是如何做到的,以获得一致的备份。

如果这是解决方案的一部分,那么Linux上的ZFS对我来说会很好。


3
为什么会这样呢?您完全备份了Gitlab,以完全还原它。我不认为这是错误的。当然,它使用的空间比增量备份要多得多,但是...我不在乎备份的大小。
Lenniey

3
每小时都有备份并不是闻所未闻的,但是采用这种方法不可能在不到一小时的时间内制作3TB的数据。一天的备份量约为100TB,其中数据更改可能只有10MB。
Sandra

好的,这是一个不同的问题,与一般备份无关,而与频繁备份有关。
Lenniey

5
他们甚至在官方文档中提到他们的方法很慢,并提出了其他选择:不过,If your GitLab server contains a lot of Git repository data you may find the GitLab backup script to be too slow. In this case you can consider using filesystem snapshots as part of your backup strategy.我不能凭经验说。但是我可能很快就要包括这样的内容……
Lenniey

Gitlab在配置文件中具有选项和备份标志,这些标志使您可以排除部分,甚至可以将图像和工件存储在对象存储中
ssube

Answers:


10

对于两次备份之间的如此短的时间(1h),最好的选择是依靠文件系统级快照 send/recv支持。

如果在您的环境中使用ZoL不是问题,我强烈建议您使用它。ZFS是一个非常强大的文件系统,您将非常喜欢它提供的所有其他功能(例如:压缩)。与结合使用时sanoid/syncoid,它可以提供非常强大的备份策略。主要缺点是它不包含在主线内核中,因此您需要单独安装/更新它。

另外,如果您确实需要限制自己使用包含主线的内容,则可以使用BTRFS。但是一定要了解它的(许多)缺点和皮塔饼

最后,另一种解决方案是使用lvmthin采取定期备份(如:带snapper),依靠第三方工具(如:bdsyncblocksync等)只复制/船增量。

一种不同的方法是拥有两个复制的计算机(通过DRBD),您可以通过这些计算机获取独立的快照lvmthin


那么postgres呢?是否要停止gitlab和postgres一分钟,以便做出一致的快照?理想情况下,如果在制作快照时将postgres置于只读模式,那就太好了。
桑德拉(Sandra)

4
从文件系统快照还原@Sandra应该在postgresql(以及任何其他正确编写的数据库)中看起来像是一般的“主机崩溃”场景,从而触发了自己的恢复过程(即:将任何部分编写的页面提交给主数据库)。换句话说,拍摄快照时无需将postgres置于只读模式。
shodanshok

14

我会查看您要备份的内容,并可能使用“多路径”方法。例如,您可以通过在备份服务器上不断运行Git pull来备份Git存储库。那将仅复制diff,并为您提供所有Git存储库的第二个副本。大概您可以使用API​​检测到新的存储库。

并使用“内置”备份过程来备份问题,等等。我怀疑3TB是否来自这一部分,因此您将能够以很少的成本进行很多备份。您也可以使用热备份和复制来设置PostgreSQL数据库。

您的3TB可能来自Docker注册表中的容器映像。您需要备份吗?如果是这样,那么可能会有一个更好的方法。

基本上,我建议您真正查看组成备份的内容以及备份各个部分的数据。

甚至连GitLab的备份工具都具有用于包括/排除系统某些部分(例如Docker Registry)的选项。


1
git pulls不是完美的增量备份。git push --force会中断备份或从备份中删除历史记录,具体取决于备份文件的实现方式。
user371366 '19

@ dn3s这就是为什么您总是在主存储库上禁用git push --force的原因。如果有人想改变历史,他们可以自己制造叉子,并接受它带来的所有风险。
charlie_pl

2
这对于复制可能很好,但是您不希望备份的完整性依赖正确的应用程序行为。如果应用程序中有错误,或者配置错误,会发生什么?如果您的服务器被恶意用户攻陷怎么办?如果您的应用程序能够从备份主机中删除内容,则增量远程备份的大部分价值都将丢失。
user371366
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.