当询问Gitlab支持如何在本地Gitlab上进行3TB备份时,他们会使用我们的产生压缩包的工具进行答复。
这在所有层面上都对我来说是错误的。这个压缩包包含postgres转储,docker映像,回购数据,GIT LFS等配置。备份TB的静态数据以及KB的非常动态的数据不会正确。接下来是我们要每小时备份一次的问题。
题
我真的很想从别人那里知道他们是如何做到的,以获得一致的备份。
如果这是解决方案的一部分,那么Linux上的ZFS对我来说会很好。
当询问Gitlab支持如何在本地Gitlab上进行3TB备份时,他们会使用我们的产生压缩包的工具进行答复。
这在所有层面上都对我来说是错误的。这个压缩包包含postgres转储,docker映像,回购数据,GIT LFS等配置。备份TB的静态数据以及KB的非常动态的数据不会正确。接下来是我们要每小时备份一次的问题。
题
我真的很想从别人那里知道他们是如何做到的,以获得一致的备份。
如果这是解决方案的一部分,那么Linux上的ZFS对我来说会很好。
Answers:
对于两次备份之间的如此短的时间(1h),最好的选择是依靠文件系统级快照和 send/recv
支持。
如果在您的环境中使用ZoL不是问题,我强烈建议您使用它。ZFS是一个非常强大的文件系统,您将非常喜欢它提供的所有其他功能(例如:压缩)。与结合使用时sanoid/syncoid
,它可以提供非常强大的备份策略。主要缺点是它不包含在主线内核中,因此您需要单独安装/更新它。
另外,如果您确实需要限制自己使用包含主线的内容,则可以使用BTRFS。但是一定要了解它的(许多)缺点和皮塔饼。
最后,另一种解决方案是使用lvmthin
采取定期备份(如:带snapper
),依靠第三方工具(如:bdsync
,blocksync
等)只复制/船增量。
一种不同的方法是拥有两个复制的计算机(通过DRBD
),您可以通过这些计算机获取独立的快照lvmthin
。
我会查看您要备份的内容,并可能使用“多路径”方法。例如,您可以通过在备份服务器上不断运行Git pull来备份Git存储库。那将仅复制diff,并为您提供所有Git存储库的第二个副本。大概您可以使用API检测到新的存储库。
并使用“内置”备份过程来备份问题,等等。我怀疑3TB是否来自这一部分,因此您将能够以很少的成本进行很多备份。您也可以使用热备份和复制来设置PostgreSQL数据库。
您的3TB可能来自Docker注册表中的容器映像。您需要备份吗?如果是这样,那么可能会有一个更好的方法。
基本上,我建议您真正查看组成备份的内容以及备份各个部分的数据。
甚至连GitLab的备份工具都具有用于包括/排除系统某些部分(例如Docker Registry)的选项。
git push --force
会中断备份或从备份中删除历史记录,具体取决于备份文件的实现方式。