환경 변수 구성

이 페이지에서는 로컬 환경에서 환경 변수를 구성하는 마이그레이션 프로세스의 준비 부분을 설명합니다. 이 환경에서 나중에 이전 프로세스를 구성하고 실행하는 명령어를 실행합니다. 이러한 각 명령어는 이 단계에서 설정한 하나 이상의 환경 변수를 사용합니다.

이 단계에서는 다음 작업을 수행합니다.

  1. 지원되는 모든 MongoDB 호환 소스에 공통적인 환경 변수를 설정합니다.

  2. MongoDB 호환 소스 데이터베이스의 유형과 배포 방식에 따라 환경 변수를 설정합니다.

일반 환경 변수 설정

다음 템플릿은 지원되는 모든 MongoDB 호환 소스에 공통적인 환경 변수를 설정하는 데 도움이 됩니다. 나중에 MongoDB 소스에 특정한 변수를 추가합니다.

템플릿은 다음 환경 변수 세트를 구성합니다.

  • 전체 이전 절차에 적용되는 일반 매개변수
  • Datastream 연결 프로필을 만들고 관리하는 데 사용되는 Datastream 연결 매개변수입니다.
  • 마이그레이션 중에 Cloud Storage 버킷의 데이터 배치를 관리하는 Datastream 데이터 배치 매개변수
  • Cloud Storage 버킷에서 MongoDB 호환성을 갖춘 Firestore 데이터베이스로 데이터를 복사하는 파이프라인을 관리하기 위한 Dataflow 템플릿 매개변수
  • 추가 Dataflow 템플릿 매개변수: 이러한 매개변수는 지정한 다른 매개변수에서 파생되므로 설정할 필요가 없습니다.
  • MongoDB 호환성을 갖춘 대상 Firestore 데이터베이스에 연결하는 데 사용되는 Firestore 연결 매개변수

이 가이드의 다른 명령어를 진행하기 전에 다음 변수를 설정하세요.

# General parameters
PROJECT_ID="PROJECT_ID"
LOCATION="LOCATION"

# Datastream connection parameters
SRC_CONNECTION_PROFILE_NAME="SRC_CONNECTION_PROFILE_NAME"
DST_CONNECTION_PROFILE_NAME="DST_CONNECTION_PROFILE_NAME"
DATASTREAM_NAME="DATASTREAM_NAME"

# Datastream data placement parameters
GCS_BUCKET_NAME="GCS_BUCKET_NAME"
GCS_BUCKET_ROOT_PATH="GCS_BUCKET_ROOT_PATH"
GCS_BUCKET_SUB_PATH="GCS_BUCKET_SUB_PATH"

# Dataflow template parameters
GCS_BUCKET_TEMPLATE_PATH="GCS_BUCKET_TEMPLATE_PATH"
NUM_WORKERS=NUM_WORKERS
MAX_WORKERS=MAX_WORKERS
WORKER_TYPE="WORKER_TYPE"

# Additional Dataflow template parameters: these are initialized
# from parameters above and don't require further customization
INPUT_FILE_LOCATION="gs://${GCS_BUCKET_NAME}/${GCS_BUCKET_ROOT_PATH}/${GCS_BUCKET_SUB_PATH}/"
TEMP_OUTPUT_LOCATION="gs://${GCS_BUCKET_NAME}/${GCS_BUCKET_ROOT_PATH}/tmp"
DLQ_LOCATION="gs://${GCS_BUCKET_NAME}/${GCS_BUCKET_ROOT_PATH}/dql"
STAGING_LOCATION="gs://${GCS_BUCKET_NAME}/${GCS_BUCKET_ROOT_PATH}/staging"

# Firestore connection parameters
FIRESTORE_CONNECTION_URI="FIRESTORE_CONNECTION_URI"
FIRESTORE_DATABASE_NAME="FIRESTORE_DATABASE_NAME"

다음을 바꿉니다.

  • 일반 매개변수:

    • PROJECT_ID: 마이그레이션 파이프라인이 실행될 Google Cloud 프로젝트의 프로젝트 ID입니다. 예를 들면 example-project입니다.

      다른 프로젝트에 있는 MongoDB 호환성을 갖춘 대상 Firestore 데이터베이스를 사용할 수 있습니다. 하지만 이 가이드에서는 모든 관련 리소스가 동일한 프로젝트에 있다고 가정합니다.

    • LOCATION: 마이그레이션 파이프라인이 실행될 리전입니다. 예: nam5, us-central1

      MongoDB 호환성을 갖춘 대상 Firestore 데이터베이스와 동일한 리전을 사용하는 것이 좋습니다.

  • Datastream 연결 매개변수:

    • SRC_CONNECTION_PROFILE_NAME: MongoDB 호환 소스 데이터베이스의 Datastream 연결 프로필의 사람이 읽을 수 있는 이름입니다. 예를 들면 source-mongo-profile입니다.

      나중에 이 이름으로 연결 프로필을 만듭니다.

    • DST_CONNECTION_PROFILE_NAME: 대상 Cloud Storage 버킷의 Datastream 연결 프로필의 사람이 읽을 수 있는 이름입니다. 예를 들면 destination-gcs-profile입니다.

      이 이름으로 대상 연결 프로필을 나중에 만듭니다.

    • DATASTREAM_NAME: MongoDB 호환 소스 데이터베이스에서 Cloud Storage로 데이터를 전송하는 Datastream 스트림의 사람이 읽을 수 있는 이름입니다. 예를 들면 mongo-to-gcs-stream입니다.

      이 스트림은 나중에 만듭니다.

  • Datastream 데이터 배치 매개변수:

    • GCS_BUCKET_NAME: 이전에 만든 Cloud Storage 버킷의 이름입니다. 예를 들면 mongo-migration-bucket입니다.

      이 값은 나중에 대상 연결 프로필을 만드는 데 사용됩니다.

    • GCS_BUCKET_ROOT_PATH: 마이그레이션 중에 중간 데이터를 배치할 Cloud Storage 버킷의 최상위 디렉터리 이름입니다. 예: mongo-migration-root

      이 값은 나중에 대상 연결 프로필을 만드는 데 사용됩니다.

    • GCS_BUCKET_TEMPLATE_PATH: 특정 Datastream 인스턴스의 GCS_BUCKET_ROOT_PATH 디렉터리에 있는 하위 경로입니다.

      Cloud Storage로 여러 번 내보낼 때 동일한 대상 연결 프로필을 사용할 수 있습니다. 하지만 각 마이그레이션에 대해 고유한 하위 경로를 지정해야 합니다. 예: mongo-migration-data-0

      이 값은 나중에 스트림을 만드는 데 사용됩니다.

  • Dataflow 템플릿 매개변수:

    • GCS_BUCKET_TEMPLATE_PATH: GCS_BUCKET_ROOT_PATH 디렉터리에서 Dataflow 템플릿이 스테이징될 하위 경로입니다. 예를 들면 mongo-migration-template-path입니다.

    • NUM_WORKERS: Dataflow 템플릿을 실행할 작업자의 시작 수입니다. 예: 2

    • MAX_WORKERS: Dataflow 템플릿을 실행할 작업자의 최대 수입니다. 예: 8

    • WORKER_TYPE: Dataflow 작업에 사용할 Compute Engine 인스턴스 유형입니다. 권장 머신 유형은 e2-highmem-8입니다.

  • Firestore 연결 매개변수:

    • FIRESTORE_DATABASE_NAME: 데이터를 마이그레이션하는 MongoDB 호환성을 갖춘 Firestore 데이터베이스의 이름입니다. 예: firestore-database-name

    • FIRESTORE_CONNECTION_URI: MongoDB 호환성을 갖춘 Firestore 데이터베이스의 연결 URI 문자열입니다.

      예: mongodb://USERNAME:PASSWORD@CONNECTION_STRING:443/FIRESTORE_DATABASE_NAME?loadBalanced=true&authMechanism=SCRAM-SHA-256&tls=true&retryWrites=false

소스 데이터베이스 유형에 맞는 환경 변수 설정

다음 템플릿은 MongoDB 호환 소스 데이터베이스의 유형과 배포 방식에 따라 환경 변수를 설정하는 데 도움이 됩니다.

Compute Engine으로 구동하는 MongoDB

다음 변수는 자체 관리 클러스터 (Compute Engine)에 있는 MongoDB 소스 데이터베이스에만 해당합니다. 이 가이드의 다른 명령어를 진행하기 전에 설정하세요.

# Google Compute Engine VM MongoDB Parameters
MONGODB_USERNAME="MONGODB_USERNAME"
MONGODB_PASSWORD="MONGODB_PASSWORD"
MONGODB_IP_ADDRESS="MONGODB_IP_ADDRESS"
REPLICA_SET="REPLICA_SET"
MONGODB_DATABASE_NAME="MONGODB_DATABASE_NAME"
PRIVATE_CONNECTION_NAME="PRIVATE_CONNECTION_NAME"

다음을 바꿉니다.

  • MONGODB_USERNAME: MongoDB 호환 소스 데이터베이스의 사용자 이름입니다. 예: mongouser

  • MONGODB_PASSWORD: MongoDB 호환 소스 데이터베이스의 비밀번호입니다. 예: mongopassword

  • MONGODB_IP_ADDRESS: MongoDB 서버를 호스팅하는 VM의 포트 번호와 함께 내부 IP 주소를 지정합니다. 예: 10.0.0.1:27017

    • 샤딩되지 않았지만 복제본 세트로 구성된 배포의 경우 세트의 모든 복제본 IP 주소가 유효합니다. 하지만 보조 복제본 중 하나를 사용하는 것이 좋습니다.

    • 샤드 클러스터의 경우 mongos 서버 중 하나의 주소를 지정합니다.

  • (샤딩되지 않은 복제본 세트가 있는 클러스터만 해당) REPLICA_SET: 마이그레이션 프로세스에 사용해야 하는 복제본 세트의 이름을 지정합니다. 예: rs0

  • MONGODB_DATABASE_NAME: MongoDB 호환 소스 데이터베이스의 이름입니다. 예: source_db

  • PRIVATE_CONNECTION_NAME: 이전에 만든 비공개 연결 구성의 ID입니다. 예를 들면 pc_name입니다.

SSH를 통한 MongoDB

Compute Engine 외부에서 비공개 MongoDB 배포를 관리하는 경우 Datastream은 정방향 SSH 터널을 통해 소스 데이터베이스에 연결하는 것을 지원합니다. 자세한 내용은 SSH 터널을 참고하세요.

다음 변수는 전달 SSH 터널을 통해 MongoDB 소스 데이터베이스에 연결하는 데 사용됩니다. 이 가이드의 다른 명령어를 진행하기 전에 설정하세요.

# MongoDB over an SSH Tunnel Parameters
MONGODB_USERNAME="MONGODB_USERNAME"
MONGODB_PASSWORD="MONGODB_PASSWORD"
MONGODB_IP_ADDRESS="MONGODB_IP_ADDRESS"
REPLICA_SET="REPLICA_SET"
MONGODB_DATABASE_NAME="MONGODB_DATABASE_NAME"
BASTION_IP_ADDRESS="BASTION_IP_ADDRESS"
BASTION_SSH_PORT="BASTION_SSH_PORT"
BASTION_SSH_USERNAME="BASTION_SSH_USERNAME"
BASTION_SSH_PRIVATE_KEY="BASTION_SSH_PRIVATE_KEY"

다음을 바꿉니다.

  • MONGODB_USERNAME: MongoDB 호환 소스 데이터베이스의 사용자 이름입니다. 예: mongouser

  • MONGODB_PASSWORD: MongoDB 호환 소스 데이터베이스의 비밀번호입니다. 예: mongopassword

  • MONGODB_IP_ADDRESS: MongoDB 서버를 호스팅하는 VM의 포트 번호와 함께 내부 IP 주소를 지정합니다. 예: 10.0.0.1:27017

    • 샤딩되지 않았지만 복제본 세트로 구성된 배포의 경우 세트의 모든 복제본 IP 주소가 유효합니다. 하지만 보조 복제본 중 하나를 사용하는 것이 좋습니다.

    • 샤드 클러스터의 경우 mongos 서버 중 하나의 주소를 지정합니다.

  • (샤딩되지 않은 복제본 세트가 있는 클러스터만 해당) REPLICA_SET: 마이그레이션 프로세스에 사용해야 하는 복제본 세트의 이름을 지정합니다. 예: rs0

  • MONGODB_DATABASE_NAME: MongoDB 호환 소스 데이터베이스의 이름입니다. 예: source_db

  • BASTION_IP_ADDRESS: SSH 연결을 수락할 수 있는 네트워크의 호스트 주소입니다. MongoDB 서버 자체일 수도 있고, 공용 네트워크에서 SSH 액세스를 허용하고 실제 MongoDB 서버에 대한 내부 연결도 제공하는 지정된 배스천 호스트일 수도 있습니다. 예를 들면 30.0.0.1입니다.

  • BASTION_SSH_PORT: 호스트의 SSH 포트입니다. 예: 22

  • BASTION_SSH_USERNAME: SSH 연결의 사용자 이름입니다.

  • BASTION_SSH_PRIVATE_KEY: SSH 비공개 키의 전체 페이로드입니다. 예를 들어 RSA 키의 경우 이 페이로드에는 -----BEGIN RSA PRIVATE KEY----- 헤더와 -----END RSA PRIVATE KEY----- 바닥글이 포함됩니다. 예를 들면 BASTION_SSH_PRIVATE_KEY=$(cat ~/.ssh/private_key)입니다.

Amazon DocumentDB

DocumentDB 클러스터에 대한 연결을 제공할 Amazon EC2 인스턴스의 비공개 SSH 키가 있는지 확인합니다. 또한 리소스 구성 섹션에 설명된 대로 지역별 인증서 번들을 다운로드하고 특정 인증서를 추출하여 검증했는지 확인합니다.

다음 변수는 정방향 SSH 터널을 통해 DocumentDB 소스 데이터베이스에 연결하는 데 사용됩니다. 이 가이드의 다른 명령어를 진행하기 전에 설정하세요.

# DocumentDB over an EC2 SSH Tunnel Parameters
MONGODB_USERNAME="MONGODB_USERNAME"
MONGODB_PASSWORD="MONGODB_PASSWORD"
MONGODB_HOST_ADDRESS="MONGODB_HOST_ADDRESS"
REPLICA_SET="REPLICA_SET"
MONGODB_DATABASE_NAME="MONGODB_DATABASE_NAME"
BASTION_IP_ADDRESS="BASTION_IP_ADDRESS"
BASTION_SSH_PORT="BASTION_SSH_PORT"
BASTION_SSH_USERNAME="BASTION_SSH_USERNAME"
BASTION_SSH_PRIVATE_KEY="BASTION_SSH_PRIVATE_KEY"
DOCUMENT_DB_CA_CERTIFICATE="DOCUMENT_DB_CA_CERTIFICATE"

다음을 바꿉니다.

  • MONGODB_USERNAME: DocumentDB 소스 데이터베이스의 사용자 이름입니다. 예: mongouser

  • MONGODB_PASSWORD: DocumentDB 소스 데이터베이스의 비밀번호입니다. 예: mongopassword

  • MONGODB_HOST_ADDRESS: DocumentDB 클러스터의 주소입니다. 예: mydocumentdb.cluster-abcd.us-east-2.docdb.amazonaws.com:27017

  • REPLICA_SET: 마이그레이션 프로세스에 사용해야 하는 복제본 세트의 이름을 지정합니다. 예: rs0

  • MONGODB_DATABASE_NAME: DocumentDB 소스 데이터베이스의 이름입니다. 예: source_db

  • BASTION_IP_ADDRESS: 공개 네트워크에서 SSH 액세스를 허용하고 Amazon VPC 내의 DocumentDB 클러스터에 대한 내부 연결도 제공하는 EC2 인스턴스의 외부 IP 주소입니다. 예: 30.0.0.1

  • BASTION_SSH_PORT: 호스트의 SSH 포트입니다. 예: 22

  • BASTION_SSH_USERNAME: SSH 연결의 사용자 이름입니다.

  • BASTION_SSH_PRIVATE_KEY: SSH 비공개 키의 전체 페이로드입니다. 예를 들어 RSA 키의 경우 이 페이로드에는 -----BEGIN RSA PRIVATE KEY----- 헤더와 -----END RSA PRIVATE KEY----- 바닥글이 포함됩니다. 예를 들면 BASTION_SSH_PRIVATE_KEY=$(cat ~/ec2_bastion_host.pem)입니다.

  • DOCUMENT_DB_CA_CERTIFICATE: DocumentDB CA 인증서의 전체 페이로드입니다. 이 페이로드에는 -----BEGIN CERTIFICATE----- 헤더와 -----END CERTIFICATE----- 바닥글이 포함되어야 하며 하나의 인증서만 포함해야 합니다. 예를 들면 BASTION_SSH_PRIVATE_KEY=$(cat ~/us-east-1.pem)입니다.

Azure Cosmos DB

다음 변수는 Azure Cosmos DB 소스 데이터베이스에만 해당합니다. 이 가이드의 다른 명령어를 진행하기 전에 설정하세요.

# Azure Cosmos DB Parameters
MONGODB_USERNAME="MONGODB_USERNAME"
MONGODB_PASSWORD="MONGODB_PASSWORD"
MONGODB_HOST_ADDRESS="MONGODB_HOST_ADDRESS"
MONGODB_DATABASE_NAME="MONGODB_DATABASE_NAME"

다음을 바꿉니다.

  • MONGODB_USERNAME: MongoDB 호환 소스 데이터베이스의 사용자 이름입니다. 예: mongouser
  • MONGODB_PASSWORD: MongoDB 호환 소스 데이터베이스의 비밀번호입니다. 예: mongopassword
  • MONGODB_HOST_ADDRESS: MongoDB 호환 소스 데이터베이스의 호스트 이름입니다. 값은 MongoDB SRV 연결 형식을 준수해야 합니다. 예:host.cosmos.azure.example.com
  • MONGODB_DATABASE_NAME: MongoDB 호환 소스 데이터베이스의 이름입니다. 예: source_db

MongoDB Atlas

다음 변수는 MongoDB Atlas 소스 데이터베이스에만 해당합니다. 이 가이드의 다른 명령어를 진행하기 전에 설정하세요.

# MongoDB Atlas Parameters
MONGODB_USERNAME="MONGODB_USERNAME"
MONGODB_PASSWORD="MONGODB_PASSWORD"
MONGODB_HOST_ADDRESS="MONGODB_HOST"
MONGODB_DATABASE_NAME="MONGODB_DATABASE_NAME"

다음을 바꿉니다.

  • MONGODB_USERNAME: MongoDB 호환 소스 데이터베이스의 사용자 이름입니다. 예: mongouser
  • MONGODB_PASSWORD: MongoDB 호환 소스 데이터베이스의 비밀번호입니다. 예: mongopassword
  • MONGODB_HOST_ADDRESS: MongoDB 호환 소스 데이터베이스의 호스트 이름입니다. 값은 MongoDB SRV 연결 형식을 준수해야 합니다. 예:host.mongodb.example.com
  • MONGODB_DATABASE_NAME: MongoDB 호환 소스 데이터베이스의 이름입니다. 예: source_db

다음 단계

연결 프로필 만들기로 이동합니다.