데이터베이스 업그레이드 DDL 잠금
데이터베이스 업그레이드 DDL 잠금에 대해 설명합니다.
GitLab.com에서 주요 PostgreSQL 업그레이드 중에는 업그레이드 프로세스와의 충돌을 방지하기 위해 DDL(Data Definition Language) 변경이 일시적으로 차단됩니다. GitLab.com은 서로 다른 주요 버전 간에 데이터를 복제하여 무중단 업그레이드를 구현하기 위해 논리적 복제를 사용합니다. 업그레이드 창 동안 새로운 DDL 변경은 복제를 중단할 수 있습니다. 모든 배포를 차단하는 강력한 PCL(Production Change Lock) 대신, 데이터베이스 스키마 변경이 머지되는 것만 방지하는 타겟화된 잠금을 사용합니다. 이 접근 방식은 GitLab이 다른 변경 사항을 계속 릴리스할 수 있도록 하면서 데이터베이스 업그레이드 프로세스를 스키마 수정으로 인한 중단으로부터 보호합니다. 작동 방식 # DDL 잠금은 config/database_upgrade_ddl_lock.yml 에 구성되며 CI/CD 파이프라인에서 실행되는 Danger 검사에 의해 적용됩니다. 구성에는 다음이 포함됩니다: db/structure.sql 을 수정하는 MR은 Danger에 의해 자동으로 차단됩니다. 잠금이 시작되기 며칠 전에 영향받는 MR에 경고가 표시됩니다. 잠금은 DDL 변경에만 영향을 미칩니다. 다른 변경은 여전히 머지 및 배포될 수 있습니다. 잠금 기간 동안 Danger 검사가 실패하여 MR이 머지되는 것을 방지합니다. DDL 잠금이 활성화된 경우 # 잠금이 구성되어 활성화된 경우: Danger 검사가 실패하여 MR이 머지되는 것을 방지합니다. 잠금 기간과 다음 단계를 설명하는 명확한 오류 메시지가 표시됩니다. MR이 영향받는 경우 해야 할 일 # MR에 DDL 변경이 포함되어 업그레이드 잠금의 영향을 받는 경우: 경고 기간 중 # 여전히 변경 사항을 머지할 수 있습니다. Danger 검사에는 다음을 나타내는 경고 메시지가 표시됩니다: 잠금이 시작될 때까지 남은 일수 잠금 시작 및 종료 날짜 업그레이드에 대한 세부 정보 업그레이드 추적 이슈 링크 잠금이 시작되기 전에 변경 사항을 머지하거나, 잠금이 만료된 후까지 기다리도록 계획을 세우세요. 잠금 기간 중 # 잠금이 만료될 때까지 기다려야 합니다. Danger 검사는 오류 메시지와 함께 실패합니다. 잠금이 끝난 후: CI/CD 파이프라인을 다시 실행합니다. Danger 검사가 자동으로 통과됩니다. 정상적인 MR 프로세스로 진행합니다.
