פתרון בעיות במשימות שכפול

בדף הזה מוסבר איך לפתור בעיות שקשורות לעבודות שכפול ב-Cloud Data Fusion.

חריגה: אי אפשר ליצור קטגוריית אחסון זמנית

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

Caused by: java.io.IOException: Unable to create staging bucket
BUCKET_NAME in project PROJECT_NAME.

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

הערך של MySQL‏ CONVERT_TO_NULL לא נמצא בקבוצה

אם אתם משתמשים בגרסה קודמת של MySQL Connector/J, כמו גרסה 5, עבודת השכפול נכשלת עם השגיאה הבאה:

The connection property 'zeroDateTimeBehavior' only accepts values of the form:
'exception', 'round' or 'convertToNull'. The value 'CONVERT_TO_NULL' is not in
this set.

הערכים הקבילים של zeroDateTimeBehavior לא תואמים בין גרסאות שונות של MySQL Connector/J.

כדי לפתור את הבעיה, צריך להשתמש ב-MySQL Connector/J מגרסה 8 ואילך.

רפליקציה ומסדי נתונים של SQL Server Always On

מקור Microsoft SQL Server יכול לתעד שינויים מAlways On, העתק לקריאה בלבד. כדי להגדיר את זה, צריך להעביר את ארגומנט זמן הריצה source.connector.database.applicationIntent=ReadOnly למשימת השכפול. בלי הארגומנט הזה של זמן הריצה, העבודה נכשלת עם השגיאה הבאה:

Producer failure
java.lang.RuntimeException: com.microsoft.sqlserver.jdbc.SQLServerException:
Failed to update database "DATABASE_NAME" because the database is read-only.

כדי לפתור את הבעיה, צריך להגדיר את source.connector.database.applicationIntent=ReadOnly כארגומנט של זמן ריצה. הפעולה הזו מגדירה באופן פנימי את snapshot.isolation.mode ל-snapshot.

שגיאת שכפול באשכול סטטי של Managed Service for Apache Spark

כשמריצים עבודת שכפול, יכול להיות שחיבור SSL מצמתים של אשכול Managed Service for Apache Spark ייכשל עם השגיאה java.lang.NullPointerException או Connection reset:

ERROR [SparkRunnerphase-1:i.c.c.i.a.r.ProgramControllerServiceAdapter@93] -
Spark program 'phase-1' failed with error: The driver could not establish a
secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption.
Error: "Connection reset ClientConnectionId:ID"

השגיאה הזו מתרחשת בגלל ספק ה-SSL של Conscrypt שהוגדר לשימוש בגרסת ה-JDK שהותקנה ב-Managed Service for Apache Spark.

כדי לפתור את הבעיה הזו, צריך להשתמש בספק SSL שמוגדר כברירת מחדל ב-Java JDK. לשם כך, צריך להשבית את ספק ה-SSL של Conscrypt. כדי להשבית את ספק ה-SSL של Conscrypt, צריך להגדיר את מאפיין האשכול הבא כשמפעילים את אשכול Managed Service for Apache Spark:

--properties dataproc:dataproc.conscrypt.provider.enable=false

שכפול ב-SQL Server לא משכפל את כל העמודות בטבלאות שהשתנו

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

כדי לפתור את הבעיה, בצע את הצעדים הבאים:

  1. משביתים את מופע ה-CDC:

    EXEC sp_cdc_disable_table
    @source_schema = N'dbo',
    @source_name = N'myTable',
    @capture_instance = 'dbo_myTable'
    GO
    
  2. מפעילים מחדש את מופע ה-CDC:

    EXEC sp_cdc_enable_table
    @source_schema = N'dbo',
    @source_name = N'myTable',
    @role_name = NULL,
    @capture_instance = 'dbo_myTable'
    GO
    
  3. יוצרים משימת שכפול חדשה.

מידע נוסף מופיע במאמר טיפול בשינויים בטבלאות המקור.

שגיאות שקשורות לתפקידים ולהרשאות

הבעיות הבאות מתרחשות בבקרת הגישה.

בעיה בהרשאות של חשבון שירות ב-Cloud Data Fusion

כשמריצים עבודת שכפול באמצעות מסד הנתונים של Oracle, יכול להיות ששליפת רשימת טבלאות תיכשל עם השגיאה הבאה:

Error io.grpc.StatusRuntimeException: PERMISSION_DENIED: Permission
'datastream.streams.get' denied on 'projects/PROJECT_NAME/locations/REGION/streams/STREAM_NAME'

כשמריצים משימת שכפול עם מסד נתונים של Oracle,‏ Cloud Data Fusion משתמש בשירות Datastream בקצה העורפי. כדי לקבל את ההרשאות שדרושות לשימוש בשירות Datastream, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM‏ Datastream Admin (roles/datastream.admin) בחשבון השירות של Cloud Data Fusion.

לא ניתנה הרשאה לצפייה ב-Change Data Capture

כשמשכפלים נתונים מ-SQL Server, יכול להיות שתופיע השגיאה הבאה ביומן של צינור הנתונים:

No whitelisted table has enabled CDC, whitelisted table list does not contain any
table with CDC enabled or no table match the white/blacklist filter(s)

הבעיה הזו מתרחשת אם למשתמש שצוין במאפייני חיבור המקור אין הרשאות לצפייה ב-Change Data Capture ‏ (CDC) של הטבלה המשוכפלת. הפרמטר role_name שולט בזה כשמפעילים CDC בטבלה באמצעות sys.sp_cdc_enable_table.

מידע נוסף על מתן ההרשאות הנדרשות לצפייה ב-CDC זמין במאמרים הפעלת CDC בטבלה ו-sys.sp_cdc_enable_table.

בעיית הרשאה בסוג מוגדר על ידי המשתמש

אם למשתמש במסד הנתונים שמשמש את משימת השכפול אין הרשאות בסוג המוגדר על ידי המשתמש (UDT), יכול להיות שתופיע השגיאה הבאה ביומן של צינור הנתונים:

java.lang.IllegalArgumentException: The primary key cannot reference a non-existent
column'oid' in table TABLE_NAME

בעמודה oid בהודעת השגיאה הזו יכול להיות שמופיע UDT.

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

GRANT EXECUTE ON TYPE::UDT_NAME to YOUR_USER

‫SQL Server Agent לא פועל

אם SQL Server Agent לא פועל, יכול להיות שתופיע השגיאה הבאה ביומן של צינור הנתונים:

No maximum LSN recorded in the database; please ensure that the SQL Server Agent
is running [io.debezium.connector.sqlserver.SqlServerStreamingChangeEventSource]

כדי לפתור את הבעיה, צריך להפעיל את SQL Server Agent. מידע נוסף זמין במאמרי העזרה הבאים, בהתאם למערכת ההפעלה שבה אתם משתמשים:

הגרסה של צינור העיבוד של SQL Server Replication לא עדכנית

אם הגרסה של צינור הנתונים של SQL Server Replication לא עדכנית, השגיאה הבאה מופיעה ביומן של צינור הנתונים:

Method io/cdap/delta/sqlserver/SqlServerDeltaSource.configure(Lio/cdap/delta/api/SourceConfigurer;) is abstract

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

כדי לפתור את הבעיה, בצע את הצעדים הבאים:

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

    GET v3/namespaces/NAMESPACE_ID/apps/REPLICATOR_NAME
    

    מידע נוסף מופיע במאמר הצגת פרטים של עבודת שכפול.

  2. בודקים את הגרסאות של הפלאגין ואת אפליקציית הדלתא שבהן נעשה שימוש במשימת השכפול.

  3. כדי לאחזר את רשימת הארטיפקטים הזמינים, שולחים בקשת GET מסוג HTTP:

    GET /v3/namespaces/NAMESPACE_ID/artifacts
    

    מידע נוסף זמין במאמר בנושא רשימת ארטיפקטים זמינים.

אשכול סטטי של Managed Service for Apache Spark עם היקף אימות לא מספיק

אם אתם משתמשים באשכול סטטי של Managed Service for Apache Spark שנוצר עם היקף אימות לא מספיק, יכול להיות שתראו את השגיאה הבאה ביומן של צינור הנתונים:

ERROR [worker-DeltaWorker-0:i.c.c.i.a.r.ProgramControllerServiceAdapter@92] - Worker
Program 'DeltaWorker' failed.
Caused by: io.grpc.StatusRuntimeException: PERMISSION_DENIED: Request had
insufficient authentication scopes.

כדי לפתור את הבעיה הזו, צריך ליצור אשכול חדש של Managed Service for Apache Spark ולהפעיל את היקף ההרשאות cloud-platform באשכול הזה באותו פרויקט.