設定環境變數

本頁說明遷移程序的準備工作,也就是在本機環境中設定環境變數。稍後您將在這個環境中執行指令,設定及啟動遷移程序。這些指令都會使用您在這個階段設定的一或多個環境變數。

在這個階段,您將執行下列操作:

  1. 設定所有支援的 MongoDB 相容來源通用的環境變數。

  2. 設定環境變數,這些變數會因 MongoDB 相容來源資料庫的類型和部署方式而異。

設定常見環境變數

下列範本有助於設定所有支援的 MongoDB 相容來源共用的環境變數。稍後您會新增 MongoDB 來源專用的額外變數。

範本會設定下列環境變數:

  • 適用於整個遷移程序的一般參數
  • 用於建立及管理 Datastream 連線設定檔Datastream 連線參數
  • Datastream 資料放置參數,可在遷移期間管理 Cloud Storage bucket 中的資料放置位置。
  • Dataflow 範本參數,用於管理管道,該管道會將資料從 Cloud Storage 值區複製到 Firestore MongoDB 相容資料庫。
  • 其他 Dataflow 範本參數:這些參數衍生自您指定的其他參數,因此不需要設定。
  • Firestore 連線參數,用於建立與目的地 Firestore 的連線,並與 MongoDB 相容的資料庫。

請先設定下列變數,再繼續執行本指南中的其他指令:

# 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:遷移管道執行的專案專案 ID。 Google Cloud 範例:example-project

      您可以使用位於其他專案的目標 Firestore (與 MongoDB 相容) 資料庫。不過,本指南假設所有相關資源都位於同一個專案中。

    • 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_NAMEDatastream 資料流的人類可讀名稱,用於將資料從 MongoDB 相容的來源資料庫轉移到 Cloud Storage。範例:mongo-to-gcs-stream

      您稍後會建立這個串流。

  • 資料串流資料放置位置參數:

    • GCS_BUCKET_NAME:您先前建立的 Cloud Storage 值區名稱。範例:mongo-migration-bucket

      這個值稍後會用於建立目的地連線設定檔。

    • GCS_BUCKET_ROOT_PATH:Cloud Storage bucket 中的頂層目錄名稱,用於在遷移期間放置中繼資料。範例:mongo-migration-root

      這個值稍後會用於建立目的地連線設定檔。

    • GCS_BUCKET_TEMPLATE_PATH:特定 Datastream 執行個體的 GCS_BUCKET_ROOT_PATH 目錄中的子路徑。

      多個匯出至 Cloud Storage 的作業可以共用同一個目的地連線設定檔。不過,您必須為每次遷移指定專屬子路徑。範例:mongo-migration-data-0

      這個值稍後會用於建立串流。

  • Dataflow 範本參數:

    • GCS_BUCKET_TEMPLATE_PATHGCS_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:指定 VM 的內部 IP 位址和通訊埠號碼,該 VM 會代管 MongoDB 伺服器。範例: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:指定 VM 的內部 IP 位址和通訊埠號碼,該 VM 會代管 MongoDB 伺服器。範例: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:安全殼層私密金鑰的完整酬載。舉例來說,如果是 RSA 金鑰,這個酬載會包含 -----BEGIN RSA PRIVATE KEY----- 標頭和 -----END RSA PRIVATE KEY----- 頁尾。範例:BASTION_SSH_PRIVATE_KEY=$(cat ~/.ssh/private_key)

Amazon DocumentDB

請確認您擁有 Amazon EC2 執行個體的私密安全殼層 (SSH) 金鑰,該執行個體會提供與 DocumentDB 叢集的連線。此外,請務必按照「資源設定」一節所述,下載特定區域的憑證套件,並擷取及驗證特定憑證。

以下變數專用於透過轉送 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:EC2 執行個體的外部 IP 位址,可允許從公用網路進行 SSH 存取,並提供 Amazon VPC 內 DocumentDB 叢集的內部連線。範例:30.0.0.1

  • BASTION_SSH_PORT:主機上的 SSH 通訊埠。範例:22

  • BASTION_SSH_USERNAME:SSH 連線的使用者名稱。

  • BASTION_SSH_PRIVATE_KEY:安全殼層私密金鑰的完整酬載。舉例來說,如果是 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

後續步驟

請繼續建立連線設定檔