새 주 버전으로 업그레이드
2세대
Databases for MongoDB 다음과 같이 두 가지의 서로 다른 업그레이드 경로를 제공합니다:
- 새로운 주요 버전으로의 인플레이스 업그레이드 (현재 MongoDB Standard Plan에서 지원됨).
- 백업에서 복원 ( MongoDB 스탠다드 플랜, MongoDB 엔터프라이즈 플랜에서 지원됨).
현행 환경에서의 주요 버전 업그레이드
현행 환경에서 주요 버전 업그레이드를 수행하면 배포 환경을 다음 주요 버전으로 업그레이드할 수 있으므로, 백업을 복원하여 새로운 배포 환경을 구축할 필요가 없습니다. 이 방식은 배포를 다시 구성할 필요 없이 동일한 연결 문자열을 유지합니다. 다만, 새로운 주요 버전이 애플리케이션 조정을 필요로 하는 경우, 이에 대한 조치를 취해야 합니다.
현장 주요 버전 업그레이드 기간(백업 포함) 동안, 안전한 업그레이드를 보장하기 위해 배포 환경에 setUserWriteBlockMode가 설정되며, 이 모드에서는 배포 환경에 대한 읽기 작업만 허용되고 쓰기 작업은 허용되지 않습니다. 배포의 메이저 버전 업그레이드가 완료되는 즉시, writeBlockMode 이 항목은 제거됩니다.
현 위치에서 주요 버전 업그레이드를 수행할 때는 두 가지 옵션이 있습니다:
-
백업을 통한 기존 환경에서의 주요 버전 업그레이드: 이 방법은 실제 업그레이드를 수행하기 전에 백업을 생성하여 추가적인 안전 장치를 제공합니다.
-
백업 없이 현장에서 주요 버전 업그레이드: 이 옵션을 선택하면 사전에 백업을 생성하지 않고 업그레이드를 진행합니다. 현장 업그레이드가 실패할 경우, 최신 백업 파일을 사용하여 배포 환경을 복원하고 새로운 배포 환경을 구축해야 합니다.
백업 없이 수행하는 인플레이스 업그레이드는 권장되지 않습니다. 업그레이드 과정 중 어느 단계에서든 실패할 경우, 즉시 복원할 수 있는 백업이 없기 때문에 데이터 손실이 발생할 수 있습니다.
시작하기 전에
업그레이드 절차를 시작하기 전에 다음 사항들을 고려하십시오.
- 업그레이드하기 전에 배포 환경이 정상 상태여야 합니다.
- 배포 환경에는 최소 2GB의 여유 디스크 공간이 있어야 합니다.
- 배포 환경에는 다음 권한을 가진 사용자가 없어야 합니다. bypassWriteBlockingMode.
- 원하는 버전을 직접 지정할 수는 없으며, 다음 주요 버전으로만 업그레이드할 수 있습니다.
- 각 주요 버전에는 이전 버전과 하위 호환되지 않을 수 있는 일부 기능이 포함되어 있습니다. 데이터베이스 공급업체의 릴리스 노트를 확인하여 애플리케이션에 영향을 미칠 수 있는 변경 사항이 있는지 확인하십시오.
- 배포를 이전 버전으로 롤백하는 기능은 지원되지 않습니다.
- 일단 시작된 인플레이스 메이저 버전 업그레이드는 취소할 수 없습니다.
- MongoDB ( Enterprise Edition )의 경우, 업그레이드 전에 사용 가능한 백업이 적어도 하나 있어야 합니다.
UI에서 업그레이드
-
업그레이드 과정을 테스트하기 위해 새로운 Databases for MongoDB 를 생성합니다.
동일한 버전의 기존 배포 환경에서 백업을 복원하여 배포 환경을 생성하십시오. -
스테이징 애플리케이션을 테스트 배포 환경으로 연결하십시오.
스테이징 애플리케이션을 테스트 배포 환경으로 가리키도록 업데이트하십시오. 테스트 애플리케이션이 스테이징 배포 환경에 성공적으로 연결되는지, 그리고 애플리케이션이 예상대로 작동하는지 확인하십시오. 스테이징 환경에 대해 필요한 모든 성능 및 운영 테스트를 수행하십시오. -
‘개요’ 페이지에서 ‘메인 버전 업그레이드’ 버튼을 클릭하여 테스트 배포 환경의 메인 버전을 업그레이드하세요.
이렇게 하면 업그레이드 과정이 완료될 때까지 데이터베이스가 읽기 전용 모드로 전환됩니다. 업그레이드가 완료되는 데 걸리는 시간을 확인하여, 업그레이드 만료 설정을 통해 업그레이드를 유지보수 시간 내에 완료할 수 있도록 하십시오. -
스테이징 애플리케이션이 새로운 데이터베이스 버전에서 정상적으로 작동하는지 확인하십시오.
애플리케이션이 정상적으로 작동한다면, 이 단계를 통해 프로덕션 데이터베이스를 안전하게 업그레이드할 수 있음을 확인할 수 있습니다. -
프로덕션 데이터베이스 배포 환경을 새 버전으로 업그레이드하십시오.
새로운 버전의 데이터베이스를 사용하여 애플리케이션이 정상적으로 작동하는지 확인한 후에는 관리 콘솔로 돌아가 프로덕션 환경의 업그레이드 절차를 시작할 수 있습니다. ‘개요’ 페이지의 ‘배포 세부 정보’ 섹션에서 ‘메인 버전 업그레이드’ 버튼을 클릭한 다음 안내에 따라 진행하십시오.현장 업그레이드 프로세스가 시작되면 중지하거나 롤백할 수 없습니다. 따라서, 설령 오류가 발생할 가능성이 희박하더라도 데이터베이스 배포가 복구 불가능한 상태가 될 수 있습니다. 따라서, 나중에 새로운 배포 환경으로 복원하는 데 사용할 수 있는 백업을 생성하십시오. '백업과 함께 현장에서 주요 버전 업그레이드'를 선택하면, 생성된 백업을 사용하여 새로운 배포 환경에서 시스템을 복원할 수 있습니다.
expiration for starting upgrade 를 사용하면 업그레이드 작업이 자동으로 취소되기 전에 시작되어야 하는 ‘타임아웃’ 기간을 설정할 수 있습니다. 또한, 업그레이드가 원하는 시간 내에 완료되는지 확인하기 위해 사전에 스테이징 환경에서 업그레이드를 테스트하십시오. 예를 들어, 1시간 이내에 업그레이드를 완료하고자 하고, 테스트 결과 업그레이드에 30분이 소요된다는 것을 알고 있다면,
업그레이드를 진행하겠다고 확인한 시점부터 30분 이내에 업그레이드 작업이 시작되어야 합니다. 따라서 만료 시간을 30분으로 설정하세요. 그래야 해당 시간 내에 시작되지 않더라도 처리 시간 범위를 초과하지 않게 됩니다.
API를 통한 업그레이드
다음 명령을 사용하여 현장에서 업그레이드하십시오:
curl -X PATCH https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/version -H 'Authorization: Bearer <>' -H 'Content-Type: application/json' -d '{"version": "7.0"}'
expiration for starting upgrade 를 사용하면 업그레이드 작업이 자동으로 취소되기 전에 시작되어야 하는 ‘타임아웃’ 기간을 설정할 수 있습니다. 또한, 업그레이드가 원하는 시간 내에 완료되는지 확인하기 위해 사전에 스테이징 환경에서 업그레이드를 테스트하십시오. 예를 들어, 1시간 이내에 업그레이드를 완료하고자 하고, 테스트 결과 업그레이드에 30분이 소요된다는 것을 알고 있다면,
업그레이드를 진행하겠다고 확인한 시점부터 30분 이내에 업그레이드 작업이 시작되어야 합니다. 따라서 만료 시간을 지금부터 30분 후의 타임스탬프로 설정하십시오. 그래야 해당 시간 내에 시작되지 않더라도 처리 시간대를 초과하는 일이 없습니다. 만료 시간은 현재 시점으로부터 5분(기본값)에서 24시간 사이여야 합니다. 자세한 내용은 ‘ Cloud Databases ’ API 를 참조하십시오.
CLI를 통한 업그레이드
CDB 플러그인 버전 0.20.0 이상에서 사용할 수 있습니다.
배포에 대해 허용된 업그레이드 및 복원 전환 목록을 보려면:
ibmcloud cdb deployment-capability-show <NAME|CRN> versions
명령어를 필요한 매개변수와 함께 업그레이드하려면:
ibmcloud cdb deployment-version-upgrade <NAME|CRN> <TARGET_VERSION>
명령어 매개변수의 전체 세부 정보를 보려면:
ibmcloud cdb deployment-version-upgrade --help
expiration for starting upgrade 를 사용하면 업그레이드 작업이 자동으로 취소되기 전에 시작되어야 하는 ‘타임아웃’ 기간을 설정할 수 있습니다. 또한, 업그레이드가 원하는 시간 내에 완료되는지 확인하기 위해 사전에 스테이징 환경에서 업그레이드를 테스트하십시오. 예를 들어, 1시간 이내에 업그레이드를 완료하고자 하고, 테스트 결과 업그레이드에 30분이 소요된다는 것을 알고 있다면,
업그레이드를 진행하겠다고 확인한 시점부터 30분 이내에 업그레이드 작업이 시작되어야 합니다. 따라서 만료 시간을 30분으로 설정하세요. 그래야 해당 시간 내에 시작되지 않더라도 처리 시간 범위를 초과하지 않게 됩니다. 만료 시간은 현재 시점으로부터 5분(기본값)에서 24시간 사이여야 합니다. CLI를 사용하여 만료 기간을 설정하는 방법에는 두 가지가 있습니다. --expire-in 또는 --expire-at.
자세한 내용은 해당 명령어의 도움말에서 확인하십시오.
Terraform을 통한 업그레이드
Terraform 프로바이더 버전 1.79.2 이상에서 사용할 수 있습니다.
업그레이드하려면 구성 파일에서 version 값을 추가하거나 변경하기만 하면 됩니다. 또한 백업을 건너뛰도록 설정할 수 있는 선택적 bool 플래그인 version_upgrade_skip_backup``도 있습니다.
백업을 건너뛰는 것은 권장하지 않습니다. 버전 업그레이드 전에 백업을 생략하는 것은 위험하며, 업그레이드 과정 중 어느 단계에서든 실패할 경우 데이터 손실로 이어질 수 있습니다. 복구할 수 있는 최신 백업이 없기 때문입니다.
업그레이드 중에는 데이터베이스가 읽기 전용 모드로 전환됩니다. 업그레이드하기 전에 테스트를 진행하는 것을 적극 권장합니다.
업그레이드에는 기본 시간 제한보다 더 많은 시간이 소요될 수 있습니다. timeouts 속성을 사용하면 더 긴 타임아웃 값을 설정할 수 있습니다.
Terraform에는 만료 타임스탬프 대신 타임아웃이 있습니다. 따라서, 타임아웃 업데이트 값이 만료 시점으로 사용되므로 타임아웃 시간을 늘리십시오. 예를 들어, 타임아웃을 20분으로 설정하면 만료 시간이 20분으로 설정되며, 해당 시간 내에 업그레이드가 시작되지 않으면 만료되어 업그레이드가 시작되지 않습니다. 최대 유효 기간은 24시간이라는 점에 유의하십시오. 따라서 타임아웃을 36시간으로 설정하더라도, 처음 24시간 이내에 업그레이드가 시작되지 않으면 유효 기간이 만료됩니다.
업그레이드가 진행 중인 경우, 일부 작업이 대기열에 등록되어 버전 업그레이드가 완료될 때까지 진행되지 않을 수 있으니 유의하시기 바랍니다.
문제점 해결
다음과 같은 사용자가 bypassWriteBlockingMode
안전한 업그레이드를 보장하기 위해, 백업 또는 업그레이드 중에는 어떤 사용자도 쓰기 작업을 수행할 수 없어야 합니다. 데이터베이스가 writeBlockMode로 전환되기 전에, 어떤 사용자라도 다음 권한을 가지고 있는지 확인이 이루어집니다. bypassWriteBlockingMode. 해당 사용자가 확인되면, 해당 작업은 실패 상태로 전환됩니다. 재시도하면 실패하며, 해당 권한을 가진 사용자를 제거해야만 인플레이스 메이저 버전 업그레이드를 실행할 수 있습니다.
장비상태 진단
서비스 인스턴스의 리소스가 부족한 경우, 이러한 상황에서는 안전한 업그레이드가 보장될 수 없으므로 작업이 실패합니다. 모니터링 통합 기능을 활용하여 리소스 사용량을 평가할 수 있습니다. 업그레이드할 수 있는 데이터베이스 구성 요소가 모두 없는 경우, 업그레이드 작업이 실패합니다. 이는 유지보수 작업으로 인해 발생할 수 있습니다. 상태 점검 실패로 인해 중단된 작업은 나중에 다시 시도할 수 있습니다. 작업이 계속해서 실패할 경우, IBM Cloud 지원팀 에 지원 티켓을 제출해 주십시오.
백업에서 복원
데이터베이스의 주요 버전이 지원 종료(EOL)에 도달하기 전에, 백업 데이터를 새로운 데이터베이스 인스턴스에 복원하여 사용 가능한 다음 주요 버전으로 업그레이드하십시오.
지원 종료일 전에 최신 버전을 실행할 준비를 하고, 이후 해당 버전으로 마이그레이션하십시오. 자세한 내용은 ‘버전 관리 정책’을 참조하십시오.
버전 롤백은 지원되지 않습니다.
Databases for MongoDB 에서 제공되는 MongoDB 의 최신 버전으로 업그레이드하세요. 카탈로그 페이지, Cloud Databases CLI 플러그인 명령어 ibmcloud cdb deployables-show, 또는 Cloud Databases API /deployables 엔드포인트에서 최신 버전을 확인하세요.
업그레이드는 데이터 백업을 복원하여 새로운 배포 환경에 적용하는 방식으로 진행됩니다. 백업에서 복원하면 다음과 같은 여러 가지 장점이 있습니다:
- 원래 데이터베이스는 계속 실행 중이며 프로덕션 작업이 중단될 수 있습니다.
- 사용자는 프로덕션을 중단하고 새 데이터베이스를 테스트하며 애플리케이션 비호환성에 대해 작업할 수 있습니다.
- 언제든지 전체 프로세스를 다시 실행할 수 있습니다.
- 새로운 복원은 이전 버전의 데이터베이스의 불필요한 아티팩트가 새 데이터베이스로 전달될 가능성을 줄여줍니다.
업그레이드 경로
| 현재 버전 | 주 버전 업그레이드 경로 |
|---|---|
| MongoDB 7 | MongoDB 8 |
UI에서 업그레이드
새로운 호스팅 모델(독립형 컴퓨팅 및 공유형 컴퓨팅)의 경우, CLI 및 API를 통해 새로운 주요 버전으로 업그레이드할 수 있습니다.
IBM Cloud 콘솔의 배포 항목에 있는 ‘백업 및 복원’ 페이지에서 백업을 복원하여 새 버전으로 업그레이드할 수 있습니다. 백업 항목에서 ‘백업 복원’을 클릭하면 새 탭에 페이지가 열리며, 여기서 새로운 배포에 대한 몇 가지 옵션을 변경할 수 있습니다. 옵션 중 하나는 데이터베이스 버전으로 업그레이드할 수 있는 버전으로 자동으로 채워집니다. 버전을 선택한 후 ‘백업 복원’을 클릭하여 프로비저닝 및 복원 절차를 시작하십시오.
CLI를 통한 업그레이드
IBM Cloud CLI를 통해 백업에서 업그레이드 및 복원하는 경우에는 리소스 제어기에서 프로비저닝 명령을 사용하십시오.
ibmcloud resource service-instance-create <INSTANCE_NAME> <SERVICE_ID> <SERVICE_PLAN_ID> <REGION>
instance_name, service_id, service_plan_id, region 매개변수는 모두 필수입니다. 또한 JSON 오브젝트에 버전 및 백업 ID 매개변수와 함께 -p를 제공합니다. 새 배치는 백업 시 소스 배치와 동일한 디스크 및 메모리로 자동으로 크기가 조정됩니다.
ibmcloud resource service-instance-create example-upgrade databases-for-mongodb standard us-south \
-p \ '{
"backup_id": "crn:v1:bluemix:public:databases-for-mongodb:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71717:backup:06392e97-df90-46d8-98e8-cb67e9e0a8e6",
"version":"7.0"
}'
API를 통한 업그레이드
API를 통한 프로비저닝과 마찬가지로, 백업 파일을 사용하여 업그레이드하려면 먼저 리소스 컨트롤러 API를 사용하기 위해 필요한 단계 를 완료해야 합니다. 그런 다음, API를 POST
요청으로 전송하십시오. name, target, resource_group 및 resource_plan_id 매개변수는 모두 필수입니다. 또한 버전과 백업 ID도 함께 제공해 주십시오. 새 배치는 백업 시 소스 배치와 동일한 메모리 및 디스크 할당을 가집니다.
curl -X POST https://resource-controller.cloud.ibm.com/v2/resource_instances -H 'Authorization: Bearer <>' -H 'Content-Type: application/json' -d '{
"name": "my-instance",
"target": "us-south",
"resource_group": "5g9f447903254bb58972a2f3f5a4c711",
"resource_plan_id": "databases-for-mongodb-standard",
"backup_id": "crn:v1:bluemix:public:databases-for-mongodb:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71717:backup:06392e97-df90-46d8-98e8-cb67e9e0a8e6",
"version":"7.0"
}'
Terraform을 통한 업그레이드
Terraform을 사용하여 이전 버전의 백업에서 새 버전으로 복원합니다.
backup_id를 설정하세요. 자세한 정보는backup_id의 내용을 참조하십시오.- version 속성에
version를 설정하세요. 자세한 정보는version의 내용을 참조하십시오.
코드는 다음과 같습니다:
resource "ibm_database" "<your-instance>" {
name = "<your_database_name>"
service = "<service>"
plan = "<plan>"
location = "<region>"
version = "<version>"
backup_id = "<backup_id>"
}
자세한 내용은 Cloud Databases Terraform 레지스트리를 참조하십시오.