בדף הזה מוסבר איך לייבא נתונים מקובץ SQL שמאוחסן בקטגוריה של Cloud Storage לאשכול AlloyDB ל-PostgreSQL. קבצי SQL הם קובצי טקסט פשוט עם רצף של פקודות SQL.
אפשר לבטל את הייבוא של נתונים לאשכולות AlloyDB. מידע נוסף זמין במאמר בנושא ביטול פעולת ייבוא.
כשמייבאים קובצי SQL dump, צריך לוודא שגרסת PostgreSQL שממנה נוצר ה-dump תואמת לגרסת PostgreSQL של מכונת AlloyDB. הייבוא של קובץ dump מגרסה חדשה יותר לגרסה ישנה יותר עלול להיכשל בגלל תחביר SQL לא תואם.
לפני שמתחילים
לפני שמתחילים בפעולת ייבוא:
- מוודאים שיש מספיק מכסת אחסון במסד הנתונים.
- פעולות ייבוא משתמשות במשאבי מסד נתונים, אבל הן לא מפריעות לפעולות רגילות במסד הנתונים, אלא אם לא הוקצו מספיק משאבים לאשכול.
תפקידים והרשאות שנדרשים לייבוא ל-AlloyDB
כדי לייבא נתונים מ-Cloud Storage אל AlloyDB, למשתמש שמבצע את הייבוא צריך להיות אחד מהתפקידים הבאים:
- התפקיד AlloyDB Admin
- תפקיד בהתאמה אישית, כולל ההרשאות הבאות:
alloydb.clusters.getalloydb.clusters.import
בנוסף, לחשבון השירות של אשכול AlloyDB צריך להיות אחד מהתפקידים הבאים:
- תפקיד IAM
storage.objectViewer - תפקיד בהתאמה אישית, כולל ההרשאות הבאות:
storage.objects.get
לקבלת עזרה בנושא תפקידי IAM, אפשר לעיין במאמר ניהול זהויות והרשאות גישה.
ייבוא קובץ SQL לאשכולות AlloyDB
כדי לייבא נתונים לאשכול AlloyDB באמצעות קובץ SQL, פועלים לפי השלבים הבאים:
המסוף
עוברים לדף Clusters.
לוחצים על שם האשכול כדי לפתוח את הדף סקירה כללית של האשכול.
לוחצים על Import.
בקטע פורמט קובץ, בוחרים באפשרות SQL.
בקטע בחירת קובץ מקור, בוחרים אם להעלות קבצים מהמחשב או לבחור קובץ ממיקום באחסון בענן.
כדי להעלות קובץ מהמחשב:
- בוחרים באפשרות העלאת קבצים מהמחשב.
- לוחצים על Browse (עיון) לצד Select local file (בחירת קובץ מקומי) כדי לבחור קובץ SQL מהמחשב המקומי.
- לוחצים על Browse (עיון) לצד Select Cloud Storage location (בחירת מיקום ב-Cloud Storage) כדי לבחור מיקום ב-Cloud Storage לאחסון הקובץ המקומי שהועלה.
- לוחצים על העלאה כדי להעלות את הקובץ.
כדי לבחור קובץ SQL שקיים בקטגוריה של Cloud Storage, מבצעים את הפעולות הבאות:
- בוחרים באפשרות בחירת קובץ מ-Google Cloud Storage.
- לוחצים על Browse לצד bucket-name/file-name כדי לבחור קובץ SQL מקטגוריה של Cloud Storage.
בתפריט הנפתח מסד נתונים, בוחרים את מסד הנתונים שאליו רוצים לייבא את הנתונים.
כתוצאה מכך, מערכת AlloyDB מריצה את ההצהרה
USE DATABASEלפני הייבוא. אם קובץ SQL מוכן לשימוש כולל הצהרתUSE DATABASE, היא מבטלת את ההגדרה של מסד הנתונים שהגדרתם במסוף. Google Cloudזה שינוי אופציונלי. כדי לציין משתמש לפעולת הייבוא, לוחצים על הצגת אפשרויות משתמש ומזינים את שם המשתמש בשדה משתמש.
כדי להתחיל את פעולת הייבוא, לוחצים על ייבוא.
gcloud
- יצירת קטגוריה של Cloud Storage
מעלים את קובץ ה-SQL לקטגוריה. לקבלת עזרה בהעלאת קבצים למאגרי מידע, ראו העלאת אובייקטים.
משתמשים בפקודה gcloud storage buckets add-iam-policy-binding כדי להעניק את
storage.objectViewerתפקיד IAM לחשבון השירות של אשכול AlloyDB עבור הדלי:service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.comמחליפים את הפרטים הבאים:
- CLUSTER_NAME: שם האשכול.
- REGION: האזור שבו נפרס אשכול AlloyDB.
- BUCKET_NAME: שם הקטגוריה ב-Cloud Storage.
- FILE_NAME: השם של קובץ ה-CSV.
- DATABASE_NAME: השם של מסד נתונים בתוך האשכול.
- USER: המשתמש של פעולת הייבוא.
- TABLE_NAME: הטבלה בתוך מסד הנתונים.
במאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM.
מייבאים את הקובץ:
gcloud alloydb clusters import CLUSTER_NAME --region=REGION --database=DATABASE_NAME --gcs-uri='gs://BUCKET_NAME/PATH_TO_SQL_FILE' --user=USERNAME --sqlאם הפקודה מחזירה שגיאה כמו
PERMISSION_DENIED, צריך לבדוק את ההרשאות.מידע על השימוש בפקודה
importזמין בדף העזרה של הפקודהalloydb import.אם אין לכם צורך בהרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן באמצעות
gcloud storage buckets remove-iam-policy-binding.
REST v1
- יצירת קטגוריה של Cloud Storage
- מעלים את קובץ ה-SQL לקטגוריה. לקבלת עזרה בהעלאת קבצים למאגרי מידע, ראו העלאת אובייקטים.
נותנים לחשבון השירות הרשאות לקטגוריה של Cloud Storage עבור פעולת הייבוא. משתמשים בפורמט של חשבון השירות כדי לזהות את חשבון השירות של הפרויקט שאליו מייבאים. הפורמט של חשבון השירות הוא:
service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.comמשתמשים בפקודה gcloud storage buckets add-iam-policy-binding כדי להעניק את
storage.objectViewerתפקיד IAM לחשבון השירות של אשכול AlloyDB עבור הקטגוריה. במאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM.מייבאים את קובץ ה-SQL.
משתמשים ב-method הבא ב-HTTP ובכתובת ה-URL:
POST https://alloydbadmin.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:importלפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט.
- LOCATION_ID: האזור שבו נפרס אשכול AlloyDB.
- CLUSTER_ID: מזהה האשכול.
- BUCKET_NAME: שם הקטגוריה ב-Cloud Storage.
- PATH_TO_SQL_FILE: הנתיב לקובץ ה-SQL.
- USER: המשתמש שישמש לייבוא.
- DATABASE_NAME: השם של מסד נתונים בתוך אשכול AlloyDB.
תוכן בקשת JSON:
{ "gcsUri": "gs://BUCKET_NAME/PATH_TO_SQL_FILE", "database": "DATABASE_NAME", "user": "USER", "sqlImportOptions": {} }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
Curl (Linux, macOS או Cloud Shell)
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import"PowerShell (Windows)
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import"| Select-Object -Expand Contentמקבלים תגובת JSON שדומה לזו:
תשובה
{ "name": "projects/project-id/locations/location-id/operations/operation-id", "metadata": { "@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata", "createTime": "2025-01-04T13:12:32.363393723Z", "target": "projects/project-id/locations/location-id/clusters/cluster-id", "verb": "import", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }כדי להשתמש במשתמש אחר לייבוא, צריך לציין את מאפיין המשתמש.
אם אין לכם צורך לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן עכשיו.
רשימה מלאה של הפרמטרים של הבקשה מופיעה במאמר
clusters:import.
בדיקת הסטטוס של פעולת ייבוא
כדי לבדוק את הסטטוס של פעולת ייבוא:
gcloud
מריצים את הפקודה הבאה באמצעות הפקודה gcloud alloydb operations describe:
gcloud alloydb operations describe OPERATION_ID --region=REGIONאפשר גם לראות את הפרטים של פעולה ספציפית או לבטל פעולה ספציפית. מידע נוסף על הפקודה הזו מופיע בדף העזרה של הפקודה gcloud alloydb operations.
REST v1
משתמשים בשיטת GET ובכתובת ה-URL הבאה:
GET https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
מידע נוסף זמין במאמר get.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- REGION: האזור שבו נפרס אשכול AlloyDB.
- PROJECT_ID: מזהה הפרויקט.
- OPERATION_ID: המזהה של פעולת הייבוא. מידע נוסף מופיע במאמר בנושא לפני שמתחילים.
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
curl (Linux, macOS או Cloud Shell)
מריצים את הפקודה הבאה:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
PowerShell (Windows)
מריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID | Select-Object -Expand Content
מקבלים תגובת JSON שדומה לזו:
אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכיל מופע של Operation.