ייבוא קובץ SQL

כדי לשחזר מסד נתונים מסקריפט של פקודות SQL בטקסט פשוט, אתם יכולים לייבא קובץ SQL שמאוחסן בקטגוריה של Cloud Storage לאשכול של AlloyDB ל-PostgreSQL.

אתם יכולים לבטל את הייבוא של נתונים לאשכולות של AlloyDB. איך מבטלים פעולת ייבוא?

כשמייבאים קובצי SQL מוכנים לשימוש, חשוב לוודא שגרסת PostgreSQL שממנה נוצר הקובץ תואמת לגרסת PostgreSQL של מכונת AlloyDB. יכול להיות שהייבוא של קובץ dump מגרסה גבוהה יותר לגרסה נמוכה יותר ייכשל בגלל תחביר SQL לא תואם.

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

לפני שמתחילים פעולת ייבוא:

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

התפקידים וההרשאות שנדרשים כדי לייבא ל-AlloyDB

כדי לייבא נתונים מ-Cloud Storage ל-AlloyDB, המשתמש שמפעיל את הייבוא צריך להיות באחד מהתפקידים הבאים:

בנוסף, לחשבון השירות של אשכול AlloyDB צריך להיות אחד מהתפקידים הבאים:

  • תפקיד ה-IAM‏ storage.objectViewer
  • תפקיד בהתאמה אישית, כולל ההרשאות הבאות:
    • storage.objects.get

לעזרה עם תפקידי IAM, קראו את המאמר ניהול זהויות והרשאות גישה.

ייבוא קובץ SQL לאשכולות AlloyDB

כדי לייבא נתונים לאשכול AlloyDB באמצעות קובץ SQL, מבצעים את השלבים הבאים:

המסוף

  1. נכנסים לדף Clusters במסוף Google Cloud .

    כניסה לדף Clusters

  2. לוחצים על שם האשכול כדי לפתוח את דף הסקירה הכללית (Overview) שלו.

  3. לוחצים על Import.

  4. בקטע פורמט קובץ, בוחרים באפשרות SQL.

  5. בקטע Select source file, בוחרים אם להעלות קבצים מהמחשב או לבחור קובץ ממיקום ב-Cloud Storage.

    1. כדי להעלות קובץ מהמחשב:

      1. בוחרים באפשרות העלאת קבצים מהמחשב.
      2. לוחצים על Browse לצד Select local file כדי לבחור קובץ SQL מהמחשב המקומי.
      3. לוחצים על Browse לצד Select Cloud Storage location כדי לבחור מיקום ב-Cloud Storage שבו יאוחסן הקובץ המקומי שהועלה.
      4. לוחצים על העלאה כדי להעלות את הקובץ.
    2. כדי לבחור קובץ SQL שקיים בקטגוריה של Cloud Storage:

      1. לוחצים על בחירת קובץ מ-Google Cloud Storage.
      2. לוחצים על Browse לצד bucket-name/file-name כדי לבחור קובץ SQL מקטגוריה של Cloud Storage.
  6. בתפריט הנפתח מסד נתונים, בוחרים את מסד הנתונים שאליו רוצים לייבא את הנתונים.

    אם קובץ ה-SQL המוכן לשימוש כולל פקודת מטא \connect (או \c), היא מבטלת את מסד הנתונים שבחרתם במסוף Google Cloud .

  7. אופציונלי: כדי לציין משתמש לפעולת הייבוא, לוחצים על הצגת אפשרויות המשתמש ומזינים את שם המשתמש בשדה משתמש.

  8. כדי להתחיל את פעולת הייבוא, לוחצים על ייבוא.

gcloud

  1. יצירת קטגוריה של Cloud Storage
  2. מעלים את קובץ ה-SQL לקטגוריה. לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.

  3. משתמשים ב-gcloud storage buckets add-iam-policy-binding כדי להקצות את תפקיד ה-IAM storage.objectViewer לחשבון השירות של אשכול AlloyDB בקטגוריה:

    service-PROJECT_NUMBER@gcp-sa-alloydb.

    במאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM.

  4. מייבאים את הקובץ:

    gcloud alloydb clusters import CLUSTER_NAME \
      --region=REGION \
      --database=DATABASE_NAME \
      --gcs-uri='gs://BUCKET_NAME/PATH_TO_SQL_FILE' \
      --user=USERNAME \
      --sql

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

    • ‫CLUSTER_NAME: שם האשכול.
    • ‫REGION: האזור שבו פרוס אשכול AlloyDB.
    • ‫DATABASE_NAME: השם של מסד נתונים בתוך האשכול.
    • ‫BUCKET_NAME: השם של הקטגוריה ב-Cloud Storage.
    • ‫PATH_TO_SQL_FILE: הנתיב לקובץ ה-SQL.
    • ‫USERNAME: המשתמש שמבצע את פעולת הייבוא.

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

    למידע נוסף על השימוש בפקודה import, עיינו בדף העזר של הפקודה gcloud alloydb clusters import.

  5. אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן באמצעות gcloud storage buckets remove-iam-policy-binding.

REST v1

  1. יצירת קטגוריה של Cloud Storage
  2. מעלים את קובץ ה-SQL לקטגוריה. לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.
  3. משתמשים ב-gcloud storage buckets add-iam-policy-binding כדי להקצות את תפקיד ה-IAM storage.objectViewer לחשבון השירות של אשכול AlloyDB בקטגוריה. הפורמט של חשבון השירות הוא:

    service-PROJECT_NUMBER@gcp-sa-alloydb.

    במאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM.

  4. מייבאים את קובץ ה-SQL.

    משתמשים ב-method הבא ב-HTTP ובכתובת ה-URL:

    POST https://alloydb.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
    }
    

    כדי להשתמש במשתמש אחר לייבוא, צריך לציין את מאפיין המשתמש.

  5. אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, הסירו אותן.

    הרשימה המלאה של הפרמטרים לבקשה מופיעה במאמר clusters.import.

בדיקת הסטטוס של פעולת ייבוא

כדי לבדוק את הסטטוס של פעולת ייבוא:

gcloud

מריצים את הפקודה הבאה באמצעות gcloud alloydb operations describe:

gcloud alloydb operations describe OPERATION_ID --region=REGION

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

REST v1

משתמשים ב-method‏ 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

אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכיל מופע של Operation.

המאמרים הבאים