InfoGrab DocsInfoGrab Docs

배치 백그라운드 마이그레이션

GitLab의 배치 백그라운드 마이그레이션(BBM) 프레임워크 사용 방법, 실행 메커니즘, 관리 명령어, 모범 사례를 설명합니다.

배치 백그라운드 마이그레이션(Batched background migration)은 마이그레이션이 가이드라인의 시간 제한 을 초과할 때마다 데이터 마이그레이션을 수행하는 데 사용해야 합니다. 예를 들어 배치 백그라운드 마이그레이션을 사용하면 단일 JSON 칼럼에 저장된 데이터를 별도의 테이블로 옮길 수 있습니다. Note 배치 백그라운드 마이그레이션은 기존 백그라운드 마이그레이션 프레임워크를 대체했습니다. 해당 프레임워크와 관련된 변경 사항은 이전 문서를 확인합니다. 배치 백그라운드 마이그레이션 프레임워크는 ChatOps를 지원합니다. ChatOps를 사용하면 GitLab 엔지니어가 시스템에 존재하는 배치 백그라운드 마이그레이션과 상호작용할 수 있습니다. 배치 백그라운드 마이그레이션 사용 시점 # 행이 매우 많은 테이블의 데이터를 마이그레이션할 때, 일반 Rails 마이그레이션으로 수행하면 그 과정이 가이드라인의 시간 제한 을 초과하는 경우에 배치 백그라운드 마이그레이션을 사용합니다. 트래픽이 많은 테이블 의 데이터를 마이그레이션할 때는 배치 백그라운드 마이그레이션을 사용해야 합니다. 대규모 데이터셋의 모든 항목에 대해 단일 행 쿼리를 다수 실행할 때도 배치 백그라운드 마이그레이션을 사용할 수 있습니다. 일반적으로 단일 레코드 패턴에서는 실행 시간이 데이터셋의 크기에 크게 좌우됩니다. 데이터셋을 적절히 나누어 백그라운드 마이그레이션에 넣습니다. 스키마 마이그레이션을 수행하는 데 배치 백그라운드 마이그레이션을 사용하지 않습니다. 백그라운드 마이그레이션은 다음과 같은 경우에 도움이 됩니다. 하나의 테이블에 있는 이벤트를 여러 개의 별도 테이블로 마이그레이션하는 경우 다른 칼럼에 저장된 JSON을 기반으로 한 칼럼을 채우는 경우 외부 서비스(예: API)의 출력에 의존하는 데이터를 마이그레이션하는 경우 참고 사항 # 배치 백그라운드 마이그레이션이 중요한 업그레이드의 일부라면 릴리스 포스트에 공지해야 합니다. 마이그레이션이 이 범주에 해당하는지 확실하지 않으면 프로젝트 매니저와 논의합니다. 중요한 마이그레이션에는 업그레이드 노트 를 추가해야 합니다. 이는 GitLab Self-Managed 및 Dedicated 고객이 업그레이드를 계획하는 데 도움이 되며, 가이드라인 을 따릅니다. 필요한 파일이 기본으로 생성되도록 생성기 를 사용해 배치 백그라운드 마이그레이션을 만드는 것이 좋습니다. 배치 백그라운드 마이그레이션 작동 방식 # 배치 백그라운드 마이그레이션(BBM)은 perform 메서드를 정의하는 Gitlab::BackgroundMigration::BatchedMigrationJob 의 하위 클래스입니다. 첫 단계에서 일반 마이그레이션이 BBM 클래스와 필수 인수를 담은 batched_background_migrations 레코드를 생성합니다. 기본적으로 batched_background_migrations 는 active 상태이며, 이 레코드를 Sidekiq 워커가 가져가 실제 일괄 마이그레이션을 실행합니다. 모든 마이그레이션 클래스는 Git