InfoGrab DocsInfoGrab Docs

마이그레이션 스쿼싱

데이터베이스 마이그레이션 여러 개를 단일 스키마 정의로 결합하는 마이그레이션 스쿼싱의 자동화 및 수동 실행 방법을 설명합니다.

마이그레이션 스쿼싱 # 히스토리 GitLab 16.3에서 도입됨 . GitLab 18.9에서 자동화됨 . 마이그레이션 스쿼싱은 여러 데이터베이스 마이그레이션을 단일 스키마 정의로 결합하여 데이터베이스 설정 성능을 향상시키고 관리 가능한 마이그레이션 히스토리를 유지합니다. 자동화 # 마이그레이션 스쿼싱은 GitLab Housekeeper 를 통해 자동화됩니다. Keeps::SquashMigrations keep은 예정된 마일스톤에서 자동으로 머지 리퀘스트를 생성합니다. 자동화는 Engineering Productivity 팀의 CI 구성에 있는 예약된 파이프라인 job 을 통해 실행됩니다. 스케줄 # 스쿼싱은 .2 , .5 , .8 , .11 로 끝나는 마일스톤에서 발생합니다. 이는 필수 중지점 과 일치합니다. 타깃 브랜치는 현재 마일스톤보다 두 개의 필수 중지점 이전입니다: 현재 마일스톤 스쿼싱 대상 X.2 (X-1).8 X.5 (X-1).11 X.8 X.2 X.11 X.5 예를 들어, 18.8 필수 중지점에서 마이그레이션은 origin/18-2-stable-ee 까지 스쿼싱됩니다. 수동 실행 # 이전 버전(예: 16.10)에서 수동으로 마이그레이션을 스쿼싱하려면 다음을 실행하세요: bundle exec rake "gitlab:db:squash[origin/16-10-stable-ee]" 이 Rake 태스크는 다음을 수행합니다: 이전 버전의 모든 마이그레이션을 제거합니다 스쿼싱된 스키마로 db/init_structure.sql 을 업데이트합니다 관련 파일의 스키마 버전 참조를 업데이트합니다 연관된 마이그레이션 스펙 및 RuboCop TODO를 제거합니다 완료된 배치 백그라운드 마이그레이션을 정리합니다 파라미터 # 파라미터 설명 [origin/16-10-stable-ee] 마이그레이션 스쿼싱의 기준선으로 사용할 Git 참조. 타깃 버전의 안정 브랜치여야 합니다. 문제 해결 # 누락된 스키마 참조 # 누락된 스키마 참조와 관련된 오류가 발생하면 다음을 확인하세요: 이전 마이그레이션을 참조할 수 있는 마이그레이션 스펙 파일 수동 업데이트가 필요할 수 있는 백그라운드 마이그레이션 파일 특정 마이그레이션 버전을 참조하는 문서 관련 문서 # 마이그레이션 스타일 가이드 필수 중지점