Mengonfigurasi variabel lingkungan
Halaman ini menjelaskan bagian persiapan dari proses migrasi tempat Anda mengonfigurasi variabel lingkungan di lingkungan lokal. Dari lingkungan ini, Anda akan menjalankan perintah yang mengonfigurasi dan menggerakkan proses migrasi. Setiap perintah ini akan menggunakan satu atau beberapa variabel lingkungan yang Anda tetapkan pada tahap ini.
Pada tahap ini, Anda akan melakukan hal berikut:
Tetapkan variabel lingkungan yang umum untuk semua sumber yang kompatibel dengan MongoDB yang didukung.
Tetapkan variabel lingkungan yang khusus untuk jenis database sumber yang kompatibel dengan MongoDB dan cara deployment-nya.
Menetapkan variabel lingkungan umum
Template berikut membantu menyiapkan variabel lingkungan yang umum untuk semua sumber yang kompatibel dengan MongoDB yang didukung. Anda akan menambahkan variabel tambahan yang khusus untuk sumber MongoDB Anda nanti.
Template ini mengonfigurasi kumpulan variabel lingkungan berikut:
- Parameter umum yang berlaku untuk seluruh prosedur migrasi.
- Parameter koneksi Datastream yang digunakan untuk membuat dan mengelola profil koneksi Datastream.
- Parameter penempatan data Datastream untuk mengelola penempatan data di bucket Cloud Storage selama migrasi.
- Parameter template Dataflow untuk mengelola pipeline yang akan menyalin data dari bucket Cloud Storage ke database Firestore dengan kompatibilitas MongoDB.
- Parameter template Dataflow tambahan ini berasal dari parameter lain yang Anda tentukan dan Anda tidak perlu menyetelnya.
- Parameter koneksi Firestore untuk membuat koneksi ke database tujuan Firestore dengan kompatibilitas MongoDB.
Tetapkan variabel berikut sebelum melanjutkan dengan perintah lain dalam panduan ini:
# 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"
Ganti kode berikut:
Parameter umum:
PROJECT_ID: Project ID dari project Google Cloud tempat pipeline migrasi akan berjalan. Contoh:
example-project
.Anda dapat menggunakan database Firestore tujuan dengan kompatibilitas MongoDB yang berada di project lain. Namun, panduan ini mengasumsikan bahwa semua resource yang relevan berada dalam project yang sama.
LOCATION: region tempat pipeline migrasi akan berjalan. Contoh:
nam5
,us-central1
.Sebaiknya gunakan region yang sama dengan database tujuan Cloud Firestore dengan kompatibilitas MongoDB.
Parameter koneksi datastream:
SRC_CONNECTION_PROFILE_NAME: nama yang mudah dibaca untuk profil koneksi Datastream dari database sumber yang kompatibel dengan MongoDB. Contoh:
source-mongo-profile
.Anda akan membuat profil koneksi dengan nama ini nanti.
DST_CONNECTION_PROFILE_NAME: nama yang mudah dibaca untuk profil koneksi Datastream untuk bucket Cloud Storage tujuan. Contoh:
destination-gcs-profile
.Anda akan membuat profil koneksi tujuan dengan nama ini nanti.
DATASTREAM_NAME: Nama yang mudah dibaca dari streaming Datastream yang akan mentransfer data dari database sumber yang kompatibel dengan MongoDB ke Cloud Storage. Contoh:
mongo-to-gcs-stream
.Anda akan membuat aliran ini nanti.
Parameter penempatan data Datastream:
GCS_BUCKET_NAME: nama bucket Cloud Storage yang telah Anda buat sebelumnya. Contoh:
mongo-migration-bucket
.Nilai ini digunakan untuk membuat profil koneksi tujuan nanti.
GCS_BUCKET_ROOT_PATH: Nama direktori tingkat teratas di bucket Cloud Storage untuk menempatkan data perantara selama migrasi. Contoh:
mongo-migration-root
.Nilai ini digunakan untuk membuat profil koneksi tujuan nanti.
GCS_BUCKET_TEMPLATE_PATH: Sub-jalur di direktori GCS_BUCKET_ROOT_PATH untuk instance Datastream tertentu.
Profil koneksi tujuan yang sama dapat digunakan untuk beberapa ekspor ke Cloud Storage. Namun, Anda harus menetapkan sub-jalur unik untuk setiap migrasi. Contoh:
mongo-migration-data-0
.Nilai ini digunakan untuk membuat streaming nanti.
Parameter template Dataflow:
GCS_BUCKET_TEMPLATE_PATH: Sub-jalur di direktori GCS_BUCKET_ROOT_PATH tempat template Dataflow akan di-stage. Contoh:
mongo-migration-template-path
.NUM_WORKERS: Jumlah awal pekerja untuk menjalankan template Dataflow. Contoh:
2
.MAX_WORKERS: Jumlah maksimum pekerja untuk menjalankan template Dataflow. Contoh:
8
.WORKER_TYPE: Jenis instance Compute Engine yang akan digunakan untuk pekerjaan Dataflow. Jenis mesin yang direkomendasikan adalah
e2-highmem-8
.
Parameter koneksi Firestore:
FIRESTORE_DATABASE_NAME: Nama database Firestore dengan kompatibilitas MongoDB tempat Anda memigrasikan data. Contoh:
firestore-database-name
.FIRESTORE_CONNECTION_URI: String URI koneksi untuk database Firestore dengan kompatibilitas MongoDB.
Contoh:
mongodb://USERNAME:PASSWORD@CONNECTION_STRING:443/FIRESTORE_DATABASE_NAME?loadBalanced=true&authMechanism=SCRAM-SHA-256&tls=true&retryWrites=false
.
Tetapkan variabel lingkungan khusus untuk jenis database sumber
Template berikut membantu menyiapkan variabel lingkungan yang khusus untuk jenis database sumber yang kompatibel dengan MongoDB dan cara men-deploy-nya.
MongoDB di Compute Engine
Variabel berikut khusus untuk database sumber MongoDB yang berada di cluster yang dikelola sendiri (Compute Engine). Tetapkan sebelum melanjutkan dengan perintah lain dalam panduan ini:
# 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"
Ganti kode berikut:
MONGODB_USERNAME: Nama pengguna database sumber yang kompatibel dengan MongoDB. Contoh:
mongouser
.MONGODB_PASSWORD: Sandi database sumber yang kompatibel dengan MongoDB. Contoh:
mongopassword
.MONGODB_IP_ADDRESS: tentukan alamat IP internal, beserta nomor port, VM yang menghosting server MongoDB Anda. Contoh:
10.0.0.1:27017
.Untuk deployment yang tidak di-shard, tetapi dikonfigurasi dengan set replika, alamat IP replika apa pun dalam set tersebut valid. Namun, sebaiknya gunakan salah satu replika sekunder.
Untuk sharded cluster, tentukan alamat salah satu server mongos Anda.
(Hanya untuk cluster dengan set replika yang tidak di-shard) REPLICA_SET: Tentukan nama set replika yang harus digunakan untuk proses migrasi. Contoh:
rs0
.MONGODB_DATABASE_NAME: Nama database sumber yang kompatibel dengan MongoDB. Contoh:
source_db
.PRIVATE_CONNECTION_NAME: ID konfigurasi konektivitas pribadi yang telah Anda buat sebelumnya. Contoh:
pc_name
.
MongoDB melalui SSH
Jika Anda mengelola deployment MongoDB pribadi di luar Compute Engine, Datastream mendukung koneksi ke database sumber Anda melalui tunnel SSH penerusan. Untuk mengetahui informasi selengkapnya, lihat Tunnel SSH.
Variabel berikut khusus untuk menghubungkan ke database sumber MongoDB melalui tunnel SSH penerusan. Tetapkan sebelum melanjutkan dengan perintah lain dalam panduan ini:
# 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"
Ganti kode berikut:
MONGODB_USERNAME: Nama pengguna database sumber yang kompatibel dengan MongoDB. Contoh:
mongouser
.MONGODB_PASSWORD: Sandi database sumber yang kompatibel dengan MongoDB. Contoh:
mongopassword
.MONGODB_IP_ADDRESS: tentukan alamat IP internal, beserta nomor port, VM yang menghosting server MongoDB Anda. Contoh:
10.0.0.1:27017
.Untuk deployment yang tidak di-shard, tetapi dikonfigurasi dengan set replika, alamat IP replika apa pun dalam set tersebut valid. Namun, sebaiknya gunakan salah satu replika sekunder.
Untuk sharded cluster, tentukan alamat salah satu server mongos Anda.
(Hanya untuk cluster dengan set replika yang tidak di-shard) REPLICA_SET: Tentukan nama set replika yang harus digunakan untuk proses migrasi. Contoh:
rs0
.MONGODB_DATABASE_NAME: Nama database sumber yang kompatibel dengan MongoDB. Contoh:
source_db
.BASTION_IP_ADDRESS: alamat host di jaringan Anda yang dapat menerima koneksi SSH. Hal ini dapat berupa server MongoDB itu sendiri, atau host Bastion yang ditetapkan yang memungkinkan akses SSH dari jaringan publik, dan juga menyediakan konektivitas internal ke server MongoDB yang sebenarnya. Contoh:
30.0.0.1
.BASTION_SSH_PORT: Port SSH di host. Contoh:
22
.BASTION_SSH_USERNAME: Nama pengguna untuk koneksi SSH.
BASTION_SSH_PRIVATE_KEY: Payload lengkap kunci pribadi SSH. Misalnya, untuk kunci RSA, payload ini akan menyertakan header
-----BEGIN RSA PRIVATE KEY-----
dan footer-----END RSA PRIVATE KEY-----
. Contoh:BASTION_SSH_PRIVATE_KEY=$(cat ~/.ssh/private_key)
Amazon DocumentDB
Pastikan Anda memiliki kunci SSH pribadi untuk instance Amazon EC2 yang akan menyediakan koneksi ke cluster DocumentDB. Pastikan juga Anda telah mendownload Paket Sertifikat khusus wilayah seperti yang dijelaskan di bagian Konfigurasi Resource, serta mengekstrak dan memvalidasi sertifikat tertentu.
Variabel berikut khusus untuk menghubungkan ke database sumber DocumentDB melalui tunnel SSH penerusan. Tetapkan sebelum melanjutkan dengan perintah lain dalam panduan ini:
# 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"
Ganti kode berikut:
MONGODB_USERNAME: Nama pengguna database sumber DocumentDB. Contoh:
mongouser
.MONGODB_PASSWORD: Sandi database sumber DocumentDB. Contoh:
mongopassword
.MONGODB_HOST_ADDRESS: Alamat cluster DocumentDB. Contoh:
mydocumentdb.cluster-abcd.us-east-2.docdb.amazonaws.com:27017
.REPLICA_SET: Tentukan nama set replika yang harus digunakan untuk proses migrasi. Contoh:
rs0
.MONGODB_DATABASE_NAME: Nama database sumber DocumentDB. Contoh:
source_db
.BASTION_IP_ADDRESS: alamat IP eksternal instance EC2 yang memungkinkan akses SSH dari jaringan publik, dan juga menyediakan konektivitas internal ke cluster DocumentDB dalam Amazon VPC Anda. Contoh:
30.0.0.1
.BASTION_SSH_PORT: Port SSH di host. Contoh:
22
.BASTION_SSH_USERNAME: Nama pengguna untuk koneksi SSH.
BASTION_SSH_PRIVATE_KEY: Payload lengkap kunci pribadi SSH. Misalnya, untuk kunci RSA, payload ini akan menyertakan header
-----BEGIN RSA PRIVATE KEY-----
dan footer-----END RSA PRIVATE KEY-----
. Contoh:BASTION_SSH_PRIVATE_KEY=$(cat ~/ec2_bastion_host.pem)
DOCUMENT_DB_CA_CERTIFICATE: Payload lengkap Sertifikat CA DocumentDB. Payload ini harus menyertakan header
-----BEGIN CERTIFICATE-----
dan footer-----END CERTIFICATE-----
serta hanya boleh menyertakan satu sertifikat. Contoh:BASTION_SSH_PRIVATE_KEY=$(cat ~/us-east-1.pem)
Azure Cosmos DB
Variabel berikut khusus untuk database sumber Azure Cosmos DB. Tetapkan sebelum melanjutkan perintah lain dalam panduan ini:
# Azure Cosmos DB Parameters
MONGODB_USERNAME="MONGODB_USERNAME"
MONGODB_PASSWORD="MONGODB_PASSWORD"
MONGODB_HOST_ADDRESS="MONGODB_HOST_ADDRESS"
MONGODB_DATABASE_NAME="MONGODB_DATABASE_NAME"
Ganti kode berikut:
- MONGODB_USERNAME: Nama pengguna database sumber yang kompatibel dengan MongoDB. Contoh:
mongouser
. - MONGODB_PASSWORD: Sandi database sumber yang kompatibel dengan MongoDB. Contoh:
mongopassword
. - MONGODB_HOST_ADDRESS: Nama host database sumber yang kompatibel dengan MongoDB. Nilai harus sesuai dengan
format koneksi SRV MongoDB.
Contoh:
host.cosmos.azure.example.com
. - MONGODB_DATABASE_NAME: Nama database sumber yang kompatibel dengan MongoDB. Contoh:
source_db
.
MongoDB Atlas
Variabel berikut khusus untuk database sumber MongoDB Atlas. Tetapkan sebelum melanjutkan perintah lain dalam panduan ini:
# MongoDB Atlas Parameters
MONGODB_USERNAME="MONGODB_USERNAME"
MONGODB_PASSWORD="MONGODB_PASSWORD"
MONGODB_HOST_ADDRESS="MONGODB_HOST"
MONGODB_DATABASE_NAME="MONGODB_DATABASE_NAME"
Ganti kode berikut:
- MONGODB_USERNAME: Nama pengguna database sumber yang kompatibel dengan MongoDB. Contoh:
mongouser
. - MONGODB_PASSWORD: Sandi database sumber yang kompatibel dengan MongoDB. Contoh:
mongopassword
. - MONGODB_HOST_ADDRESS: Nama host database sumber yang kompatibel dengan MongoDB. Nilai harus sesuai dengan
format koneksi SRV MongoDB.
Contoh:
host.mongodb.example.com
. - MONGODB_DATABASE_NAME: Nama database sumber yang kompatibel dengan MongoDB. Contoh:
source_db
.
Langkah berikutnya
Lanjutkan ke Membuat profil koneksi.