環境変数を構成する

このページでは、ローカル環境で環境変数を構成する移行プロセスの準備部分について説明します。この環境から、移行プロセスを構成して実行するコマンドを実行します。これらの各コマンドは、このステージで設定した 1 つ以上の環境変数を使用します。

このステージでは、次の操作を行います。

  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: 移行パイプラインが実行されるリージョン。例: nam5us-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: Dataflow テンプレートがステージングされる GCS_BUCKET_ROOT_PATH ディレクトリ内のサブパス。例: 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----- フッターを含める必要があり、証明書は 1 つだけ含める必要があります。例: 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

次のステップ

接続プロファイルを作成するに進みます。