הגדרת משתני סביבה

בדף הזה מוסבר על שלב ההכנה של תהליך ההעברה, שבו מגדירים משתני סביבה בסביבה המקומית. בסביבה הזו תריצו בהמשך את הפקודות שמגדירות ומפעילות את תהליך ההעברה. כל אחת מהפקודות האלה תשתמש במשתנה סביבה אחד או יותר שהגדרתם בשלב הזה.

בשלב הזה, מבצעים את הפעולות הבאות:

  1. מגדירים משתני סביבה שמשותפים לכל המקורות שנתמכים ותואמים ל-MongoDB.

  2. מגדירים משתני סביבה שספציפיים לסוג של מסד נתונים תואם ל-MongoDB ולשיטת הפריסה שלו.

הגדרה של משתני סביבה נפוצים

התבנית הבאה עוזרת להגדיר משתני סביבה שמשותפים לכל המקורות שנתמכים ותואמים ל-MongoDB. בשלב מאוחר יותר תוכלו להוסיף משתנים נוספים שספציפיים למקור MongoDB שלכם.

התבנית מגדירה את קבוצת משתני הסביבה הבאה:

  • פרמטרים כלליים שרלוונטיים לכל תהליך המיגרציה.
  • פרמטרים של קישור Datastream שמשמשים ליצירה ולניהול של פרופילים של קישור Datastream.
  • פרמטרים של מיקום נתונים ב-Datastream לניהול מיקום הנתונים בקטגוריה של Cloud Storage במהלך ההעברה.
  • פרמטרים של תבנית 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: מזהה הפרויקט של Google Cloud הפרויקט שבו יפעל צינור ההעברה. דוגמה: example-project.

      אפשר להשתמש במסד נתונים של Firestore עם תאימות ל-MongoDB שנמצא בפרויקט אחר. עם זאת, במדריך הזה אנחנו יוצאים מנקודת הנחה שכל המשאבים הרלוונטיים נמצאים באותו פרויקט.

    • LOCATION: אזור שבו יפעל צינור ההעברה. דוגמאות: nam5, us-central1.

      מומלץ להשתמש באותו אזור כמו מסד הנתונים של Firestore עם תאימות ל-MongoDB.

  • פרמטרים של חיבור Datastream:

    • SRC_CONNECTION_PROFILE_NAME: שם קריא לאנשים של פרופיל החיבור של Datastream למסד הנתונים של המקור שתואם ל-MongoDB. דוגמה: source-mongo-profile.

      בהמשך יוצרים פרופיל חיבור עם השם הזה.

    • DST_CONNECTION_PROFILE_NAME: שם קריא לפרופיל החיבור של Datastream לקטגוריית היעד ב-Cloud Storage. דוגמה: destination-gcs-profile.

      בהמשך יוצרים פרופיל חיבור ליעד עם השם הזה.

    • DATASTREAM_NAME: שם קריא של מקור נתונים של Datastream שיעביר את הנתונים ממסד הנתונים התואם ל-MongoDB אל Cloud Storage. דוגמה: 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: נתיב משנה בספרייה GCS_BUCKET_ROOT_PATH עבור מופע נתון של Datastream.

      אפשר להשתמש באותו פרופיל חיבור ליעד לכמה ייצואים ל-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: סוג המכונה של Compute Engine שבה יש להשתמש למשימת Dataflow. סוג המכונה המומלץ הוא e2-highmem-8.

  • פרמטרים של חיבור ל-Firestore:

    • FIRESTORE_DATABASE_NAME: השם של מסד הנתונים של Firestore עם תאימות ל-MongoDB שאליו מעבירים את הנתונים. דוגמה: firestore-database-name.

    • FIRESTORE_CONNECTION_URI: מחרוזת ה-URI של החיבור למסד הנתונים של Firestore עם תאימות ל-MongoDB.

      דוגמה: mongodb://USERNAME:PASSWORD@CONNECTION_STRING:443/FIRESTORE_DATABASE_NAME?loadBalanced=true&authMechanism=SCRAM-SHA-256&tls=true&retryWrites=false

הגדרת משתני סביבה שספציפיים לסוג מסד הנתונים של המקור

התבניות הבאות עוזרות להגדיר משתני סביבה שספציפיים לסוג של מסד נתונים תואם ל-MongoDB ולאופן הפריסה שלו.

‫MongoDB ב-Compute Engine

המשתנים הבאים ספציפיים למסדי נתונים של מקורות MongoDB שנמצאים באשכול בניהול עצמי (Compute Engine). צריך להגדיר אותם לפני שממשיכים עם פקודות אחרות במדריך הזה:

# 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: מציינים את כתובת ה-IP הפנימית, יחד עם מספר היציאה, של מכונת ה-VM שמארחת את שרת MongoDB. דוגמה: 10.0.0.1:27017.

    • בפריסות שלא מחולקות לשארדים, אבל מוגדרות עם קבוצות רפליקות, כתובת ה-IP של כל רפליקה בקבוצה היא תקפה. עם זאת, מומלץ להשתמש באחת מהרפליקות המשניות.

    • במקרה של אשכולות עם חלוקת נתונים, צריך לציין את הכתובת של אחד משרתי mongos.

  • (רק לאשכולות עם קבוצות רפליקות שלא חולקו לשברי מסד נתונים) ‫REPLICA_SET: מציינים את השם של קבוצת הרפליקות שצריך להשתמש בה בתהליך ההעברה. דוגמה: rs0.

  • MONGODB_DATABASE_NAME: השם של מסד הנתונים של המקור שתואם ל-MongoDB. דוגמה: source_db.

  • PRIVATE_CONNECTION_NAME: המזהה של הגדרת הקישוריות הפרטית שיצרתם קודם. דוגמה: pc_name.

MongoDB באמצעות SSH

אם אתם מנהלים פריסת MongoDB פרטית מחוץ ל-Compute Engine, ‏ Datastream תומך בחיבור למסד הנתונים של המקור באמצעות מנהרת SSH להעברת נתונים. מידע נוסף זמין במאמר בנושא מנהרות SSH.

המשתנים הבאים ספציפיים לחיבור למסדי נתונים של מקור MongoDB דרך מנהרת SSH קדימה. כדאי להגדיר אותם לפני שממשיכים לפקודות אחרות במדריך הזה:

# 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: מציינים את כתובת ה-IP הפנימית, יחד עם מספר היציאה, של מכונת ה-VM שמארחת את שרת MongoDB. דוגמה: 10.0.0.1:27017.

    • בפריסות שלא מחולקות לשארדים, אבל מוגדרות עם קבוצות רפליקות, כתובת ה-IP של כל רפליקה בקבוצה היא תקפה. עם זאת, מומלץ להשתמש באחת מהרפליקות המשניות.

    • במקרה של אשכולות עם חלוקת נתונים, צריך לציין את הכתובת של אחד משרתי mongos.

  • (רק לאשכולות עם קבוצות רפליקות שלא חולקו לשברי מסד נתונים) ‫REPLICA_SET: מציינים את השם של קבוצת הרפליקות שצריך להשתמש בה בתהליך ההעברה. דוגמה: rs0.

  • MONGODB_DATABASE_NAME: השם של מסד הנתונים של המקור שתואם ל-MongoDB. דוגמה: source_db.

  • BASTION_IP_ADDRESS: הכתובת של המארח ברשת שיכול לקבל חיבור SSH. יכול להיות שזה שרת MongoDB עצמו, או מארח Bastion ייעודי שמאפשר גישת SSH מרשת ציבורית, וגם מספק קישוריות פנימית לשרת MongoDB בפועל. דוגמה: 30.0.0.1.

  • BASTION_SSH_PORT: יציאת ה-SSH במארח. דוגמה: 22.

  • BASTION_SSH_USERNAME: שם המשתמש לחיבור ה-SSH.

  • BASTION_SSH_PRIVATE_KEY: המטען הייעודי (payload) המלא של מפתח SSH פרטי. לדוגמה, במקרה של מפתח RSA, מטען הייעודי הזה יכלול את הכותרת -----BEGIN RSA PRIVATE KEY----- ואת הכותרת התחתונה -----END RSA PRIVATE KEY-----. דוגמה: BASTION_SSH_PRIVATE_KEY=$(cat ~/.ssh/private_key)

Amazon DocumentDB

מוודאים שיש לכם את מפתח ה-SSH הפרטי של מופע Amazon EC2 שיספק את החיבור לאשכול DocumentDB. בנוסף, צריך לוודא שהורדתם את חבילת האישורים הספציפית לאזור, כמו שמתואר בקטע הגדרת משאבים, ושהרחבתם ואימתתם אישור ספציפי.

המשתנים הבאים ספציפיים לחיבור למסדי נתונים של מקור DocumentDB דרך מנהרת SSH קדימה. כדאי להגדיר אותם לפני שממשיכים לפקודות אחרות במדריך הזה:

# 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: כתובת ה-IP החיצונית של מופע EC2 שמאפשרת גישת SSH מרשת ציבורית, ומספקת גם קישוריות פנימית לאשכול DocumentDB בתוך Amazon VPC. דוגמה: 30.0.0.1.

  • BASTION_SSH_PORT: יציאת ה-SSH במארח. דוגמה: 22.

  • BASTION_SSH_USERNAME: שם המשתמש לחיבור ה-SSH.

  • BASTION_SSH_PRIVATE_KEY: המטען הייעודי (payload) המלא של מפתח SSH פרטי. לדוגמה, במקרה של מפתח RSA, מטען הייעודי הזה יכלול את הכותרת -----BEGIN RSA PRIVATE KEY----- ואת הכותרת התחתונה -----END RSA PRIVATE KEY-----. דוגמה: BASTION_SSH_PRIVATE_KEY=$(cat ~/ec2_bastion_host.pem)

  • DOCUMENT_DB_CA_CERTIFICATE: המטען הייעודי (payload) המלא של אישור ה-CA של DocumentDB. המטען הייעודי (payload) צריך לכלול את הכותרת -----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.

המאמרים הבאים

ממשיכים אל יצירת פרופילי חיבור.