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

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

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

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

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

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

ייצוא נתונים מ-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 לקרוא את מסד הנתונים במצב הנוכחי, וכך ליצור גיבוי עקבי של הנתונים.

אם קובץ SQL מוכן לשימוש מכיל סעיפים של DEFINER (תצוגות, טריגרים, stored_procedures וכו'), יכול להיות שהשימוש בקובץ הזה לייבוא ייכשל, בהתאם לסדר שבו ההצהרות האלה מבוצעות. DEFINER ועל פתרונות אפשריים ב-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. בקטע Data to export (נתונים לייצוא), לוחצים על One or more databases in this instance (מסד נתונים אחד או יותר במופע הזה) כדי לייצא מסדי נתונים ספציפיים.
  6. משתמשים בתפריט הנפתח כדי לבחור את מסדי הנתונים שרוצים לייצא מהם.
  7. בקטע יעד, לוחצים על עיון כדי לחפש קטגוריה של Cloud Storage או תיקייה לייצוא.
  8. לוחצים על ייצוא כדי להתחיל בייצוא.

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 לא מכילה טריגרים או פרוצדורות מאוחסנות, אבל היא מכילה תצוגות. כדי לייצא טריגרים או נהלים מאוחסנים, משתמשים בכלי 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. מספקים למופע את 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
  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. מספקים למופע את 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
  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 במסוף 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 שדומה לזו:

    רשימה מלאה של הפרמטרים של הבקשה מופיעה בדף 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 שדומה לזו:

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

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