2013-04-05 62 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