6.0 복제본 세트를 5.0으로 다운그레이드
다운그레이드를 시도하기 전에 이 페이지의 내용을 숙지합니다.
다운그레이드 경로
중요
복제본 세트를 업그레이드하거나 다운그레이드하기 전에 모든 복제본 세트 멤버가 실행 중인지 확인하세요. 그렇지 않으면 모든 구성원이 시작될 때까지 업그레이드 또는 다운그레이드가 완료되지 않습니다.
6.0에서 다운그레이드해야 하는 경우 최신 패치 릴리스인 5.0으로 다운그레이드하세요.
MongoDB는 단일 버전 다운그레이드만 지원합니다. 현재 릴리스보다 이전 버전인 릴리스로 다운그레이드할 수 없습니다.
예를 들어, 6.0 시리즈를 5.0 시리즈 배포로 다운그레이드할 수 있습니다. 하지만 5.0 시리즈 배포를 4.4 시리즈 배포로 한 단계 더 다운그레이드하는 것은 지원되지 않습니다.
액세스 제어
복제본 세트 에 액세스 제어가 활성화되어 있는 경우 다운그레이드 사용자 권한에 데이터베이스 전체에서 인덱스를 나열하고 관리 있는 권한이 포함되어야 합니다. root
역할 을 가진 사용자에게는 필요한 권한이 있습니다.
전제 조건
다운그레이드 절차를 시작하기 전에 다음 사전 필수 단계를 완료해야 합니다.
백업 생성
선택 사항이지만 권장됩니다. 데이터베이스의 백업을 만듭니다.
백업 을 만드는 방법을 학습 보려면 자체 관리 배포서버를 위한 백업 방법을 참조하세요.
이전 버전과 호환되지 않는 기능 제거
6.0에서 5.0으로 다운그레이드하려면 5.0과 호환되지 않는 6.0 기능을 제거해야 합니다. 호환되지 않는 기능 목록과 해당 기능을 제거하는 방법은 다운그레이드 고려 사항을 참조하세요.
기능 호환성 버전(fCV) 다운그레이드
복제본 세트의 fCV 를 다운그레이드하려면 다음을 수행합니다.
초기 동기화가 진행 중이 아닌지 확인합니다. 초기 동기화가 진행 중일 때
setFeatureCompatibilityVersion
명령을 실행하면 초기 동기화가 다시 시작됩니다.복제본 세트 구성 에
newlyAdded
필드가 있는 노드가 없는지 확인합니다. 복제본 세트의 각 노드에서 다음 명령을 실행하여 이를 확인합니다.use local db.system.replset.find( { "members.newlyAdded" : { $exists : true } } ); newlyAdded
필드는 초기 동기화 중과 초기 동기화 직후 노드의 복제본 세트 구성 문서에 나타납니다.ROLLBACK
또는RECOVERING
상태에 있는 복제본 세트 멤버가 없는지 확인합니다.mongosh
를 사용하여 프라이머리 에 연결합니다.featureCompatibilityVersion
을"5.0"
로 다운그레이드합니다.db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } ) setFeatureCompatibilityVersion
명령은 내부 시스템 collection에 대한 쓰기를 수행하며 멱등원입니다. 명령이 성공적으로 완료되지 않으면 프라이머리에서 명령을 다시 시도합니다.복제본 세트의 모든 멤버에 업데이트된
featureCompatibilityVersion
이(가) 있는지 확인하려면 각 복제본 세트 멤버에 연결하여featureCompatibilityVersion
을(를) 확인합니다.db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } ) 모든 멤버는 다음을 포함하는 결과를 반환해야 합니다.
"featureCompatibilityVersion" : { "version" : "5.0" } 멤버가
"6.0"
의featureCompatibilityVersion
를 반환하는 경우 계속하기 전에 멤버가 버전"5.0"
을 반환할 때까지 기다립니다.
반환된 featureCompatibilityVersion
값에 대한 자세한 내용은 FeatureCompatibilityVersion 가져오기를 참조하세요.
다운그레이드 절차
경고
다운그레이드 절차를 진행하기 전에 지연된 복제본 세트 멤버를 포함한 모든 복제본 세트 멤버에게 필수 변경 사항이 있는지 확인하세요. 이렇게 하려면 featureCompatibilityVersion
확인하고 다운그레이드하기 전에 각 노드에 대해 호환되지 않는 기능을 제거합니다.
복제본 세트의 세컨더리 멤버를 다운그레이드합니다.
복제본 세트의 각 세컨더리 멤버를 한 번에 하나씩 다운그레이드합니다.
멤버를 종료합니다.
mongod
프로세스를 종료하려면mongosh
를 사용하여 세컨더리에 연결하고 다음 명령을 실행합니다.db.adminCommand( { shutdown: 1 } ) 멤버를 다시 시작합니다.
mongod
프로세스를 시작하려면 다음 명령을 실행합니다:mongod --dbpath </path-to-data-folder> mongod
프로세스 시작에 대해 자세히 알아보려면mongod
프로세스 시작을 참조하세요.멤버가
SECONDARY
상태가 될 때까지 기다립니다.다음 세컨더리 를 다운그레이드하기 전에 멤버가
SECONDARY
상태 로 복구될 때까지 기다립니다. 멤버의 상태 를 확인하려면 에서rs.status()
메서드를mongosh
사용합니다.멤버가
SECONDARY
단계가 되면 다음 세컨더리를 다운그레이드합니다.
중재자 복제본 세트 구성원(있는 경우)을 다운그레이드합니다.
복제본 세트에 중재자가 포함되어 있지 않으면 이 단계를 건너뛰세요.
복제본 세트의 중재자 멤버를 다운그레이드합니다.
멤버를 종료합니다.
중재자를 종료하려면
mongosh
를 사용하여 중재자에 연결하고 다음 명령을 실행합니다.db.adminCommand( { shutdown: 1 } ) 중재자 데이터 디렉토리의 내용을 삭제합니다.
중재자
mongod
의 데이터 디렉토리를 찾으려면storage.dbPath
구성 설정 또는--dbpath
명령줄 옵션을 확인하세요.다음 명령을 실행합니다:
rm -rf /path/to/mongodb/datafiles/* 중재자를 다시 시작합니다.
mongod
프로세스를 시작하려면 다음 명령을 실행합니다:mongod --dbpath </path-to-mongodb-datafiles> mongod
프로세스 시작에 대해 자세히 알아보려면mongod
프로세스 시작을 참조하세요.멤버가
ARBITER
상태가 될 때까지 기다립니다.프라이머리를 다운그레이드하기 전에 멤버가
ARBITER
상태로 복구될 때까지 기다립니다. 멤버의 상태를 확인하려면 에서rs.status()
메서드를mongosh
사용합니다.
프라이머리를 다운그레이드합니다.
프라이머리을 내려놓습니다.
mongosh
에서rs.stepDown()
를 사용하여 프라이머리를 물러나고 일반적인 페일오버 절차를 강제 실행합니다.rs.stepDown() 프라이머리가 물러났는지 확인합니다.
다음 명령을 실행합니다:
rs.status() 프라이머리가 물러나고 다른 멤버가
PRIMARY
상태를 취했는지 확인합니다.이전 프라이머리
mongod
을(를) 교체하고 다시 시작합니다.멤버를 종료합니다.
프라이머리의 종료를 수행하려면
mongosh
를 사용하여 프라이머리에 연결하고 다음 명령을 실행합니다.db.adminCommand( { shutdown: 1 } ) 5.0 바이너리로
mongod
를 다시 시작합니다.mongod
프로세스를 시작하려면 다음 명령을 실행합니다:mongod --dbpath </path-to-mongodb-datafiles> mongod
프로세스 시작에 대해 자세히 알아보려면mongod
프로세스 시작을 참조하세요.