백그라운드 마이그레이션 문제 해결
Offering: GitLab Self-Managed
GitLab 버전 14.2 이상으로 업데이트할 때 데이터베이스 마이그레이션이 다음과 같은 메시지와 함께 실패할 수 있습니다: 롤백하고 필요한 업그레이드 경로를 따르려면: 롤 포워드 프로세스는 다운타임이 필요한지 여부에 따라 다릅니다.
완료되지 않은 배치 백그라운드 마이그레이션으로 인한 데이터베이스 마이그레이션 실패#
GitLab 버전 14.2 이상으로 업데이트할 때 데이터베이스 마이그레이션이 다음과 같은 메시지와 함께 실패할 수 있습니다:
StandardError: An error has occurred, all later migrations canceled:
Expected batched background migration for the given configuration to be marked as 'finished', but it is 'active':
{:job_class_name=>"CopyColumnUsingBackgroundMigrationJob",
:table_name=>"push_event_payloads",
:column_name=>"event_id",
:job_arguments=>[["event_id"],
["event_id_convert_to_bigint"]]
}
이 오류를 해결하려면:
- 14.2에 대한 버전별 업그레이드 지침을 따랐다면 배치 백그라운드 마이그레이션을 수동으로 완료합니다.
- 해당 지침을 따르지 않았다면 다음 중 하나를 수행해야 합니다:
- 14.2+로 업데이트하기 전에 필요한 버전 중 하나를 통해 롤백하고 업그레이드합니다.
- 롤 포워드하여 현재 버전을 유지하면서 배치 마이그레이션이 성공적으로 완료되도록 수동으로 확인합니다.
롤백하고 필요한 업그레이드 경로 따르기#
롤백하고 필요한 업그레이드 경로를 따르려면:
- 이전에 설치된 버전으로 롤백하고 복원합니다.
- 14.2+로 업데이트하기 전에 14.0.5 또는 14.1로 업데이트합니다.
- 배치 백그라운드 마이그레이션의 상태를 확인하고 다시 업그레이드를 시도하기 전에 모두 완료됨으로 표시되어 있는지 확인합니다. 활성 상태로 표시된 것이 남아 있으면 수동으로 완료합니다.
롤 포워드하고 업그레이드된 버전에서 마이그레이션 완료#
롤 포워드 프로세스는 다운타임이 필요한지 여부에 따라 다릅니다.
다운타임이 있는 배포의 경우#
모든 배치 백그라운드 마이그레이션을 실행하는 데 GitLab 설치 규모에 따라 상당한 시간이 걸릴 수 있습니다.
-
데이터베이스에서 배치 백그라운드 마이그레이션의 상태를 확인하고 상태 쿼리가 행을 반환하지 않을 때까지 적절한 인수로 수동으로 실행합니다.
-
모든 마이그레이션 상태가 완료로 표시되면 설치에 대한 마이그레이션을 다시 실행합니다.
-
GitLab 업그레이드에서 데이터베이스 마이그레이션을 완료합니다:
sudo gitlab-rake db:migrate -
재구성을 실행합니다:
sudo gitlab-ctl reconfigure -
설치에 대한 업그레이드를 완료합니다.
다운타임 없는 배포의 경우#
실패하는 마이그레이션은 포스트 배포 마이그레이션이므로 업그레이드된 버전의 실행 중인 인스턴스에서 계속 유지하면서 배치 백그라운드 마이그레이션이 완료될 때까지 기다릴 수 있습니다.
- 오류 메시지에서 배치 백그라운드 마이그레이션의 상태를 확인하고 완료됨으로 나열되어 있는지 확인합니다. 마이그레이션이 여전히 활성 상태인 경우:
- 완료될 때까지 기다립니다.
- 수동으로 완료합니다.
- 나머지 포스트 배포 마이그레이션이 완료될 수 있도록 설치에 대한 마이그레이션을 다시 실행합니다.
고급 검색 마이그레이션이 중단됨#
GitLab 15.0에서 DeleteOrphanedCommit이라는 고급 검색 마이그레이션이 업그레이드 전반에 걸쳐 보류 중인 상태로 영구적으로 중단될 수 있습니다. 이 이슈는
GitLab 15.1에서 수정되었습니다.
고급 검색을 사용하는 GitLab 15.0의 GitLab Self-Managed 고객이라면 성능 저하를 경험할 것입니다. 마이그레이션을 정리하려면 15.1 이상으로 업그레이드합니다.
다른 고급 검색 마이그레이션이 보류 중인 문제로 중단된 경우 중단된 마이그레이션을 다시 시도합니다.
보류 중인 고급 검색 마이그레이션이 모두 완료되기 전에 GitLab을 업그레이드하면 새 버전에서 제거된 보류 중인 마이그레이션은 실행하거나 다시 시도할 수 없습니다. 이 경우 인덱스를 처음부터 다시 생성해야 합니다.
오류: Elasticsearch version not compatible#
Elasticsearch 또는 OpenSearch 버전이 GitLab과 호환되지 않는 경우 데이터 손실을 방지하기 위해 인덱싱이 일시 중지되고 이 메시지가 elasticsearch.log에 기록됩니다.
이 문제를 해결하려면 Elasticsearch 또는 OpenSearch 버전이 GitLab과 호환되는지 확인합니다.
호환되는 버전을 사용 중이라면 인덱싱을 재개합니다.
