2013-04-05 27 views
6

如果我使用gitlab:backup:create rake任务创建GitLab备份,就像有人推送到存储库一样,备份过程是否会受到影响?GitLab:备份耙子任务是否为原子?

在进行备份之前是否需要关闭GitLab?

+0

对于结束选票感到抱歉:主持人通常做的很好,但在这种情况下,他们完全错了(并且不知道gitlab是什么)。这是关于堆栈溢出主题的100%的问题。 – VonC 2013-04-05 08:22:23

+0

GitLab的最新提交显示了更多的原子操作。看到我编辑的答案。 – VonC 2013-04-05 17:48:35

+0

一目了然,这个问题绝对看起来偏离主题或措辞不佳,但实际上通过它阅读(和gitlab标签摘要),它似乎完美的主题。这是一个开发工具及其使用。添加一个重新打开的投票。 – ssube 2013-04-05 17:57:43

回答

4

任务gitlab/backup.rake本身看起来不是原子的。
它要求:

Rake::Task["gitlab:backup:db:create"].invoke 
    Rake::Task["gitlab:backup:repo:create"].invoke 

That usesgem activerecord

puts "Dumping database tables ... ".blue 
    ActiveRecord::Base.connection.tables.each do |tbl| 
    ... 

像用ActiveRecord其他操作(见this question),它似乎并没有成为一个全球性的原子操作。


坚持不住了,几个小时前,randx (Dmitriy Zaporozhets),主要开发商GitLab,只是重构了转储数据库:

因此,倾销数据库的部分现在更加原子化了)
但是涉及其他步骤的备份本身(包括备份裸回购)不是原子性的。

+0

回购自己使用'git bundle'备份,所以它们应该也是安全的。上传是简单的文件和一次写入,因此应该没有问题。数据库可能不完全与回购和文件同步,但不会以导致数据丢失的方式进行。总而言之,在GitLab运行时进行备份看起来完全安全,即使它不是原子的。 – 2014-05-22 09:37:15

+0

@SørenLøvborg我同意。 – VonC 2014-05-22 09:42:12