AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

외부 애플리케이션 데이터베이스를 Ops Manager 로 반환

Ops Manager 리소스 통해 외부 애플리케이션 데이터베이스를 내부 관리 로 반환할 수 있습니다. Ops Manager 리소스 기존 애플리케이션 데이터베이스 StatefulSet를 회수한 다음 이를 managed MongoDB 리소스 삭제 . Kubernetes Operator는 데이터를 이동하거나 다시 생성하지 않으며, Ops Manager 포드를 다시 시작하지 않습니다.

Ops Manager 리소스 외부 애플리케이션 데이터베이스, 즉 spec.roleAppDB로 설정하다 <primary-om-name>-db라는 이름의 MongoDB 리소스 로 시작하며, 이 리소스는 애플리케이션 데이터베이스 StatefulSet를 소유합니다. 마이그레이션 다음과 같이 진행됩니다.

  1. Kubernetes Operator는 MongoDB 리소스 StatefulSet를 출시하다 하도록 요청합니다. MongoDB 리소스 Ops Manager 리소스 이를 회수할 때까지 기다리는 동안 Pending 단계를 보고합니다.

  2. Kubernetes Operator는 StatefulSet를 회수하여 내부 애플리케이션 데이터베이스로 관리합니다. 연결 문자열 변경되지 않으므로 Ops Manager 포드가 다시 시작되지 않습니다.

  3. 더 이상 아무것도 소유하지 않는 MongoDB 리소스 삭제 .

경고

Ops Manager 리소스 내부 애플리케이션 데이터베이스를 다시 관리한 후에만 MongoDB 리소스 삭제합니다. MongoDB 리소스 여전히 StatefulSet를 소유하고 있는 동안 삭제 하면 Kubernetes 애플리케이션 데이터베이스를 가비지 수집합니다. 해당 상태 에서 복구하려면 보존된 영구 볼륨 클레임에서 애플리케이션 데이터베이스를 다시 생성해야 하며, 이로 인해 다운타임이 발생하고 애플리케이션 데이터베이스 자격 증명 순환됩니다.

시작하기 전에 다음 작업을 완료하세요.

  • Install the Kubernetes Operator and kubectl. To learn more, see Install with Kubernetes.

  • 프라이머리 Ops Manager 리소스 외부 애플리케이션 데이터베이스를 사용하는지 확인합니다:spec.externalApplicationDatabaseRef <primary-om-name>-db이라는 이름의 MongoDB 리소스 로 설정하고,spec.applicationDatabase 설정하다 하지 않으며, 해당 status.applicationDatabase.phaseDisabled을 보고합니다.

  • MongoDB 리소스 Running 단계에 있으며 애플리케이션 데이터베이스 StatefulSet를 소유하고 있는지 확인합니다.

마이그레이션 하기 전에 다음 고려 사항을 검토하세요.

  • spec.applicationDatabase.version 애플리케이션 데이터베이스가 이미 실행 중인 버전으로 설정합니다. 동일한 버전을 재사용하면 동일한 바이너리와 데이터가 제자리에 유지됩니다. 다른 버전은 핸드오버와 동시에 애플리케이션 데이터베이스 업그레이드 시작합니다.

  • Kubernetes Operator는 외부 애플리케이션 데이터베이스용으로 생성한 Ops Manager 프로젝트 삭제 하지 않습니다. 해당 프로젝트 제거하면 애플리케이션 데이터베이스의 기록 지표 읽을 수 없게 되므로 프로젝트를 정리하는 것은 사용자의 결정입니다.

1
export K8S_CTX="<your-kube-context>"
export MDB_NS="mongodb"
export PRIMARY_OM_NAME="primary-om"
export APPDB_NAME="${PRIMARY_OM_NAME}-db"
export APPDB_VERSION="8.0.5-ent"
2
  1. Ops Manager 리소스 외부 애플리케이션 데이터베이스를 참조하고 해당 애플리케이션 데이터베이스를 Disabled(으)로 보고하는지 확인합니다.

    kubectl get om "${PRIMARY_OM_NAME}" --context "${K8S_CTX}" -n "${MDB_NS}" \
    -o jsonpath='ref={.spec.externalApplicationDatabaseRef.name} appdb={.status.applicationDatabase.phase}{"\n"}'
  2. MongoDB 리소스 애플리케이션 데이터베이스 StatefulSet를 소유하고 있는지 확인합니다.

    kubectl get statefulset "${APPDB_NAME}" --context "${K8S_CTX}" -n "${MDB_NS}" \
    -o jsonpath='{range .metadata.ownerReferences[*]}{.kind}/{.name}{"\n"}{end}'

    The command returns MongoDB/${APPDB_NAME}.

3

이 패치는 spec.externalApplicationDatabaseRef 제거하고 spec.applicationDatabase를 추가합니다.

kubectl patch om "${PRIMARY_OM_NAME}" \
--context "${K8S_CTX}" -n "${MDB_NS}" \
--type merge \
-p "{\"spec\":{\"externalApplicationDatabaseRef\":null,\"applicationDatabase\":{\"members\":3,\"version\":\"${APPDB_VERSION}\"}}}"
4
  1. MongoDB 리소스 StatefulSet를 해제하는지 확인합니다. 리소스 Ops Manager 리소스 로 역방향 마이그레이션 중이라는 메시지와 함께 Pending 단계를 보고합니다.

    kubectl wait --for=jsonpath='{.status.phase}'=Pending \
    mdb/"${APPDB_NAME}" --context "${K8S_CTX}" -n "${MDB_NS}" --timeout=300s
    kubectl get mdb "${APPDB_NAME}" --context "${K8S_CTX}" -n "${MDB_NS}" \
    -o jsonpath='{.status.message}{"\n"}'
  2. Ops Manager 리소스 내부 애플리케이션 데이터베이스를 다시 관리 할 때까지 기다립니다.

    kubectl wait --for=jsonpath='{.status.applicationDatabase.phase}'=Running \
    om/"${PRIMARY_OM_NAME}" --context "${K8S_CTX}" -n "${MDB_NS}" --timeout=1200s
    kubectl wait --for=jsonpath='{.status.opsManager.phase}'=Running \
    om/"${PRIMARY_OM_NAME}" --context "${K8S_CTX}" -n "${MDB_NS}" --timeout=1800s
5

이전 단계에서 applicationDatabase.phase=Running를 보고한 후에만 이 단계를 완료합니다.

kubectl delete mdb "${APPDB_NAME}" \
--context "${K8S_CTX}" -n "${MDB_NS}" --wait=true --timeout=300s
6
  1. Ops Manager 리소스 애플리케이션 데이터베이스 StatefulSet를 소유하고 있는지 확인합니다.

    kubectl get statefulset "${APPDB_NAME}" --context "${K8S_CTX}" -n "${MDB_NS}" \
    -o jsonpath='{range .metadata.ownerReferences[*]}{.kind}/{.name}{"\n"}{end}'

    The command returns MongoDBOpsManager/${PRIMARY_OM_NAME}.

  2. Ops Manager 리소스 해당 애플리케이션 데이터베이스를 Running(으)로 보고하고 MongoDB 리소스 더 이상 존재하지 않는지 확인합니다.

    kubectl get om "${PRIMARY_OM_NAME}" --context "${K8S_CTX}" -n "${MDB_NS}" \
    -o jsonpath='{.status.applicationDatabase.phase}{"\n"}'
    kubectl get mdb --context "${K8S_CTX}" -n "${MDB_NS}"
  3. 기간 및 재시작 횟수를 확인하여 Ops Manager pod가 다시 시작되지 않았는지 확인합니다.

    kubectl get pods --context "${K8S_CTX}" -n "${MDB_NS}"

MongoDB 리소스 Running 단계에 남아 있고 여전히 StatefulSet를 소유하고 있다면, Ops Manager 리소스 출시하다 요청하지 않은 것입니다. 패치가 spec.externalApplicationDatabaseRefnull로 설정하다 하고 spec.applicationDatabase을 추가했는지 확인합니다.

회수된 StatefulSet가 동일한 바이너리를 유지하도록 spec.applicationDatabase.version를 애플리케이션 데이터베이스가 이미 실행 중인 버전으로 설정합니다.

MongoDB 리소스 StatefulSet를 여전히 소유하고 있는 동안 삭제 하면 Kubernetes StatefulSet와 Ops Manager 리소스 와 공유하는 시크릿을 가비지 수집합니다. 복구하려면 보존된 영구 볼륨 클레임에서 애플리케이션 데이터베이스를 다시 생성합니다. 이 경로는 다운타임을 유발하고 애플리케이션 데이터베이스 자격 증명 순환시킵니다. 자세한 학습 은 Ops Manager 의 재해 복구 및 AppDB 리소스를 참조하세요.

외부 애플리케이션 데이터베이스를 다시 사용하려면 애플리케이션 데이터베이스를 외부 배포로 마이그레이션을 참조하세요.