בדף הזה מוסבר איך לייצא ולייבא נתונים למכונות Cloud SQL באמצעות קובצי SQL מוכנים לשימוש.
לפני שמתחילים
פעולות הייצוא משתמשות במשאבים של מסד הנתונים, אבל הן לא מפריעות לפעולות הרגילות של מסד הנתונים, אלא אם המכונה לא הוקצתה כראוי.
במאמר שיטות מומלצות לייבוא ולייצוא של נתונים תוכלו לקרוא על שיטות מומלצות.
אחרי שמסיימים את פעולת הייבוא, מאמתים את התוצאות.
ייצוא נתונים מ-Cloud SQL ל-MySQL
התפקידים וההרשאות שנדרשים כדי לייצא מ-Cloud SQL ל-MySQL
כדי לייצא נתונים מ-Cloud SQL ל-Cloud Storage, למשתמש שמפעיל את הייצוא צריך להיות אחד מהתפקידים הבאים:
- התפקיד Cloud SQL Editor
- תפקיד בהתאמה אישית, כולל ההרשאות הבאות:
cloudsql.instances.getcloudsql.instances.export
בנוסף, לחשבון השירות של מכונת Cloud SQL צריך להיות אחד מהתפקידים הבאים:
- תפקיד
storage.objectAdminניהול הזהויות והרשאות הגישה (IAM) - תפקיד בהתאמה אישית, כולל ההרשאות הבאות:
storage.objects.create-
storage.objects.list(לייצוא קבצים במקביל בלבד) -
storage.objects.delete(לייצוא קבצים במקביל בלבד)
לעזרה בנושא תפקידי IAM, קראו את המאמר ניהול זהויות והרשאות גישה.
ייצוא לקובץ SQL dump מ-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:
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- כדי לפתוח את הדף Overview של מכונה, לוחצים על שם המכונה.
- לוחצים על ייצוא.
- בקטע File format, לוחצים על SQL כדי ליצור קובץ SQL dump.
- בקטע Data to export, לוחצים על One or more databases in this instance כדי לייצא מסדי נתונים ספציפיים.
- בתפריט הנפתח Databases, בוחרים את מסדי הנתונים שמהם רוצים לייצא.
- אופציונלי: בוחרים באפשרות Offload export to a temporary instance כדי לאפשר פעולות אחרות בזמן שהייצוא מתבצע.
- בקטע Destination, לוחצים על Browse כדי לחפש קטגוריה של Cloud Storage או תיקייה לייצוא.
- לוחצים על ייצוא כדי להתחיל בייצוא.
gcloud
- יצירת קטגוריה של Cloud Storage
- מחפשים את חשבון השירות של מכונת Cloud SQL שממנה מייצאים את הנתונים. אפשר לעשות את זה באמצעות הפקודה
gcloud sql instances describe. מחפשים את השדהserviceAccountEmailAddressבפלט.gcloud sql instances describe INSTANCE_NAME
- משתמשים ב-
gcloud storage buckets add-iam-policy-bindingכדי להקצות לחשבון השירות את התפקיד ב-IAMstorage.objectAdmin. במאמר שימוש בהרשאות IAM מוסבר איך להגדיר הרשאות IAM. - מייצאים את מסד הנתונים לקטגוריה של 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. - אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, בטלו אותו עכשיו.
REST v1
- יוצרים קטגוריה לייצוא:
gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
השלב הזה לא נדרש, אבל מומלץ מאוד לבצע אותו כדי לא לפתוח גישה לנתונים אחרים.
- נותנים למכונה את
storage.objectAdminתפקיד ה-IAM לקטגוריה. במאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM. - מייצאים את מסד הנתונים:
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט
- INSTANCE_ID: מזהה המכונה
- BUCKET_NAME: שם הקטגוריה של Cloud Storage
- PATH_TO_DUMP_FILE: הנתיב לקובץ ה-SQL המוכן לשימוש
- DATABASE_NAME_1: השם של מסד נתונים במכונה של Cloud SQL
- DATABASE_NAME_2: השם של מסד נתונים בתוך מופע Cloud SQL
- אם אין לכם צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותו עכשיו.
ה-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 שדומה לזו:
REST v1beta4
- יוצרים קטגוריה לייצוא:
gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
השלב הזה לא נדרש, אבל מומלץ מאוד לבצע אותו כדי לא לפתוח גישה לנתונים אחרים.
- נותנים למכונה את
storage.objectAdminתפקיד ה-IAM לקטגוריה. במאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM. - מייצאים את מסד הנתונים:
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט
- INSTANCE_ID: מזהה המכונה
- BUCKET_NAME: שם הקטגוריה של Cloud Storage
- PATH_TO_DUMP_FILE: הנתיב לקובץ ה-SQL המוכן לשימוש
- DATABASE_NAME_1: השם של מסד נתונים במכונה של Cloud SQL
- DATABASE_NAME_2: השם של מסד נתונים בתוך מופע Cloud SQL
- אם אין לכם צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, עכשיו צריך לבטל אותו.
ה-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 שדומה לזו:
ייצוא משרת MySQL מקומי באמצעות mysqldump
אם אתם מייצאים נתונים ממסד נתונים מקומי של MySQL כדי לייבא אותם למסד נתונים של Cloud SQL, אתם צריכים להשתמש בכלי mysqldump עם הדגלים הבאים:
--databasesצריך להשתמש באפשרות--databasesכדי לציין רשימה מפורשת של מסדי נתונים לייצוא, ואסור שהרשימה הזו תכיל את מסד הנתונים של המערכתmysql.--hex-blobאם מסד הנתונים מכיל שדות בינאריים, צריך להשתמש בדגל הזה כדי לוודא שהשדות הבינאריים מיובאים בצורה נכונה.--set-gtid-purged=OFFקובץ ה-SQL המוכן לשימוש לא יכול לכלול מידע על GTID, ואי אפשר להשבית את הרישום ביומן הבינארי באמצעות קובץ ה-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
- תפקיד בהתאמה אישית, שכולל את ההרשאות הבאות:
cloudsql.instances.getcloudsql.instances.import
בנוסף, לחשבון השירות של מכונת Cloud SQL צריך להיות אחד מהתפקידים הבאים:
- תפקיד ה-IAM
storage.objectAdmin - תפקיד בהתאמה אישית, כולל ההרשאות הבאות:
storage.objects.get-
storage.objects.list(לייבוא קבצים במקביל בלבד)
לעזרה בנושא תפקידי IAM, קראו את המאמר ניהול זהויות והרשאות גישה.
ייבוא קובץ SQL מוכן לשימוש ל-Cloud SQL ל-MySQL
קובצי SQL הם קובצי טקסט פשוט עם רצף של פקודות SQL.
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- כדי לפתוח את הדף Overview של מכונה, לוחצים על שם המכונה.
- לוחצים על Import.
- בקטע פורמט קובץ, בוחרים באפשרות SQL.
- בקטע Select source file, מזינים את הנתיב לקטגוריה ולקובץ ה-SQL dump שרוצים להשתמש בו לייבוא, מעיינים בקובץ קיים או מעלים קובץ מקומי.
אפשר לייבא קובץ דחוס (
.gz) או קובץ לא דחוס (.sql). בקטע Destination, בוחרים את מסד הנתונים שאליו רוצים לייבא את הנתונים.
כך Cloud SQL יריץ את ההצהרה
USE DATABASEלפני הייבוא.אם רוצים לציין משתמש שיבצע את הייבוא, בוחרים את המשתמש.
אם קובץ הייבוא מכיל הצהרות שמשתמש ספציפי צריך לבצע, צריך להשתמש בשדה הזה כדי לציין את המשתמש.
- לוחצים על ייבוא כדי להתחיל את הייבוא.
gcloud
- יוצרים קטגוריה של Cloud Storage.
מעלים את הקובץ לקטגוריה.
לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.
- תיאור המכונה שאליה מייבאים:
gcloud sql instances describe INSTANCE_NAME
- מעתיקים את השדה
serviceAccountEmailAddress. - משתמשים ב-
gcloud storage buckets add-iam-policy-bindingכדי להקצות את תפקיד ה-IAMstorage.objectAdminלחשבון השירות של הקטגוריה. לקבלת עזרה בהגדרת הרשאות IAM, קראו את המאמר שימוש בהרשאות IAM.gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE-ACCOUNT \ --role=roles/storage.objectAdmin
- מייבאים את מסד הנתונים:
gcloud sql import sql INSTANCE_NAME gs://BUCKET_NAME/IMPORT_FILE_NAME \ --database=DATABASE_NAME
למידע על השימוש בפקודה
import sql, עיינו בדף העזרה של הפקודהsql import sql.אם הפקודה מחזירה שגיאה כמו
ERROR_RDBMS, צריך לבדוק את ההרשאות. השגיאה הזו נובעת לרוב מבעיות בהרשאות. - אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן באמצעות
gcloud storage buckets remove-iam-policy-binding.
REST v1
-
יוצרים קובץ SQL מוכן לשימוש. ההוראות שבקישור מגדירות דגלים מסוימים שמאפשרים לקובץ ה-dump להיות תואם ל-Cloud SQL.
- אם אתם מייבאים נתונים משרת MySQL מקומי:
- יוצרים קובץ SQL מוכן לשימוש.
- יצירת קטגוריה ב-Cloud Storage.
- מעלים את קובץ ה-SQL המוכן לשימוש לקטגוריה של Cloud Storage.
- אם אתם מייבאים נתונים ממכונה אחרת של Cloud SQL, קראו את ההוראות במאמר ייצוא נתונים מ-Cloud SQL לקובץ SQL מוכן לשימוש.
- יוצרים קטגוריה של Cloud Storage.
מעלים את הקובץ לקטגוריה.
לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.
- נותנים למכונה את תפקידי ה-IAM
storage.objectAdminו-objectViewerלקטגוריה. במאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM. - מייבאים את קובץ ה-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. - אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, הסירו אותן עכשיו.
REST v1beta4
-
יוצרים קובץ SQL dump. ההוראות שבקישור מגדירות דגלים מסוימים שמאפשרים לקובץ ה-dump להיות תואם ל-Cloud SQL.
- אם מייבאים נתונים משרת MySQL מקומי:
- יוצרים קובץ SQL dump.
- יצירת קטגוריה ב-Cloud Storage.
- מעלים את קובץ ה-SQL המוכן לשימוש לקטגוריה של Cloud Storage.
- אם מייבאים נתונים ממכונת Cloud SQL אחרת, אפשר לעיין בהוראות שבמאמר ייצוא נתונים מ-Cloud SQL לקובץ SQL מוכן לשימוש.
- יצירת קטגוריה של Cloud Storage
מעלים את הקובץ לקטגוריה.
לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.
- נותנים למופע את
storage.objectAdminתפקיד ה-IAM של הקטגוריה. במאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM. - מייבאים את קובץ ה-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. - אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, הסירו אותן עכשיו.
המאמרים הבאים
- איך בודקים את הסטטוס של פעולות ייבוא וייצוא
- מידע נוסף על שיטות מומלצות לייבוא ולייצוא של נתונים
- מידע נוסף על Cloud Storage
- בעיות מוכרות בייבוא ובייצוא