如果我使用gitlab:backup:create rake任务创建GitLab备份,就像有人推送到存储库一样,备份过程是否会受到影响?GitLab:备份耙子任务是否为原子?
在进行备份之前是否需要关闭GitLab?
如果我使用gitlab:backup:create rake任务创建GitLab备份,就像有人推送到存储库一样,备份过程是否会受到影响?GitLab:备份耙子任务是否为原子?
在进行备份之前是否需要关闭GitLab?
任务gitlab/backup.rake
本身看起来不是原子的。
它要求:
Rake::Task["gitlab:backup:db:create"].invoke
Rake::Task["gitlab:backup:repo:create"].invoke
puts "Dumping database tables ... ".blue
ActiveRecord::Base.connection.tables.each do |tbl|
...
像用ActiveRecord其他操作(见this question),它似乎并没有成为一个全球性的原子操作。
坚持不住了,几个小时前,randx (Dmitriy Zaporozhets),主要开发商GitLab,只是重构了转储数据库:
mysqldump
的:system("mysqldump #{mysql_args} #{config['database']} > #{db_file_name}")
GRANT SELECT, LOCK TABLES, ...
因此,倾销数据库的部分现在更加原子化了)
但是涉及其他步骤的备份本身(包括备份裸回购)不是原子性的。
回购自己使用'git bundle'备份,所以它们应该也是安全的。上传是简单的文件和一次写入,因此应该没有问题。数据库可能不完全与回购和文件同步,但不会以导致数据丢失的方式进行。总而言之,在GitLab运行时进行备份看起来完全安全,即使它不是原子的。 – 2014-05-22 09:37:15
@SørenLøvborg我同意。 – VonC 2014-05-22 09:42:12
对于结束选票感到抱歉:主持人通常做的很好,但在这种情况下,他们完全错了(并且不知道gitlab是什么)。这是关于堆栈溢出主题的100%的问题。 – VonC 2013-04-05 08:22:23
GitLab的最新提交显示了更多的原子操作。看到我编辑的答案。 – VonC 2013-04-05 17:48:35
一目了然,这个问题绝对看起来偏离主题或措辞不佳,但实际上通过它阅读(和gitlab标签摘要),它似乎完美的主题。这是一个开发工具及其使用。添加一个重新打开的投票。 – ssube 2013-04-05 17:57:43