如何移动Git存储库并最大限度地减少停机时间

时间:2010-08-30 14:25:55

标签: git downtime

我将Git存储库从旧的SCM服务器移动到新的SCM服务器。我的主要关注点(当然除了保真度)是最小化停机时间。这是我的计划:

  1. 在新计算机上,使用git clone --mirror
  2. 克隆每个存储库
  3. 复制每个存储库的repo hook
  4. 禁止访问旧服务器(我们使用gitosis,因此删除除新服务器以外的所有用户的访问权限)
  5. 移动DNS条目,以便DNS别名Git用户使用
  6. 对新服务器上的每个存储库执行git pull
  7. 对于新服务器上的每个存储库,编辑配置文件以删除remote "origin"部分。
  8. 开启对新服务器的访问
  9. 问题:

    1. 这看起来不错吗?我特别关注第6步。
    2. 有什么方法可以减少停机时间吗?
    3. 感谢。

1 个答案:

答案 0 :(得分:1)

我会(如果旧服务器和新服务器之间没有通信):

  • 捆绑每个仓库using git bundle
  • 在新服务器上复制捆绑包
  • 创建裸回购
  • git fetch来自每个空裸仓库中的那些捆绑(没有来源设置)
  • 复制悬停钩子
  • 禁止访问旧服务器
  • 在每个repo上创建最后一个git包(增量包,非常快)
  • 复制那些小包
  • git fetch小增量包的增量
    < /停机时间:没有要移除的原因>
  • 恢复访问权限

如果新服务器和旧服务器之间可以进行通信(通过SSL):

  • 我会创建一个特殊的“迁移”gitosis用户,所有项目都可以访问
  • clone --bare新服务器上的每个项目
  • 复制悬停钩子
  • 禁止访问旧服务器
  • 在每个克隆的repo上制作最后一个git fetch
  • 删除原产地 < / downtime>
  • 恢复访问权限