Help us learn about your current experience with the documentation. Take the survey.
数据库所需的停止
本页面描述哪些数据库变更需要 GitLab 升级停止。如果您想了解全面的停止原因列表,请参阅停止原因。
所需的停止现在将统一出现在 X.2、X.5、X.8 和 X.11 次要版本中。这是为了确保用户有可预测的升级路径。任何需要停止的数据库变更都可以利用这些版本。下面的说明用于添加所需的升级停止。
需要停止的常见数据库变更
长时间运行的迁移完成
如果一个迁移花费很长时间,可能会导致大量客户在升级时遇到超时。增加的支持量可能迫使我们引入所需的停止。虽然任何后台迁移都可能对特别大的客户造成这些问题,但我们通常只在影响广泛时才引入停止。
- 原因:当升级超过一小时时,omnibus 会超时。
- 缓解措施:安排在下一个所需停止后的第一个次要版本中完成。通过等待下一个所需停止,我们确保在所需停止之间跳跃的客户将有机会在后台运行迁移,确保其服务保持运行。否则,在所需停止中完成迁移将强制在从上一个所需停止升级时同步执行,如果迁移运行时间超过维护窗口,将导致停机。
未正确完成的后台迁移
当出现以下情况时,您可能需要引入所需的停止进行缓解:
-
后台迁移未完成,并且
-
编写了一个依赖于该后台迁移的迁移。
-
原因:如果后台迁移未完成,依赖的迁移可能会失败。
-
缓解措施:在编写依赖的迁移之前,确保所有后台迁移都已完成。
删除迁移
如果删除了一个迁移,您可能需要引入所需的停止,以确保客户不会错过所需的变更。
- 原因:因为必需的迁移被删除,依赖的迁移可能会失败,或者应用程序可能无法运行。
- 缓解措施:确保迁移只在它们成为计划中的所需停止的一部分后才被删除。
迁移时间戳非常旧
如果迁移时间戳非常旧(> 3 周,或在最后一次停止之前),这些情况可能会导致问题:
-
如果该迁移依赖于另一个具有较新时间戳的迁移,但该迁移是在所需的停止之后的上一个版本中引入的,那么新的迁移可能会在先决迁移之前顺序运行,从而导致失败。
-
如果迁移时间戳 ID 在最后一次停止之前,当团队压缩来自所需停止的其他迁移时,它可能会被无意中压缩。
-
原因:如果迁移依赖于在早期版本中引入的具有较晚时间戳的迁移,则迁移可能会失败。或者,迁移可能在所需的停止之后被无意中压缩。
-
缓解措施:确保迁移时间戳落在发布日期内,并确保它们不早于最后一次所需的停止。
迁移相关工具中的错误
在某些情况下,迁移相关工具中的错误迫使我们引入停止。虽然我们旨在通过测试防止这些情况,但有时它们仍然会发生。
- 原因:我们曾有过几次因识别过晚而导致的不同原因。
- 缓解措施:通常我们尝试为迁移修复进行回退,但在某些情况下这是不可能的。
添加所需的停止
如果您计划引入属于上述任一场景的变更,请参阅添加所需的停止。