如果我使用 gitlab:backup:create 进行 GitLab 备份rake 任务就像有人推送到存储库一样,备份过程会受到影响吗?
在做备份之前是否有必要关闭 GitLab?
最佳答案
任务 gitlab/backup.rake
本身看起来不是原子的。
它调用:
Rake::Task["gitlab:backup:db:create"].invoke
Rake::Task["gitlab:backup:repo:create"].invoke
That uses gem
activerecord
: 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, ...
因此,转储数据库的部分现在更加原子化;)
但是备份本身,它涉及其他步骤,包括备份裸存储库,不是原子的。
关于GitLab:备份 rake 任务是原子的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15825735/