設定環境變數
本頁說明遷移程序的準備工作,也就是在本機環境中設定環境變數。稍後您將在這個環境中執行指令,設定及啟動遷移程序。這些指令都會使用您在這個階段設定的一或多個環境變數。
在這個階段,您將執行下列操作:
設定所有支援的 MongoDB 相容來源通用的環境變數。
設定環境變數,這些變數會因 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"
更改下列內容:
一般參數:
Datastream 連線參數:
SRC_CONNECTION_PROFILE_NAME:MongoDB 相容來源資料庫的Datastream 連線設定檔,方便使用者辨識。範例:
source-mongo-profile
。您稍後會使用這個名稱建立連線設定檔。
DST_CONNECTION_PROFILE_NAME:目的地 Cloud Storage 值區的Datastream 連線設定檔易讀名稱。例如:
destination-gcs-profile
。您稍後會使用這個名稱建立目的地連線設定檔。
DATASTREAM_NAME:Datastream 資料流的人類可讀名稱,用於將資料從 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_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:指定 VM 的內部 IP 位址和通訊埠號碼,該 VM 會代管 MongoDB 伺服器。範例:
10.0.0.1:27017
。(僅適用於未分片的副本集叢集)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
。(僅適用於未分片的副本集叢集)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
。
後續步驟
請繼續建立連線設定檔。