תבנית Sourcedb ל-Spanner

התבנית SourceDB to Spanner היא צינור להעברת נתונים באצווה שמעתיק נתונים ממסד נתונים רלציוני למסד נתונים קיים ב-Spanner. הצינור הזה משתמש ב-JDBC כדי להתחבר למסד הנתונים הרלציוני. אתם יכולים להשתמש בתבנית הזו כדי להעתיק נתונים מכל מסד נתונים רלציוני עם מנהלי התקנים זמינים של JDBC אל Spanner. הכלי הזה תומך רק בקבוצה מוגבלת של סוגים של MySQL

כדי להוסיף עוד שכבת הגנה, אפשר גם להעביר מפתח Cloud KMS יחד עם פרמטרים של שם משתמש, סיסמה ומחרוזת חיבור בהצפנת Base64, שמוצפנים באמצעות מפתח Cloud KMS. פרטים נוספים על הצפנת שם המשתמש, הסיסמה ופרמטרים של מחרוזת החיבור מופיעים בנקודת הקצה Cloud KMS API encryption.

הדרישות לגבי צינורות עיבוד נתונים

  • מנהלי ההתקנים של JDBC למסד הנתונים הרלציוני צריכים להיות זמינים.
  • טבלאות Spanner צריכות להתקיים לפני הפעלת צינור הנתונים.
  • לטבלאות Spanner צריכה להיות סכימה תואמת.
  • צריכה להיות גישה למסד הנתונים הרלציוני מרשת המשנה שבה פועל Dataflow.

פרמטרים של תבניות

פרמטר תיאור
sourceConfigURL מחרוזת כתובת ה-URL של חיבור JDBC. לדוגמה, jdbc:mysql://127.4.5.30:3306/my-db?autoReconnect=true&maxReconnects=10&unicode=true&characterEncoding=UTF-8 או הגדרת השארד.
instanceId מופע היעד של Cloud Spanner.
databaseId מסד הנתונים של Cloud Spanner שמשמש כיעד.
projectId זהו השם של הפרויקט ב-Cloud Spanner.
outputDirectory הספרייה הזו משמשת להעברה של רשומות שנכשלו, שדילגו עליהן או שסוננו במהלך ההעברה.
jdbcDriverJars אופציונלי: רשימת קובצי ה-JAR של מנהלי ההתקנים, מופרדת בפסיקים. לדוגמה: gs://your-bucket/driver_jar1.jar,gs://your-bucket/driver_jar2.jar. ברירת המחדל היא ריק.
jdbcDriverClassName אופציונלי: שם המחלקה של מנהל ההתקן של JDBC. לדוגמה: com.mysql.jdbc.Driver. ברירת המחדל היא: com.mysql.jdbc.Driver.
username אופציונלי: שם המשתמש שישמש לחיבור JDBC. ברירת המחדל היא ריק.
password אופציונלי: הסיסמה שתשמש לחיבור JDBC. ברירת המחדל היא ריק.
tables אופציונלי: טבלאות להעברה מהמקור. ברירת המחדל היא ריק.
numPartitions אופציונלי: מספר המחיצות. הערך הזה, יחד עם הגבול התחתון והגבול העליון, יוצר מחיצות של צעדים לביטויים שנוצרים של משפט WHERE שמשמשים לפיצול שווה של עמודת המחיצה. אם הקלט קטן מ-1, המספר מוגדר כ-1. ברירת המחדל: 0.
spannerHost אופציונלי: נקודת הקצה של Cloud Spanner שאליה מתקשרים בתבנית. לדוגמה: https://batch-spanner.googleapis.com. ברירת המחדל היא: https://batch-spanner.googleapis.com.
maxConnections אופציונלי: מגדיר את מאגר חיבורי ה-JDBC בכל עובד עם מספר מקסימלי של חיבורים. כדי לא להגביל את מספר המשתמשים, צריך להזין מספר שלילי. לדוגמה: -1. ברירת המחדל: 0.
sessionFilePath אופציונלי: נתיב הסשן ב-Cloud Storage שמכיל פרטי מיפוי מכלי ההעברה של Spanner. ברירת המחדל היא ריק.
transformationJarPath אופציונלי: מיקום מותאם אישית של קובץ jar ב-Cloud Storage שמכיל את הלוגיקה של טרנספורמציה מותאמת אישית לעיבוד רשומות. ברירת המחדל היא ריק.
transformationClassName אופציונלי: שם מחלקה שמוגדר במלואו ומכיל את הלוגיקה של השינוי המותאם אישית. זהו שדה חובה אם מציינים את transformationJarPath. ברירת המחדל היא ריק.
transformationCustomParameters אופציונלי: מחרוזת שמכילה פרמטרים מותאמים אישית שיועברו למחלקת ההמרה המותאמת אישית. ברירת המחדל היא ריק.
disabledAlgorithms אופציונלי: אלגוריתמים להשבתה, מופרדים בפסיקים. אם הערך הוא none, אף אלגוריתם לא מושבת. חשוב להשתמש בפרמטר הזה בזהירות, כי יכול להיות שיש אלגוריתמים שמושבתים כברירת מחדל בגלל פגיעויות או בעיות בביצועים. לדוגמה: SSLv3, RC4.
extraFilesToStage אופציונלי: נתיבים של Cloud Storage או סודות של Secret Manager שמופרדים בפסיקים, לקבצים שיועברו לשלב ההכנה בעובד. הקבצים האלה נשמרים בספרייה ‎ /extra_files בכל עובד. לדוגמה: gs://<BUCKET>/file.txt,projects/<PROJECT_ID>/secrets/<SECRET_ID>/versions/<VERSION_ID>.

הפעלת התבנית

המסוף

  1. עוברים לדף Dataflow Create job from template (יצירת משימה מתבנית).
  2. כניסה לדף Create job from template
  3. בשדה שם המשימה, מזינים שם ייחודי למשימה.
  4. אופציונלי: בשדה Regional endpoint (נקודת קצה אזורית), בוחרים ערך מהתפריט הנפתח. אזור ברירת המחדל הוא us-central1.

    רשימת האזורים שבהם אפשר להריץ משימת Dataflow מופיעה במאמר מיקומי Dataflow.

  5. בתפריט הנפתח Dataflow template (תבנית של העברת נתונים), בוחרים באפשרות the Sourcedb to Spanner template.
  6. בשדות הפרמטרים שמופיעים, מזינים את ערכי הפרמטרים.
  7. לוחצים על הפעלת העבודה.

‫CLI של gcloud

במעטפת או בטרמינל, מריצים את התבנית:

gcloud dataflow flex-template run JOB_NAME \
    --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Sourcedb_to_Spanner_Flex \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --parameters \
       sourceConfigURL=SOURCE_CONFIG_URL,\
       instanceId=INSTANCE_ID,\
       databaseId=DATABASE_ID,\
       projectId=PROJECT_ID,\
       outputDirectory=OUTPUT_DIRECTORY,\

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

  • JOB_NAME: שם ייחודי של המשימה לפי בחירתכם
  • VERSION: הגרסה של התבנית שבה רוצים להשתמש

    אפשר להשתמש בערכים הבאים:

    • latest כדי להשתמש בגרסה העדכנית של התבנית, שזמינה בתיקיית ההורה ללא תאריך בדלי – gs://dataflow-templates-REGION_NAME/latest/
    • שם הגרסה, כמו 2023-09-12-00_RC00, כדי להשתמש בגרסה ספציפית של התבנית, שאפשר למצוא אותה בתיקיית האב המתאימה עם התאריך בדלי – gs://dataflow-templates-REGION_NAME/
  • REGION_NAME: האזור שבו רוצים לפרוס את עבודת Dataflow, לדוגמה: us-central1
  • SOURCE_CONFIG_URL: כתובת ה-URL להתחברות למארח של מסד הנתונים של המקור. הערך יכול להיות 1. כתובת ה-URL של חיבור ה-JDBC – חייבת להכיל את המארח, היציאה ושם מסד הנתונים של המקור, ויכולה להכיל מאפיינים כמו autoReconnect,‏ maxReconnects וכו'. פורמט: ‎`jdbc:mysql://{host}:{port}/{dbName}?{parameters}`‎2. הנתיב להגדרת השארד
  • INSTANCE_ID: מזהה המופע של Cloud Spanner.
  • DATABASE_ID: מזהה מסד הנתונים ב-Cloud Spanner.
  • PROJECT_ID: מזהה הפרויקט ב-Cloud Spanner.
  • OUTPUT_DIRECTORY: ספריית הפלט לאירועים שנכשלו, דולגו או סוננו

API

כדי להריץ את התבנית באמצעות API בארכיטקטורת REST, שולחים בקשת HTTP POST. מידע נוסף על ה-API ועל היקפי ההרשאות שלו זמין במאמר projects.templates.launch.

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch
{
   "launchParameter": {
     "jobName": "JOB_NAME",
     "parameters": {
       "sourceConfigURL": "SOURCE_CONFIG_URL",
       "instanceId": "INSTANCE_ID",
       "databaseId": "DATABASE_ID",
       "projectId": "PROJECT_ID",
       "outputDirectory": "OUTPUT_DIRECTORY",
     },
     "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Sourcedb_to_Spanner_Flex",
     "environment": { "maxWorkers": "10" }
  }
}

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

  • PROJECT_ID: מזהה הפרויקט שבו רוצים להריץ את משימת Dataflow Google Cloud
  • JOB_NAME: שם ייחודי של המשימה לפי בחירתכם
  • VERSION: הגרסה של התבנית שבה רוצים להשתמש

    אפשר להשתמש בערכים הבאים:

    • latest כדי להשתמש בגרסה העדכנית של התבנית, שזמינה בתיקיית ההורה ללא תאריך בדלי – gs://dataflow-templates-REGION_NAME/latest/
    • שם הגרסה, כמו 2023-09-12-00_RC00, כדי להשתמש בגרסה ספציפית של התבנית, שאפשר למצוא אותה בתיקיית האב המתאימה עם התאריך בדלי – gs://dataflow-templates-REGION_NAME/
  • LOCATION: האזור שבו רוצים לפרוס את עבודת Dataflow, לדוגמה: us-central1
  • SOURCE_CONFIG_URL: כתובת ה-URL להתחברות למארח של מסד הנתונים של המקור. הערך יכול להיות 1. כתובת ה-URL של חיבור ה-JDBC – חייבת להכיל את המארח, היציאה ושם מסד הנתונים של המקור, ויכולה להכיל מאפיינים כמו autoReconnect,‏ maxReconnects וכו'. פורמט: ‎`jdbc:mysql://{host}:{port}/{dbName}?{parameters}`‎2. הנתיב להגדרת השארד
  • INSTANCE_ID: מזהה המופע של Cloud Spanner.
  • DATABASE_ID: מזהה מסד הנתונים ב-Cloud Spanner.
  • PROJECT_ID: מזהה הפרויקט ב-Cloud Spanner.
  • OUTPUT_DIRECTORY: ספריית הפלט לאירועים שנכשלו, דולגו או סוננו