DBAtlas · 데이터베이스 운영 아틀라스

MongoDB rolling upgrade (7.0 → 8.0): replica set 및 sharded cluster

MongoDB난이도: 고급소요 시간: 60–120분 (데이터 크기와 무관, 멤버당 몇 분)

운영 중인 MongoDB 7.0 replica set 또는 sharded cluster를 서비스 중단 없이(rolling) 8.0으로 업그레이드합니다. 사전 점검(버전, FCV, 멤버 상태, 드라이버 호환성), 백업, secondary 먼저, 이어서 stepDown과 기존 primary 순서로 진행하며, sharded cluster에서는 balancer 중지, config server, shard, mongos 순서를 따릅니다. FCV 8.0 전환은 선택 사항으로 burn-in 이후로 미룰 수 있으며, 롤백 방법과 그 한계도 포함합니다. 같은 메이저 버전 안의 패치 업데이트(8.0.x → 8.0.y)는 repo를 바꾸지 않고 같은 멤버 순서를 따릅니다. 6.0에서 올라오는 경우 먼저 7.0으로 업그레이드합니다.

구성: Replica set (멤버 3개 이상) 또는 sharded cluster (config server + shard + mongos)

시작하기 전에

  • 모든 …mongod(config server 및 shard 멤버)와 mongos…멤버…가 7.0.x를 실행 중이며 FCV는 7.0입니다. 6.0에서 올라오는 경우 먼저 7.0으로 업그레이드합니다(메이저 버전은 건너뛸 수 없습니다).
  • ROLLBACK/RECOVERING/STARTUP2 상태인 멤버가 없고, secondary는 primary보다 몇 초 이내로 뒤처져 있습니다.
  • Oplog window가 유지보수 시간(멤버당 중지 시간)보다 훨씬 깁니다(최소 몇 시간). 짧으면 중지했던 멤버가 돌아올 때 initial sync가 필요합니다.
  • 모든 애플리케이션 드라이버가 MongoDB 8.0과 호환되는 버전입니다(드라이버 호환성 표). 오래된 드라이버는 8.0에 접속하지 못하거나 새 동작을 지원하지 않을 수 있습니다.
  • 8.0 호환성 변경 사항 페이지를 확인했고, 사용 중인 기능 중 제거되거나 변경된 것(파라미터, 명령, 쿼리 동작)이 없습니다. 가능하면 테스트 환경에서 업그레이드 리허설을 먼저 했습니다.
  • 최신이며 복원 테스트를 마친 백업(snapshot 또는 mongodump)이 있습니다. 유지보수 시간이 승인되었습니다.
  • 각 멤버의 데이터 디스크와 /var/log에 충분한 여유 공간이 있고, 8.0 repo(repo.mongodb.org)에 접근할 수 있습니다.
  • Config server와 shard 멤버에서 mongod는 mongod systemd 서비스와 /etc/mongod.conf로 실행되며, mongos 서버의 서비스 이름은 …입니다. 각 서버에는 mongod/mongos 프로세스가 하나만 있습니다.
  • 업그레이드 시간 동안 balancer를 중지할 수 있고, 진행 중인 chunk migration, resharding 또는 index build가 없습니다. 유지보수 기간에 shard key / collection 메타데이터 변경은 계획되어 있지 않습니다.

가이드 단계

  • 사전 점검 — 버전, FCV 및 역할 (모든 …mongod…멤버…) · 멤버 상태와 복제 지연 · Cluster 상태, shard 및 balancer · 유효하지 않은 system.buckets collection · 드라이버 및 호환성 점검 · 백업과 롤백 지점 …
  • Repo 변경 (모든 멤버) — 8.0 repo 추가, 7.0 repo 비활성화 · 8.0 repo 추가, 7.0 repo 비활성화
  • Secondary를 하나씩 업그레이드 — Secondary: … primary가 아닌지 확인 후 중지 · Secondary: …에 8.0 바이너리 설치 · Secondary: …의 THP를 8.0에 맞게 설정 · Secondary: … 시작 후 SECONDARY 대기 · Secondary: … primary가 아닌지 확인 후 중지 · Secondary: …에 8.0 바이너리 설치 …
  • Primary stepDown 및 업그레이드 — Secondary가 8.0이며 정상인지 확인 · Primary stepDown · 기존 primary: … primary가 아닌지 확인 후 중지 · 기존 primary: …에 8.0 바이너리 설치 · 기존 primary: …의 THP를 8.0에 맞게 설정 · 기존 primary: … 시작 후 SECONDARY 대기
  • Balancer 중지 — Balancer 중지 및 migration 완료 확인
  • Balancer 활성화 및 버전 확인 — 모든 구성 요소가 8.0인지 확인 · Balancer 다시 활성화
  • 검증 — 모든 멤버가 8.0 · 애플리케이션 및 로그 점검
  • featureCompatibilityVersion 8.0 — FCV를 8.0으로 올리기 · FCV 확인
  • 롤백 (문제가 있을 때만) — 롤백 방법 선택 · 바이너리를 7.0으로 되돌리기: … · 백업에서 복원 · Sharded cluster의 롤백 순서
내 환경에 맞춘 단계별 계획 열기 →