בדף הזה מוסבר איך לייצא ולייבא נתונים למכונות Cloud SQL באמצעות קובצי SQL dump.
לפני שמתחילים
הייצוא משתמש במשאבי מסד הנתונים, אבל הוא לא מפריע לפעולות הרגילות של מסד הנתונים, אלא אם המופע לא הוקצה מספיק.
שיטות מומלצות לייבוא ולייצוא של נתונים
אחרי שמסיימים את פעולת הייבוא, מאמתים את התוצאות.
ייצוא נתונים מ-Cloud SQL ל-PostgreSQL
התפקידים וההרשאות שנדרשים כדי לייצא מ-Cloud SQL ל-PostgreSQL
כדי לייצא נתונים מ-Cloud SQL ל-Cloud Storage, למשתמש שמפעיל את הייצוא צריך להיות אחד מהתפקידים הבאים:
- התפקיד עריכה ב-Cloud SQL
- תפקיד בהתאמה אישית, שכולל את ההרשאות הבאות:
cloudsql.instances.getcloudsql.instances.export
בנוסף, לחשבון השירות של מכונת Cloud SQL צריך להיות אחד מהתפקידים הבאים:
- תפקיד
storage.objectAdminניהול הזהויות והרשאות הגישה (IAM) - תפקיד בהתאמה אישית, כולל ההרשאות הבאות:
storage.objects.create-
storage.objects.list(לייצוא קבצים במקביל בלבד) -
storage.objects.delete(לייצוא קבצים במקביל בלבד)
לעזרה בנושא תפקידי IAM, קראו את המאמר ניהול זהויות והרשאות גישה.
ייצוא לקובץ SQL dump מ-Cloud SQL ל-PostgreSQL
כשאתם משתמשים ב-Cloud SQL כדי לייצא, בין אם מGoogle Cloud המסוף, מה-CLI של gcloud או מה-API, אתם משתמשים בכלי השירותpg_dump עם האפשרויות הנדרשות כדי לוודא שקובץ הייצוא שנוצר תקין לייבוא חזרה ל-Cloud SQL.
אם אתם מתכננים לייבא את הנתונים ל-Cloud SQL, עליכם לפעול לפי ההוראות שמפורטות במאמר ייצוא נתונים משרת מסד נתונים חיצוני כדי שקובץ SQL מוכן לשימוש יהיה בפורמט הנכון ל-Cloud SQL.
כדי לייצא נתונים ממסד נתונים במכונה של Cloud SQL לקובץ SQL מוכן לשימוש בקטגוריה של Cloud Storage:
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- כדי לפתוח את הדף Overview של מכונה, לוחצים על שם המכונה.
- לוחצים על ייצוא.
- בקטע File format, לוחצים על SQL כדי ליצור קובץ SQL מוכן לשימוש.
- בקטע Data to export, משתמשים בתפריט הנפתח Database כדי לבחור את מסד הנתונים שממנו רוצים לייצא.
- אופציונלי: בוחרים באפשרות 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לא מכילה טריגרים או פרוצדורות מאוחסנות, אבל היא מכילה תצוגות. כדי לייצא טריגרים או פרוצדורות מאוחסנות, משתמשים בכלי pg_dump.מידע נוסף על השימוש בפקודה
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 dump
- 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 שדומה לזו:
- אם אין לכם צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותו עכשיו.
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 dump
- 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 שדומה לזו:
- אם אתם לא צריכים לשמור את תפקיד ה-IAM שהגדרתם קודם, בטלו אותו עכשיו.
ייבוא נתונים ל-Cloud SQL ל-PostgreSQL
התפקידים וההרשאות שנדרשים כדי לייבא ל-Cloud SQL ל-PostgreSQL
כדי לייבא נתונים מ-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 ל-PostgreSQL
קובצי SQL הם קובצי טקסט פשוט עם רצף של פקודות SQL.
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- כדי לפתוח את הדף סקירה כללית של מכונה, לוחצים על שם המכונה.
- לוחצים על Import.
- בקטע פורמט קובץ, בוחרים באפשרות SQL.
- בקטע Select source file, מזינים את הנתיב לקטגוריה ולקובץ ה-SQL המוכן לשימוש שרוצים לייבא, או מאתרים קובץ קיים או מעלים קובץ מקומי.
אפשר לייבא קובץ דחוס (
.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.
- אם אתם מייבאים נתונים משרת PostgreSQL מקומי:
- יוצרים קובץ SQL dump באמצעות ההוראות שבמאמר ייצוא נתונים באמצעות pg_dump.
- יוצרים קטגוריה ב-Cloud Storage לפי ההוראות שבמאמר יצירת קטגוריות.
- מעלים את קובץ ה-SQL המוכן לשימוש לקטגוריה של Cloud Storage, לפי ההוראות במאמר העלאת אובייקטים.
- יצירת קטגוריה של 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.importContext.importUser. - אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, הסירו אותן עכשיו.
REST v1beta4
-
יוצרים קובץ SQL מוכן לשימוש. בהוראות המקושרות מוגדרים דגלים מסוימים שמאפשרים להשתמש בקובץ ה-dump ב-Cloud SQL.
- אם מייבאים נתונים משרת PostgreSQL מקומי:
- יוצרים קובץ SQL dump באמצעות ההוראות שבמאמר ייצוא נתונים באמצעות pg_dump.
- יוצרים קטגוריה ב-Cloud Storage לפי ההוראות במאמר יצירת קטגוריות.
- מעלים את קובץ ה-SQL המוכן לשימוש לקטגוריה של Cloud Storage, לפי ההוראות במאמר העלאת אובייקטים.
- יוצרים קטגוריה של Cloud Storage.
מעלים את הקובץ לקטגוריה.
לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.
- נותנים למכונה את תפקיד ה-IAM של הקטגוריה
storage.objectAdmin. במאמר שימוש בהרשאות 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.importContext.importUser. - אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, הסירו אותן עכשיו.
המאמרים הבאים
- איך בודקים את הסטטוס של פעולות ייבוא וייצוא
- מידע נוסף על שיטות מומלצות לייבוא ולייצוא של נתונים
- מידע נוסף על Cloud Storage
- בעיות מוכרות בייבוא ובייצוא