העברת טבלת CDC לאזור אחר

בדף הזה מתוארות שיטות מומלצות לתרחיש שימוש שבו הגדרתם שכפול של Datastream ל-BigQuery, אבל הגדרתם את מערך הנתונים של היעד באזור שגוי. לאחר מכן, אתם רוצים להעביר את מערך הנתונים לאזור אחר (או למספר אזורים) בלי שתצטרכו לסנכרן מחדש את כל הנתונים ממסד הנתונים של המקור אל BigQuery.

לפני שמתחילים

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

  • ההעברה לוקחת זמן, ובמהלך הפעולה צריך להשהות את הזרם באופן זמני. כדי לשמור על תקינות הנתונים, מסד הנתונים של המקור צריך לשמור את יומני השינויים כשהזרם מושהה. כדי להעריך כמה זמן צריך להשהות את הזרם, צריך לשלב את הערך של max_staleness במערך הנתונים ואת פעולת המיזוג עם משך ההרצה הארוך ביותר:
    • במאמר בנושא ערך מומלץ לטבלה max_staleness מוסבר כמה זמן יכול לקחת עד שפעולות המיזוג יסתיימו.
    • כדי למצוא את הערך המקסימלי של max_staleness במערך הנתונים, אפשר לעיין במאמר בנושא קביעת הערך הנוכחי של max_staleness בטבלה ולהתאים את השאילתה לצרכים הספציפיים שלכם.
    • אם ההשהיה המשוערת ארוכה מדי מכדי שמאגר נתוני המקור יוכל לתמוך בה, כדאי לשקול להקטין באופן זמני את הערך של max_staleness עבור הטבלאות במערך הנתונים.
  • מוודאים שלמשתמש שמבצע את ההעברה יש מספיק משאבי BigQuery באזור היעד (הזמנת שאילתות והזמנת משאבים ברקע). מידע נוסף על הזמנות זמין במאמר הקצאות של הזמנות.
  • מוודאים שלמשתמש שמבצע את ההעברה יש הרשאות מספיקות לביצוע הפעולה הזו, כמו אמצעי בקרה של ניהול זהויות והרשאות גישה (IAM) או VPC Service Controls.

שלבים בהעברה

כדי להתחיל העברה של מערך נתונים, משתמשים בשכפול נתונים ב-BigQuery:

  1. במסוף Google Cloud , עוברים לדף BigQuery Studio.

    כניסה ל-BigQuery Studio

  2. יוצרים העתק של מערך נתונים ב-BigQuery באזור החדש:

    ALTER SCHEMA DATASET_NAME
    ADD REPLICA 'NEW_REGION'
    OPTIONS(location='NEW_REGION');
    

    מחליפים את מה שכתוב בשדות הבאים:

    • DATASET_NAME: השם של מערך הנתונים שרוצים ליצור.
    • NEW_REGION: השם של האזור שבו רוצים ליצור את מערך הנתונים. לדוגמה, region-us.
  3. עוקבים אחרי התקדמות ההעברה ומחכים עד שסימן המים של העותק ברפליקה יהיה בטווח של כמה דקות מהעותק הראשי. אפשר להריץ את השאילתה הזו ב-BigQuery INFORMATION_SCHEMA כדי לבדוק את התקדמות ההעברה:

    SELECT
    catalog_name as project_id,
    schema_name as dataset_name,
    replication_time as dataset_replica_staleness
    FROM
    'NEW_REGION'.INFORMATION_SCHEMA.SCHEMATA_REPLICAS
    WHERE
    catalog_name = PROJECT_ID
    AND schema_name = DATASET_NAME
    AND location = NEW_REGION;
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
    • DATASET_NAME: השם של מערך הנתונים.
    • DATASET_REPLICA_STALENESS: הגדרת הטריות של הטבלאות בעותק של מערך הנתונים שיצרתם.
    • NEW_REGION: האזור שבו יצרתם את מערך הנתונים.
  4. משהים את הסטרימינג הקיים ב-Datastream. מידע נוסף מופיע במאמר בנושא השהיית הסטרימינג.

  5. מחכים עד שהזרם מתרוקן ורושמים את השעה שבה הזרם נכנס למצב PAUSED.

  6. כדי לוודא שהשינויים האחרונים ב-CDC הוחלו על טבלת BigQuery, בודקים את upsert_stream_apply_watermark של הטבלה. מריצים את השאילתה הבאה ומוודאים שחותמת הזמן של סימן המים היא 10 דקות אחרי שהשידור הושהה:

    SELECT table_name, upsert_stream_apply_watermark
    FROM DATASET_NAME.INFORMATION_SCHEMA.TABLES
    

    כדי להריץ את השאילתה רק עבור טבלה ספציפית, מוסיפים את סעיף WHERE הבא:

    WHERE table_name = 'TABLE_NAME'
    

    מחליפים את מה שכתוב בשדות הבאים:

    • DATASET_NAME: השם של מערך הנתונים.
    • TABLE_NAME: אופציונלי. הטבלה שרוצים לבדוק את upsert_stream_apply_watermark שלה.
  7. משתמשים בשאילתה משלב 3 כדי לוודא שסימן המים של העותק מהאזור החדש נוצר אחרי upsert_stream_apply_watermark שצולם בשלב 6.

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

  9. כדי לקדם את העותק של מערך הנתונים ב-BigQuery, מריצים את הפקודה הבאה ב-BigQuery Studio:

    ALTER SCHEMA DATASET_NAME
    SET OPTIONS(primary_replica = 'NEW_REGION');
    

    מחליפים את מה שכתוב בשדות הבאים:

    • DATASET_NAME: השם של מערך הנתונים.
    • NEW_REGION: האזור שבו יצרתם את מערך הנתונים.
  10. אם אתם לא צריכים יותר את מערך הנתונים המקורי (עכשיו הוא העותק) ולא רוצים לשלם עלויות נוספות, אתם יכולים להיכנס ל-BigQuery Studio ולמחוק את מערך הנתונים המקורי של BigQuery:

    ALTER SCHEMA DATASET_NAME DROP REPLICA IF EXISTS ORIGINAL_REGION;
    

    מחליפים את מה שכתוב בשדות הבאים:

    • DATASET_NAME: השם של מערך הנתונים המקורי.
    • ORIGINAL_REGION: האזור של מערך הנתונים המקורי.
  11. יוצרים שידור חדש עם אותה הגדרה בדיוק, אבל עם מיקום יעד חדש ב-BigQuery.

  12. מתחילים את השידור החדש.

    כדי למנוע שכפול של אירועים כפולים, צריך להפעיל את הזרם ממיקום ספציפי:

    • למקורות MySQL ו-Oracle: אפשר לזהות את מיקום היומן על ידי בדיקת היומנים של הזרם המקורי ומציאת המיקום האחרון שממנו הזרם נקרא בהצלחה. מידע על הפעלת הסטרימינג ממיקום ספציפי מופיע במאמר בנושא ניהול סטרימינג.
    • במקורות PostgreSQL: השידור החדש מתחיל לקרוא שינויים ממספר הרצף הראשון ביומן (LSN) במשבצת השכפול. יכול להיות שחלק מהשינויים האלה כבר עובדו בזרם המקורי, ולכן צריך לשנות באופן ידני את המצביע של משבצת השכפול ל-LSN האחרון שממנו Datastream קרא. אפשר למצוא את מספר ה-LSN הזה ביומני הצרכן של Datastream.
  13. אפשר גם למחוק את הזרם המקורי.