ייצוא וייבוא באמצעות קובצי SQL מוכנים לשימוש

בדף הזה מוסבר איך לייצא ולייבא נתונים למכונות Cloud SQL באמצעות קובצי SQL dump.

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

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

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

אחרי שמסיימים פעולת ייבוא, צריך לאמת את התוצאות.

ייצוא נתונים מ-Cloud SQL ל-PostgreSQL

תפקידים והרשאות שנדרשים לייצוא מ-Cloud SQL ל-PostgreSQL

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

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

  • תפקיד storage.objectAdmin ניהול הזהויות והרשאות הגישה (IAM)
  • תפקיד בהתאמה אישית, כולל ההרשאות הבאות:
    • storage.objects.create
    • storage.objects.list (לייצוא קבצים במקביל בלבד)
    • storage.objects.delete (לייצוא קבצים במקביל בלבד)

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

ייצוא לקובץ SQL מוכן לשימוש מ-Cloud SQL ל-PostgreSQL

כשמבצעים ייצוא באמצעות Cloud SQL, בין אם דרךCloud de Confiance המסוף, ה-CLI של gcloud או ה-API, משתמשים בכלי pg_dump עם האפשרויות הנדרשות כדי לוודא שקובץ הייצוא שמתקבל תקין לייבוא חזרה ל-Cloud SQL.

אם אתם מתכננים לייבא את הנתונים ל-Cloud SQL, אתם צריכים לפעול לפי ההוראות שמפורטות במאמר בנושא ייצוא נתונים משרת מסד נתונים חיצוני כדי שקובץ SQL מוכן לשימוש יהיה בפורמט הנכון ל-Cloud SQL.

כדי לייצא נתונים ממסד נתונים במכונת Cloud SQL לקובץ SQL מוכן לשימוש בקטגוריה של Cloud Storage:

המסוף

  1. נכנסים לדף Cloud SQL Instances במסוף Cloud de Confiance .

    כניסה לדף Cloud SQL Instances

  2. כדי לפתוח את הדף סקירה כללית של מכונה, לוחצים על שם המכונה.
  3. לוחצים על ייצוא.
  4. בקטע File format, לוחצים על SQL כדי ליצור קובץ SQL מוכן לשימוש.
  5. בקטע נתונים לייצוא, משתמשים בתפריט הנפתח כדי לבחור את מסד הנתונים שממנו רוצים לייצא.
  6. בקטע יעד, לוחצים על עיון כדי לחפש קטגוריה של Cloud Storage או תיקייה לייצוא.
  7. לוחצים על ייצוא כדי להתחיל בייצוא.

gcloud

  1. יצירת קטגוריה של Cloud Storage
  2. מוצאים את חשבון השירות של מכונת Cloud SQL שממנה מייצאים. אפשר לעשות את זה באמצעות הרצת הפקודה gcloud sql instances describe. חפשו את השדה serviceAccountEmailAddress בפלט.
    gcloud sql instances describe INSTANCE_NAME
      
  3. משתמשים ב-gcloud storage buckets add-iam-policy-binding כדי להקצות לחשבון השירות את storage.objectAdmin התפקיד ב-IAM. במאמר שימוש בהרשאות IAM מוסבר איך להגדיר הרשאות IAM.
  4. מייצאים את מסד הנתונים לקטגוריה של Cloud Storage:
    gcloud sql export sql INSTANCE_NAME gs://BUCKET_NAME/sqldumpfile.gz \
    --database=DATABASE_NAME \
    --offload
      

    הפקודה export sql לא מכילה טריגרים או פרוצדורות מאוחסנות, אבל היא מכילה תצוגות. כדי לייצא טריגרים או נהלים מאוחסנים, משתמשים בכלי pg_dump.

    מידע נוסף על השימוש בפקודה export sql זמין בדף העזרה של הפקודה sql export sql.

  5. אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, בטלו אותו עכשיו.

REST v1

  1. יוצרים קטגוריה לייצוא:
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME

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

  2. מספקים למופע את storage.objectAdmin תפקיד ה-IAM של הקטגוריה. במאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM.
  3. מייצאים את מסד הנתונים:

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

    • PROJECT_ID: מזהה הפרויקט
    • INSTANCE_ID: מזהה המכונה
    • BUCKET_NAME: שם הקטגוריה של Cloud Storage
    • PATH_TO_DUMP_FILE: הנתיב לקובץ ה-SQL המוכן לשימוש
    • DATABASE_NAME_1: השם של מסד נתונים בתוך מכונת Cloud SQL
    • DATABASE_NAME_2: השם של מסד נתונים בתוך מכונת Cloud SQL

    ה-method של ה-HTTP וכתובת ה-URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export

    תוכן בקשת JSON:

    {
      "exportContext":
        {
           "fileType": "SQL",
           "uri": "gs://BUCKET_NAME/PATH_TO_DUMP_FILE",
           "databases": ["DATABASE_NAME"],
           "offload": TRUE | FALSE,
           "sqlExportOptions": {
            "clean": [TRUE|FALSE],
            "ifExists": [TRUE|FALSE]
           }
        }
     }
    

    כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

    אתם אמורים לקבל תגובת JSON שדומה לזו:

  4. אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, צריך להסיר אותו עכשיו.
רשימה מלאה של הפרמטרים של הבקשה מופיעה בדף instances:export.

REST v1beta4

  1. יוצרים קטגוריה לייצוא:
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
    

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

  2. מספקים למופע את storage.objectAdmin תפקיד ה-IAM של הקטגוריה. במאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM.
  3. מייצאים את מסד הנתונים:

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

    • PROJECT_ID: מזהה הפרויקט
    • INSTANCE_ID: מזהה המכונה
    • BUCKET_NAME: שם הקטגוריה של Cloud Storage
    • PATH_TO_DUMP_FILE: הנתיב לקובץ ה-SQL המוכן לשימוש
    • DATABASE_NAME_1: השם של מסד נתונים בתוך מכונת Cloud SQL
    • DATABASE_NAME_2: השם של מסד נתונים בתוך מכונת Cloud SQL

    ה-method של ה-HTTP וכתובת ה-URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/export

    תוכן בקשת JSON:

    {
       "exportContext":
         {
            "fileType": "SQL",
            "uri": "gs://BUCKET_NAME/PATH_TO_DUMP_FILE",
            "databases": ["DATABASE_NAME"],
            "offload": TRUE | FALSE,
            "sqlExportOptions": {
             "clean": [TRUE|FALSE],
             "ifExists": [TRUE|FALSE]
            }
         }
      }
    

    כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

    אתם אמורים לקבל תגובת JSON שדומה לזו:

  4. אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, בטלו אותו עכשיו.
רשימה מלאה של הפרמטרים של הבקשה מופיעה בדף instances:export.

ייבוא נתונים ל-Cloud SQL ל-PostgreSQL

תפקידים והרשאות שנדרשים לייבוא ל-Cloud SQL ל-PostgreSQL

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

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

  • תפקיד IAM‏ storage.objectAdmin
  • תפקיד בהתאמה אישית, כולל ההרשאות הבאות:
    • storage.objects.get
    • storage.objects.list (רק לייבוא קבצים במקביל)

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

ייבוא קובץ SQL מוכן לשימוש אל Cloud SQL ל-PostgreSQL

קובצי SQL הם קובצי טקסט פשוט עם רצף של פקודות SQL.

המסוף

  1. נכנסים לדף Cloud SQL Instances במסוף Cloud de Confiance .

    כניסה לדף Cloud SQL Instances

  2. כדי לפתוח את הדף סקירה כללית של מכונה, לוחצים על שם המכונה.
  3. לוחצים על Import.
  4. בקטע Choose the file you'd like to import data from (בחירת הקובץ שממנו רוצים לייבא נתונים), מזינים את הנתיב לקובץ SQL מוכן לשימוש ולמאגר (bucket) שרוצים להשתמש בהם לייבוא, מעיינים בקובץ קיים או מעלים קובץ מקומי.

    אפשר לייבא קובץ דחוס (.gz) או קובץ לא דחוס (.sql).

  5. בקטע פורמט, בוחרים באפשרות SQL.
  6. בוחרים את מסד הנתונים שאליו רוצים לייבא את הנתונים.

    כתוצאה מכך, Cloud SQL מריץ את ההצהרה USE DATABASE לפני הייבוא.

  7. אם רוצים לציין משתמש שיבצע את הייבוא, בוחרים את המשתמש.

    אם קובץ הייבוא מכיל הצהרות שצריכות להתבצע על ידי משתמש ספציפי, צריך להשתמש בשדה הזה כדי לציין את המשתמש.

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

gcloud

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

    לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.

  3. מתארים את המופע שאליו מייבאים:
    gcloud sql instances describe INSTANCE_NAME
  4. מעתיקים את השדה serviceAccountEmailAddress.
  5. משתמשים ב-gcloud storage buckets add-iam-policy-binding כדי להקצות לחשבון השירות את תפקיד IAMstorage.objectAdmin בדלי.
    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
      --member=serviceAccount:SERVICE-ACCOUNT \
      --role=roles/storage.objectAdmin
      
    במאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM.
  6. מייבאים את מסד הנתונים:
    gcloud sql import sql INSTANCE_NAME gs://BUCKET_NAME/IMPORT_FILE_NAME \
    --database=DATABASE_NAME

    מידע על השימוש בפקודה import sql זמין בדף העזרה של הפקודה sql import sql.

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

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

REST v1

  1. יוצרים קובץ SQL מוכן לשימוש. ההוראות המקושרות מגדירות דגלים מסוימים שמאפשרים לקובץ ה-dump להיות תואם ל-Cloud SQL.

  2. יוצרים קטגוריה של Cloud Storage.
  3. מעלים את הקובץ לקטגוריה.

    לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.

  4. נותנים למופע את תפקידי ה-IAM storage.objectAdmin ו-objectViewer לקטגוריה. במאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM.
  5. מייבאים את קובץ ה-dump:

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

    • project-id: מזהה הפרויקט
    • instance-id: מזהה המכונה
    • bucket_name: שם הקטגוריה של Cloud Storage
    • path_to_sql_file: הנתיב לקובץ ה-SQL
    • database_name: השם של מסד נתונים בתוך מכונת Cloud SQL

    ה-method של ה-HTTP וכתובת ה-URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import

    תוכן בקשת JSON:

    {
     "importContext":
       {
          "fileType": "SQL",
          "uri": "gs://bucket_name/path_to_sql_file",
          "database": "database_name"
        }
    }
    
    

    כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

    אתם אמורים לקבל תגובת JSON שדומה לזו:

    כדי להשתמש במשתמש אחר לייבוא, מציינים את המאפיין importContext.importUser.

    רשימה מלאה של הפרמטרים של הבקשה מופיעה בדף instances:import.
  6. אם אין לכם צורך לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן עכשיו.

REST v1beta4

  1. יוצרים קובץ SQL מוכן לשימוש. ההוראות המקושרות מגדירות דגלים מסוימים שמאפשרים לקובץ ה-dump להיות תואם ל-Cloud SQL.

  2. יוצרים קטגוריה של Cloud Storage.
  3. מעלים את הקובץ לקטגוריה.

    לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.

  4. נותנים למופע את storage.objectAdmin תפקיד ה-IAM של הקטגוריה. במאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM.
  5. מייבאים את קובץ ה-dump:

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

    • project-id: מזהה הפרויקט
    • instance-id: מזהה המכונה
    • bucket_name: שם הקטגוריה של Cloud Storage
    • path_to_sql_file: הנתיב לקובץ ה-SQL
    • database_name: השם של מסד נתונים בתוך מכונת Cloud SQL

    ה-method של ה-HTTP וכתובת ה-URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import

    תוכן בקשת JSON:

    {
     "importContext":
       {
          "fileType": "SQL",
          "uri": "gs://bucket_name/path_to_sql_file",
          "database": "database_name"
        }
    }
    
    

    כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

    אתם אמורים לקבל תגובת JSON שדומה לזו:

    כדי להשתמש במשתמש אחר לייבוא, מציינים את המאפיין importContext.importUser.

    רשימה מלאה של הפרמטרים של הבקשה מופיעה בדף instances:import.
  6. אם אין לכם צורך לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן עכשיו.

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