טעינת נתונים מ-MySQL ל-BigQuery
כדי לתזמן העברות נתונים חוזרות מ-MySQL ל-BigQuery, אפשר ליצור הגדרת העברה כדי לציין אילו אובייקטים של נתונים להעביר, ובאיזו תדירות לתזמן את העברת הנתונים. אחרי שמגדירים את ההעברה, שירות העברת הנתונים ל-BigQuery מעביר את הנתונים העדכניים לטבלה ב-BigQuery לפי לוח הזמנים שצוין.
מידע על העברה של MySQL זמין במאמר מבוא להעברות נתונים של MySQL.
מגבלות
העברות נתונים מ-MySQL כפופות למגבלות הבאות:
- המספר המקסימלי של חיבורים בו-זמנית למסד נתונים של MySQL נקבע על ידי פרמטר ההגדרה
max_connectionsשל MySQL. כברירת מחדל, המגבלה היא 151 חיבורים, אבל אפשר להגדיל אותה לפי הצורך. כתוצאה מכך, מספר ההפעלות של העברות נתונים בו-זמניות למסד נתונים יחיד של MySQL מוגבל למספר המקסימלי הזה. המגבלה הזו גם אומרת שמספר משימות ההעברה שפועלות בו-זמנית צריך להיות קטן מהמספר המקסימלי של החיבורים בו-זמנית שנתמכים במסד הנתונים של MySQL. - הגדרת העברה אחת יכולה לתמוך רק בהרצה אחת של העברת נתונים בזמן נתון. אם מתוכננת העברת נתונים שנייה לפני שההעברה הראשונה מסתיימת, רק ההעברה הראשונה תושלם. כל העברת נתונים אחרת שחופפת להעברה הראשונה תדלג.
- כדי להימנע מדילוג על העברות במסגרת הגדרת העברה יחידה, מומלץ להגדיר את האפשרות תדירות החזרה כדי להגדיל את משך הזמן בין העברות של נתונים בכמות גדולה.
- במהלך העברת נתונים, המחבר של MySQL מזהה עמודות מפתח שנוספו לאינדקס וחולקו למחיצות כדי להעביר את הנתונים בקבוצות במקביל. לכן, כדי לשפר את הביצועים ולהפחית את שיעור השגיאות בהעברות הנתונים, מומלץ לציין עמודות של מפתחות ראשיים או להשתמש בעמודות שנוספו לאינדקס בטבלה.
- אם יש לכם אילוצים של מפתחות ראשיים או מפתחות נוספים לאינדקס, אפשר ליצור קבוצות מקבילות רק בעמודות מהסוגים הבאים:
INTEGERTINYINTSMALLINTFLOATREALDOUBLENUMERICBIGINTDECIMALDATE
- בהעברות נתונים של MySQL שלא משתמשות במפתח ראשי או בעמודות שנוספו לאינדקס, אי אפשר להעביר יותר מ-2,000,000 רשומות לכל טבלה.
- אם יש לכם אילוצים של מפתחות ראשיים או מפתחות נוספים לאינדקס, אפשר ליצור קבוצות מקבילות רק בעמודות מהסוגים הבאים:
מגבלות על העברות מצטברות
העברות מצטברות של MySQL כפופות למגבלות הבאות:- אפשר לבחור רק
TIMESTAMPעמודות כעמודות של סימני מים. - הטמעה מצטברת נתמכת רק בנכסים עם עמודות סימן מים תקינות.
- הערכים בעמודה של סימן המים חייבים להיות בעלייה מונוטונית.
- העברות מצטברות לא יכולות לסנכרן פעולות מחיקה בטבלת המקור.
- הגדרת העברה אחת יכולה לתמוך רק בהטמעה מצטברת או בהטמעה מלאה.
- אי אפשר לעדכן אובייקטים ברשימה
assetאחרי ההפעלה הראשונה של ההעברה המצטברת. - אי אפשר לשנות את מצב הכתיבה בהגדרות ההעברה אחרי ההפעלה הראשונה של הטמעת הנתונים המצטברים.
- אי אפשר לשנות את העמודה של סימן המים או את המפתח הראשי אחרי ההפעלה הראשונה של הטמעת נתונים מצטברת.
- הטבלה ב-BigQuery שמוגדרת כיעד מסודרת באשכולות באמצעות המפתח הראשי שצוין, והיא כפופה למגבלות של טבלאות מסודרות באשכולות.
כשמעדכנים הגדרת העברה קיימת למצב הטמעה מצטברת בפעם הראשונה, העברת הנתונים הראשונה אחרי העדכון מעבירה את כל הנתונים הזמינים ממקור הנתונים. בכל העברת נתונים מצטברת שתתבצע לאחר מכן, יועברו רק השורות החדשות והמעודכנות ממקור הנתונים.
מומלץ ליצור אינדקסים בעמודה של סימן המים. המחבר הזה משתמש בעמודות של סימני מים למסננים בהעברות מצטברות, ולכן הוספת אינדקס לעמודות האלה יכולה לשפר את הביצועים.
כשמבצעים העברה מצטברת, צריך להשתמש במיפוי המעודכן של סוגי הנתונים.
לפני שמתחילים
- יוצרים משתמש במסד הנתונים של MySQL.
- מוודאים שביצעתם את כל הפעולות שנדרשות כדי להפעיל את שירות העברת הנתונים ל-BigQuery.
- יוצרים מערך נתונים ב-BigQuery לאחסון הנתונים.
- מוודאים שיש לכם את התפקידים הנדרשים כדי להשלים את המשימות שמתוארות במסמך הזה.
התפקידים הנדרשים
כדי לקבל את ההרשאות שנדרשות ליצירת העברת נתונים באמצעות שירות העברת נתונים ל-BigQuery, צריך לבקש מהאדמין להקצות לכם את תפקיד BigQuery Admin (roles/bigquery.admin) ב-IAM בפרויקט.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקיד המוגדר מראש הזה כולל את ההרשאות שנדרשות כדי ליצור העברת נתונים בשירות העברת הנתונים ל-BigQuery. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי ליצור העברת נתונים באמצעות שירות העברת הנתונים ל-BigQuery, נדרשות ההרשאות הבאות:
-
הרשאות לשירות העברת נתונים ל-BigQuery:
-
bigquery.transfers.update -
bigquery.transfers.get
-
-
הרשאות ב-BigQuery:
-
bigquery.datasets.get -
bigquery.datasets.getIamPolicy -
bigquery.datasets.update -
bigquery.datasets.setIamPolicy -
bigquery.jobs.create
-
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
מידע נוסף זמין במאמר מתן גישה ל-bigquery.admin.
אם אתם מתכוונים להגדיר התראות על הפעלת העברות ב-Pub/Sub, ודאו שיש לכם את ההרשאה pubsub.topics.setIamPolicy לניהול זהויות והרשאות גישה (IAM). אם אתם מגדירים רק התראות באימייל, אתם לא צריכים הרשאות Pub/Sub. מידע נוסף זמין במאמר התראות על הפעלות של שירות העברת הנתונים ל-BigQuery.
חיבורים לרשת
אם אין כתובת IP ציבורית זמינה לחיבור למסד הנתונים של MySQL, צריך להגדיר חיבור לרשת.
הוראות מפורטות להגדרת הרשת הנדרשת מופיעות במסמכים הבאים:
- אם אתם מעבירים מ-Cloud SQL, כדאי לעיין במאמר בנושא הגדרת גישה למכונת Cloud SQL.
- אם אתם מעבירים מ-AWS, כדאי לעיין במאמר בנושא הגדרה של רשת ה-VPN של AWS-Google Cloud ומחבר הרשת.
- אם אתם מעבירים מ-Azure, כדאי לעיין במאמר בנושא הגדרת ה-VPN של Azure-Google Cloud והחיבור לרשת.
טעינת נתוני MySQL ל-BigQuery
כדי להוסיף נתוני MySQL ל-BigQuery, צריך להגדיר העברה באחת מהאפשרויות הבאות:
המסוף
נכנסים לדף העברות נתונים.
לוחצים על Create transfer.
בקטע Source type, בשדה Source בוחרים באפשרות MySQL.
בקטע Data source details (פרטים של מקור הנתונים), מבצעים את הפעולות הבאות:
- בשדה Network attachment, בוחרים חיבור רשת קיים או לוחצים על Create Network Attachment. למידע נוסף, קראו את הקטע חיבורי רשת במסמך הזה.
- בשדה Host, מזינים את שם המארח או את כתובת ה-IP של שרת מסד הנתונים של MySQL.
- בשדה מספר יציאה, מזינים את מספר היציאה של שרת מסד הנתונים של MySQL.
- בשדה Database name, מזינים את השם של מסד הנתונים ב-MySQL.
- בשדה שם משתמש, מזינים את שם המשתמש של משתמש MySQL שיזם את החיבור למסד הנתונים של MySQL.
- בשדה Password, מזינים את הסיסמה של משתמש MySQL שיוזם את החיבור למסד הנתונים של MySQL.
- בקטע מצב TLS, בוחרים אפשרות מהתפריט. מידע נוסף על מצבי TLS זמין במאמר בנושא הגדרת TLS.
- בשדה Trusted PEM Certificate, מזינים את האישור הציבורי של רשות האישורים (CA) שהנפיקה את אישור ה-TLS של שרת מסד הנתונים. מידע נוסף זמין במאמר אישור שרת מהימן (PEM).
- בשדה Enable legacy mapping, בוחרים באפשרות true (ברירת המחדל) כדי להשתמש במיפוי סוגי הנתונים הקודם. בוחרים באפשרות false כדי להשתמש במיפוי המעודכן של סוגי הנתונים. אם אתם מבצעים העברה מצטברת, הערך הזה חייב להיות false. מידע נוסף על העדכונים במיפוי סוגי הנתונים זמין בקטע 16 במרץ 2027.
- בקטע סוג ההטמעה, בוחרים באפשרות מלאה או מצטברת.
- אם בוחרים באפשרות מצטבר (תצוגה מקדימה) במצב כתיבה, בוחרים באפשרות הוספה או עדכון והוספה. מידע נוסף על מצבי הכתיבה השונים זמין במאמר בנושא העברות מלאות או מצטברות.
בקטע MySQL objects to transfer, לוחצים על Browse.
בוחרים את האובייקטים שרוצים להעביר למערך הנתונים ב-BigQuery. אפשר גם להזין ידנית בשדה הזה את כל האובייקטים שרוצים לכלול בהעברת הנתונים.
- אם בחרתם באפשרות הוספה כמצב הכתיבה המצטבר, אתם צריכים לבחור עמודה כעמודת סימן המים.
- אם בחרתם באפשרות עדכון או הוספה (upsert) כמצב הכתיבה המצטברת, אתם צריכים לבחור עמודה כעמודת סימן המים, ואז לבחור עמודה אחת או יותר כמפתח הראשי.
בקטע Transfer config name, בשדה השם המוצג, מזינים שם להעברה. שם ההעברה יכול להיות כל ערך שמאפשר לכם לזהות את ההעברה אם תצטרכו לשנות אותה בהמשך.
בקטע Schedule options:
- בוחרים את תדירות החזרה. אם בוחרים באפשרות שעות, ימים (ברירת המחדל), שבועות או חודשים, צריך גם לציין תדירות. אפשר גם לבחור באפשרות בהתאמה אישית כדי ליצור תדירות חזרה ספציפית יותר. אם בוחרים באפשרות על פי דרישה, העברת הנתונים הזו מתבצעת רק כשמפעילים את ההעברה באופן ידני.
- אם רלוונטי, בוחרים באפשרות התחלה מיידית או התחלה בשעה מוגדרת ומזינים תאריך התחלה וזמן הפעלה.
בקטע Destination settings, בשדה Dataset בוחרים את מערך הנתונים שיצרתם לאחסון הנתונים, או לוחצים על Create new dataset ויוצרים מערך נתונים חדש שישמש כמערך הנתונים של היעד.
אופציונלי: בקטע אפשרויות התראה, מבצעים את הפעולות הבאות:
- כדי להפעיל התראות באימייל, לוחצים על המתג התראות באימייל כדי להעביר אותו למצב מופעל. כשמפעילים את האפשרות הזו, האדמין של ההעברה מקבל התראה באימייל אם הפעלת ההעברה נכשלת.
- כדי להגדיר התראות ב-Pub/Sub להעברה, לוחצים על המתג Pub/Sub notifications (התראות Pub/Sub) למצב מופעל. אפשר לבחור את שם הנושא או ללחוץ על Create a topic כדי ליצור נושא.
לוחצים על Save.
BQ
מזינים את הפקודה bq mk ומציינים את הדגל ליצירת העברה --transfer_config:
bq mk --transfer_config --project_id=PROJECT_ID --data_source=DATA_SOURCE --display_name=DISPLAY_NAME --target_dataset=DATASET --params='PARAMETERS'
מחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID (אופציונלי): מזהה הפרויקט ב- Google Cloud .
אם לא מציינים פרויקט מסוים באמצעות הדגל
--project_id, המערכת משתמשת בפרויקט שמוגדר כברירת מחדל. - DATA_SOURCE: מקור הנתונים, שהוא
mysql. - DISPLAY_NAME: השם המוצג של הגדרות העברת הנתונים. שם ההעברה יכול להיות כל ערך שיאפשר לכם לזהות את ההעברה אם תצטרכו לשנות אותה בהמשך.
- DATASET: קבוצת הנתונים שאליה רוצים להעביר את הנתונים בהגדרות ההעברה.
PARAMETERS: הפרמטרים של הגדרות ההעברה שנוצרו בפורמט JSON. לדוגמה:
--params='{"param":"param_value"}'. אלה הפרמטרים להעברה של MySQL:-
connector.networkAttachment(אופציונלי): השם של מחבר הרשת שאליו רוצים להתחבר למסד הנתונים של MySQL. -
connector.database: השם של מסד הנתונים ב-MySQL. -
connector.endpoint.host: שם המארח או כתובת ה-IP של מסד הנתונים. -
connector.endpoint.port: מספר היציאה של מסד הנתונים. -
connector.authentication.username: שם המשתמש של המשתמש במסד הנתונים. -
connector.authentication.password: הסיסמה של המשתמש במסד הנתונים. connector.connectionType -
connector.connectionType(אופציונלי): סוג החיבור שקובע את כתובת ה-URL של החיבור. הערך יכול להיותSERVICE,SIDאוTNS. אם לא מציינים ערך, ברירת המחדל היאSERVICE. -
connector.legacyMapping: מגדירים את הערךtrue(ברירת המחדל) כדי להשתמש במיפוי סוגי הנתונים הקודם. כדי להשתמש במיפוי המעודכן של סוגי הנתונים, מגדירים את הערךfalse. אם מבצעים העברה מצטברת, הערך הזה חייב להיותfalse. מידע נוסף על עדכוני מיפוי סוגי הנתונים זמין במאמר בנושא 16 במרץ 2027. -
connector.tls.mode: מציינים הגדרת TLS לשימוש בהעברה הזו:-
ENCRYPT_VERIFY_CA_AND_HOSTכדי להצפין נתונים, ולאמת את רשות האישורים ואת שם המארח -
ENCRYPT_VERIFY_CAכדי להצפין נתונים, ולאמת את רשות האישורים בלבד -
ENCRYPT_VERIFY_NONEלהצפנת נתונים בלבד DISABLEללא הצפנה או אימות
-
-
connector.tls.trustedServerCertificate: (אופציונלי) מספקים אישור אחד או יותר בקידוד PEM. חובה רק אם הערך שלconnector.tls.modeהואENCRYPT_VERIFY_CA_AND_HOSTאוENCRYPT_VERIFY_CA. -
ingestionType: מצייניםfullאוincremental. העברות מצטברות נתמכות בגרסת טרום-השקה (Preview). למידע נוסף, קראו את המאמר העברות מלאות או מצטברות. -
writeMode: מצייניםWRITE_MODE_APPENDאוWRITE_MODE_UPSERT. -
watermarkColumns: מציינים עמודות בטבלה כעמודות של סימני מים. השדה הזה נדרש להעברות מצטברות. -
primaryKeys: מציינים עמודות בטבלה כמפתחות ראשיים. השדה הזה נדרש להעברות מצטברות. -
assets: רשימה של שמות הטבלאות ב-MySQL שיועברו ממסד הנתונים של MySQL כחלק מההעברה.
-
לדוגמה, הפקודה הבאה יוצרת העברה של MySQL בשם My Transfer:
bq mk --transfer_config --target_dataset=mydataset --data_source=mysql --display_name='My Transfer' --params='{"assets":["DB1/DEPARTMENT","DB1/EMPLOYEES"], "connector.authentication.username": "User1", "connector.authentication.password":"ABC12345", "connector.encryptionMode":"FULL", "connector.database":"DB1", "connector.endpoint.host":"54.74.220.23", "connector.endpoint.port":3306 "ingestionType":"incremental", "writeMode":"WRITE_MODE_APPEND", "watermarkColumns":["createdAt","createdAt"], "primaryKeys":[['dep_id'], ['report_by','report_title']], "connector.tls.mode": "ENCRYPT_VERIFY_CA_AND_HOST", "connector.tls.trustedServerCertificate": "PEM-encoded certificate"}'
כשמציינים כמה נכסים במהלך העברה מצטברת, הערכים בשדות watermarkColumns ו-primaryKeys תואמים למיקום של הערכים בשדה assets. בדוגמה הבאה, dep_id תואם לטבלה DB1/USER1/DEPARTMENT, ו-report_by ו-report_title תואמים לטבלה DB1/USER1/EMPLOYEES.
"primaryKeys":[['dep_id'], ['report_by','report_title']], "assets":["DB1/USER1/DEPARTMENT","DB1/USER1/EMPLOYEES"],
API
משתמשים ב-method projects.locations.transferConfigs.create ומספקים מופע של המשאב TransferConfig.
כדי להפעיל ידנית העברת נתונים מחוץ ללוח הזמנים הרגיל, אפשר להתחיל הרצה של מילוי נתונים.
פתרון בעיות
אם נתקלתם בבעיות בהגדרת העברת הנתונים, תוכלו להיעזר במאמר בעיות בהעברת נתונים מ-MySQL.
העברת מטא-נתונים
אפשר גם להשתמש במחבר של MySQL כדי להעביר מטא-נתונים ל-Knowledge Catalog. מידע נוסף זמין במאמר טעינת מטא-נתונים של MySQL ל-Knowledge Catalog.המאמרים הבאים
- סקירה כללית על שירות העברת הנתונים ל-BigQuery
- מידע ולמידה על ניהול העברות, כולל קבלת מידע על הגדרת העברה, הצגת רשימה של הגדרות העברה וצפייה בהיסטוריית ההרצה של העברה.
- איך טוענים נתונים באמצעות פעולות של BigQuery Omni