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

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

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

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

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

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

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

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

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

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

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

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

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

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

כדי לייצא מ-Cloud SQL, משתמשים בכלי mysqldump עם האפשרויות --single-transaction ו---hex-blob. באפשרות --single-transaction, ‏mysqldump מתחיל טרנזקציה לפני ההרצה. במקום לנעול את כל מסד הנתונים, הפעולה הזו מאפשרת ל-mysqldump לקרוא את מסד הנתונים במצב הנוכחי, וכך ליצור קובץ dump עקבי של הנתונים.

אם קובץ ה-SQL המוכן לשימוש מכיל סעיפי DEFINER (תצוגות, טריגרים, stored_procedures וכו'), יכול להיות שהייבוא של הקובץ ייכשל, בהתאם לסדר שבו ההצהרות האלה מבוצעות. DEFINER תוכלו לקרוא מידע נוסף על השימוש ב-DEFINER ועל פתרונות עקיפים אפשריים ב-Cloud SQL.

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

המסוף

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

    כניסה לדף Cloud SQL Instances

  2. כדי לפתוח את הדף Overview של מכונה, לוחצים על שם המכונה.
  3. לוחצים על ייצוא.
  4. בקטע File format, לוחצים על SQL כדי ליצור קובץ SQL מוכן לשימוש.
  5. בקטע Data to export, לוחצים על One or more databases in this instance כדי לייצא מסדי נתונים ספציפיים.
  6. בתפריט הנפתח Databases, בוחרים את מסדי הנתונים שמהם רוצים לייצא.
  7. אופציונלי: בוחרים באפשרות Offload export to a temporary instance כדי לאפשר פעולות אחרות בזמן שהייצוא מתבצע.
  8. בקטע Destination, לוחצים על Browse כדי לחפש קטגוריה של Cloud Storage או תיקייה לייצוא.
  9. לוחצים על ייצוא כדי להתחיל את הייצוא.

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 כדי להקצות את תפקיד ה-IAM storage.objectAdmin לחשבון השירות. במאמר שימוש בהרשאות IAM מוסבר איך מגדירים את ההרשאות.
  4. מייצאים את מסד הנתונים לקטגוריה של Cloud Storage:
    gcloud sql export sql INSTANCE_NAME gs://BUCKET_NAME/sqldumpfile.gz \
    --database=DATABASE_NAME \
    --offload
      

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

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

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

REST v1

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

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

  2. מקצים למכונה את תפקיד ה-IAM storage.objectAdmin לקטגוריה. במאמר שימוש בהרשאות 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
  4. ה-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
        }
    }
    

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

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

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

REST v1beta4

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

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

  2. מקצים למכונה את תפקיד ה-IAM storage.objectAdmin לקטגוריה. במאמר שימוש בהרשאות 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
  4. ה-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
         }
     }
    

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

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

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

ייצוא משרת MySQL מקומי באמצעות mysqldump

אם אתם מייצאים נתונים ממסד נתונים מקומי של MySQL כדי לייבא אותם למסד נתונים של Cloud SQL, אתם צריכים להשתמש בכלי mysqldump עם הדגלים הבאים:

  • --databases צריך להשתמש באפשרות --databases כדי לציין רשימה מפורשת של מסדי נתונים לייצוא, והרשימה הזו לא יכולה להכיל את מסד הנתונים של המערכת mysql.
  • --hex-blob אם מסד הנתונים מכיל שדות בינאריים, צריך להשתמש בדגל הזה כדי לוודא שהשדות הבינאריים מיובאים בצורה נכונה.
  • --set-gtid-purged=OFF אסור לכלול מידע על GTID בקובץ ה-SQL המוכן לשימוש, ואסור להשבית את הרישום ביומן הבינארי באמצעות קובץ ה-SQL המוכן לשימוש. (לא נדרש ל-MySQL 5.5 או לרפליקציה חיצונית).
  • --single-transaction מתחילה עסקה לפני ההפעלה. במקום לנעול את כל מסד הנתונים, הפקודה הזו מאפשרת ל-mysqldump לקרוא את מסד הנתונים במצב הנוכחי, וכך ליצור קובץ dump עקבי של הנתונים.

מריצים את הפקודה mysqldump משורת הפקודה:

mysqldump --databases DATABASE_NAME -h INSTANCE_IP -u USERNAME -p \
--hex-blob --single-transaction --set-gtid-purged=OFF \
--default-character-set=utf8mb4 > SQL_FILE.sql

לקבלת עזרה עם mysqldump, אפשר לעיין ב מאמרי העזרה בנושא mysqldump.

רפליקציה חיצונית ל-Cloud SQL ל-MySQL

כדי ליצור קובץ dump לשימוש בהגדרת שרת חיצוני, ראו שכפול משרת חיצוני.

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

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

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

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

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

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

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

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

המסוף

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

    כניסה לדף Cloud SQL Instances

  2. כדי לפתוח את הדף Overview של מכונה, לוחצים על שם המכונה.
  3. לוחצים על Import.
  4. בקטע פורמט קובץ, בוחרים באפשרות SQL.
  5. בקטע Select source file, מזינים את הנתיב לקטגוריה ולקובץ ה-SQL המוכן לשימוש שרוצים לייבא, או מאתרים קובץ קיים או מעלים קובץ מקומי.

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

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

    כך 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 כדי להקצות את תפקיד ה-IAM storage.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 שדומה לזו:

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

REST v1beta4

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

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

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

  4. נותנים למכונה את תפקיד ה-IAM של הקטגוריה storage.objectAdmin. לקבלת עזרה בהגדרת הרשאות 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 שדומה לזו:

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

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