העברת תנועה ל-Firestore

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

אלה השלבים:

  1. בודקים אם אירעו שגיאות במהלך העברת הנתונים. חשוב לשים לב למגבלות הידועות הנוכחיות על סוגי נתונים וגדלי מסמכים.
  2. קובעים מתי מתאים להפסיק את תנועת הכתיבה למסד הנתונים של המקור.
  3. קובעים מתי כל הנתונים (כולל אירועי שינוי מהזמן האחרון) שוכפלו למסד הנתונים של Firestore עם תאימות ל-MongoDB. בשלב הזה, אפשר להפנות את תנועת הקריאה ליעד החדש.
  4. אחרי שכל עומסי העבודה של האפליקציה קוראים נתונים באופן עקבי רק מ-Firestore, אפשר להפעיל את מסד הנתונים של Firestore עם תאימות ל-MongoDB ולהפנות אליו את תנועת הכתיבה.

בדיקה של אבני דרך להשלמת ההעברה

כדי לבצע את ההוראות שבקטע הזה, צריך גישה ל-Dataflow במסוף Google Cloud .

נכנסים לדף Dataflow במסוף Google Cloud :

מעבר אל Dataflow

מסד הנתונים של המקור מקבל את כל תעבורת הנתונים של הקריאה והכתיבה

אחרי שמפעילים את צינורות Datastream ו-Dataflow, מסד הנתונים של המקור צריך להמשיך לקבל תעבורת נתונים של קריאה וכתיבה. אפשר להשתמש באבני הדרך הבאות כדי לקבוע מתי אפשר להמשיך לשלב הבא בתהליך ההעברה:

  • השלב Transactional write events בצינור Dataflow כבר לא מעבד נתונים שהצטברו, והתפוקה יורדת למצב יציב נמוך שתואם לתנועה הפעילה במסד הנתונים של המקור:

    אירועי כתיבה של עסקאות

  • העדכניות של הנתונים בכרטיסייה מעקב של Datastream היא מינימלית, והיא קרובה מאוד לתנועה השוטפת במסד הנתונים של המקור:

    עדכניות הנתונים

אחרי שהעברת הנתונים מגיעה למצב יציב, אפשר לעבור לשלב הבא.

השבתת תנועת הכתיבה למסד הנתונים של המקור

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

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

  2. כדי לוודא שכל תנועת הכתיבה עברה עיבוד, כדאי לעקוב אחרי התפוקה והיומנים של Datastream, וגם אחרי התפוקה, השהיית הנתונים והיומנים של Dataflow.

  3. בודקים את תור ההודעות המתות. בודקים אם יש מסמכים שלא ניתן לכתוב במסד הנתונים של היעד במהלך המיגרציה, ומחליטים אם להמשיך במיגרציה.

העברת תנועת קריאה ל-Firestore

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

אם בחרתם לאפשר תעבורת קריאה למסד הנתונים התואם ל-MongoDB בשלב הקודם:

  1. העברת תנועת הקריאה.
  2. מוודאים שכל השירותים שחוברו במקור למסד הנתונים של מקור התואם ל-MongoDB עודכנו כדי לבצע קריאות ממסד הנתונים של Firestore עם תאימות ל-MongoDB.

העברת תנועת כתיבה ל-Firestore

אחרי שמשלימים את השלב הקודם, אפשר להפנות מחדש את תנועת הכתיבה של האפליקציה ישירות אל Firestore.

הפסקת צינור עיבוד הנתונים להעברה

ההעברה הושלמה. עכשיו אפשר להפסיק את הסטרים של Datastream ואת העבודה של Dataflow.

להשהות את השידור של Datastream:

gcloud datastream streams update "$DATASTREAM_NAME" \
--location="$LOCATION" \
--state=PAUSED \
--update-mask=state

כדי להשבית את צינור הנתונים של Dataflow:

  1. הצגת כל המשרות הנוכחיות:

    gcloud dataflow jobs list --region="$LOCATION"
    

    הפלט יכלול רשימה של משימות Dataflow.

  2. ברשימת העבודות, מוצאים את הערך NAME עם חותמת הזמן שצוינה בDATAFLOW_START_TIME משתנה הסביבה.

    פורמט: dataflow-mongodb-to-firestore-DATAFLOW_START_TIME דוגמה: dataflow-mongodb-to-firestore-20250514173638.

  3. מקבלים את JOB_ID המתאים. דוגמה: 2025-05-14_17_36_39-10772223470853954680.

  4. מריצים את פקודת הניקוי של מזהה העבודה הזה:

    gcloud dataflow jobs drain \
    JOB_ID \
    --region="$LOCATION"
    

    דוגמה:

    gcloud dataflow jobs drain \
    2025-05-14_17_36_39-10772223470853954680 \
    --region="$LOCATION"
    

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

טיפים לפתרון בעיות מפורטים במאמר פתרון בעיות בהעברה.