【问题标题】:GitLab: Is the backup rake task atomic?GitLab:备份 rake 任务是原子的吗?
【发布时间】:2013-04-05 04:05:04
【问题描述】:

如果我在有人推送到存储库时使用gitlab:backup:create rake 任务进行 GitLab 备份,备份过程会受到影响吗?

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

【问题讨论】:

  • 很抱歉最后的投票:版主通常做得很好,但在这种情况下,他们完全错了(并且不知道 gitlab 是什么)。这是关于 Stack Overflow 主题的 100% 问题。
  • GitLab 的最新提交现在展示了更多的原子操作。请参阅我编辑的答案。
  • 乍一看,这个问题肯定看起来离题或措辞不佳,但实际上通读它(以及 gitlab 标签摘要),它似乎完全符合主题。它是一个开发者工具及其使用。添加重新投票。

标签: gitlab


【解决方案1】:

任务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 的主要开发人员,刚刚重构了转储数据库:

所以转储数据库的部分现在更加原子;)
但是备份本身,包括备份裸仓库在内的其他步骤,并不是原子的。

【讨论】:

  • repos 本身是使用git bundle 备份的,因此它们也应该是安全的。上传是简单的文件并且只写一次,所以那里也不应该有问题。数据库可能与存储库和文件不完全同步,但不会导致数据丢失。总而言之,在 GitLab 运行时进行备份看起来完全安全,即使它不是原子的。
  • @SørenLøvborg 我同意。
猜你喜欢
  • 1970-01-01
  • 2010-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-05
  • 1970-01-01
  • 2011-02-11
  • 1970-01-01
相关资源
最近更新 更多