데이터베이스 필수 업그레이드 중단점
GitLab v19.1이 페이지에서는 어떤 데이터베이스 변경이 GitLab 업그레이드 중단점을 필요로 하는지 설명합니다. 필수 중단점은 이제 마이너 버전 X.2, X.5, X.8, X.11에 일관되게 적용됩니다. 마이그레이션이 오랜 시간 걸리면, 업그레이드 중에 다수의 고객이 타임아웃을 겪을 수 있습니다.
이 페이지에서는 어떤 데이터베이스 변경이 GitLab 업그레이드 중단점을 필요로 하는지 설명합니다. 원인에 대한 포괄적인 목록이 필요하다면 필수 중단점의 원인을 참조하세요.
필수 중단점은 이제 마이너 버전 X.2, X.5, X.8, X.11에 일관되게 적용됩니다. 이는 사용자에게 예측 가능한 업그레이드 경로를 보장하기 위함입니다. 중단점을 필요로 하는 데이터베이스 변경은 이 릴리스를 활용할 수 있습니다. 아래 지침은 필수 업그레이드 중단점을 추가하는 데 사용됩니다.
중단점이 필요한 일반적인 데이터베이스 변경#
오랫동안 실행되는 마이그레이션 완료 처리#
마이그레이션이 오랜 시간 걸리면, 업그레이드 중에 다수의 고객이 타임아웃을 겪을 수 있습니다. 지원 요청이 급증하면 필수 중단점을 도입해야 할 수 있습니다. 특히 규모가 큰 고객에게는 어떤 백그라운드 마이그레이션도 이러한 문제를 일으킬 수 있지만, 일반적으로 영향이 광범위할 때만 중단점을 도입합니다.
-
원인: 업그레이드에 한 시간 이상 걸리면 Omnibus가 타임아웃됩니다.
-
완화 방법: 다음 필수 중단점 이후의 첫 번째 마이너 버전에 완료 처리를 예약하세요. 다음 필수 중단점까지 기다림으로써, 필수 중단점 사이를 이동하는 고객이 백그라운드에서 마이그레이션을 실행할 기회를 갖게 되어 서비스가 계속 운영될 수 있도록 합니다. 그렇지 않고 필수 중단점에서 마이그레이션을 완료하면, 이전 필수 중단점에서의 업그레이드 중에 동기식 실행이 강제되어, 마이그레이션 실행 시간이 유지보수 기간을 초과하면 다운타임이 발생할 수 있습니다.
잘못 완료된 백그라운드 마이그레이션#
다음과 같은 경우 완화를 위해 필수 중단점을 도입해야 할 수 있습니다:
-
백그라운드 마이그레이션이 완료되지 않았고,
-
해당 백그라운드 마이그레이션에 의존하는 마이그레이션이 작성된 경우.
-
원인: 백그라운드 마이그레이션이 완료되지 않으면 의존 마이그레이션이 실패할 수 있습니다.
-
완화 방법: 의존 마이그레이션을 작성하기 전에 모든 백그라운드 마이그레이션이 완료되었는지 확인하세요.
마이그레이션 제거#
마이그레이션이 제거되면, 고객이 필요한 변경 사항을 놓치지 않도록 필수 중단점을 도입해야 할 수 있습니다.
-
원인: 필수 마이그레이션이 제거되어 의존 마이그레이션이 실패하거나 애플리케이션이 제대로 동작하지 않을 수 있습니다.
-
완화 방법: 마이그레이션이 계획된 필수 중단점의 일부가 된 이후에만 제거하도록 하세요.
마이그레이션 타임스탬프가 매우 오래된 경우#
마이그레이션 타임스탬프가 매우 오래된 경우(3주 이상이거나 마지막 중단점 이전인 경우), 다음과 같은 상황이 문제를 일으킬 수 있습니다:
-
마이그레이션이 더 새로운 타임스탬프를 가졌지만 이전 필수 중단점 이후의 이전 릴리스에서 도입된 다른 마이그레이션에 의존하는 경우, 새 마이그레이션이 선행 마이그레이션보다 먼저 순차적으로 실행되어 실패할 수 있습니다.
-
마이그레이션 타임스탬프 ID가 마지막 중단점 이전인 경우, 팀이 필수 중단점의 다른 마이그레이션을 스쿼시할 때 의도치 않게 스쿼시될 수 있습니다.
-
원인: 마이그레이션이 이전 버전에서 도입된 더 늦은 타임스탬프의 마이그레이션에 의존하는 경우 실패할 수 있습니다. 또는, 필수 중단점 이후에 의도치 않게 스쿼시될 수 있습니다.
-
완화 방법: 마이그레이션 타임스탬프가 릴리스 날짜 범위 내에 있도록 하고, 마지막 필수 중단점 이전 날짜로 설정되지 않도록 하세요.
마이그레이션 관련 도구의 버그#
일부 상황에서는 마이그레이션 관련 도구의 버그로 인해 중단점을 도입해야 했습니다. 테스트에서 이를 방지하려 노력하지만 때로는 발생하기도 합니다.
-
원인: 너무 늦게 인식한 몇 가지 다른 원인이 있었습니다.
-
완화 방법: 일반적으로 마이그레이션에 대한 수정 사항을 백포트하려 시도하지만, 경우에 따라서는 불가능할 수 있습니다.
필수 중단점 추가#
위의 시나리오 중 하나에 해당하는 변경 사항을 도입할 계획이라면, 필수 중단점 추가를 참조하세요.