בדף הזה מוסבר איך לייצא ולייבא נתונים למכונות Cloud SQL באמצעות קובצי SQL dump.
לפני שמתחילים
הייצוא משתמש במשאבי מסד הנתונים, אבל הוא לא מפריע לפעולות הרגילות של מסד הנתונים, אלא אם המופע לא הוקצה מספיק.
שיטות מומלצות מפורטות במאמר שיטות מומלצות לייבוא וייצוא נתונים.
אחרי שמסיימים פעולת ייבוא, צריך לאמת את התוצאות.
ייצוא נתונים מ-Cloud SQL ל-PostgreSQL
תפקידים והרשאות שנדרשים לייצוא מ-Cloud SQL ל-PostgreSQL
כדי לייצא נתונים מ-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 מוכן לשימוש מ-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:
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Cloud de Confiance .
- כדי לפתוח את הדף סקירה כללית של מכונה, לוחצים על שם המכונה.
- לוחצים על ייצוא.
- בקטע File format, לוחצים על SQL כדי ליצור קובץ SQL מוכן לשימוש.
- בקטע נתונים לייצוא, משתמשים בתפריט הנפתח כדי לבחור את מסד הנתונים שממנו רוצים לייצא.
- בקטע יעד, לוחצים על עיון כדי לחפש קטגוריה של 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כדי להקצות לחשבון השירות אתstorage.objectAdminהתפקיד ב-IAM. במאמר שימוש בהרשאות 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 המוכן לשימוש
- 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 המוכן לשימוש
- 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 Admin
- תפקיד בהתאמה אישית, כולל ההרשאות הבאות:
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 במסוף Cloud de Confiance .
- כדי לפתוח את הדף סקירה כללית של מכונה, לוחצים על שם המכונה.
- לוחצים על Import.
- בקטע Choose the file you'd like to import data from (בחירת הקובץ שממנו רוצים לייבא נתונים), מזינים את הנתיב לקובץ SQL מוכן לשימוש ולמאגר (bucket) שרוצים להשתמש בהם לייבוא, מעיינים בקובץ קיים או מעלים קובץ מקומי.
אפשר לייבא קובץ דחוס (
.gz) או קובץ לא דחוס (.sql). - בקטע פורמט, בוחרים באפשרות SQL.
בוחרים את מסד הנתונים שאליו רוצים לייבא את הנתונים.
כתוצאה מכך, 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 מוכן לשימוש באמצעות ההוראות שבמאמר ייצוא נתונים באמצעות 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 מוכן לשימוש באמצעות ההוראות שבמאמר ייצוא נתונים באמצעות pg_dump.
- יוצרים קטגוריה ב-Cloud Storage לפי ההוראות שבמאמר יצירת קטגוריות.
- מעלים את קובץ SQL מוכן לשימוש לקטגוריה של Cloud Storage באמצעות ההליך שמתואר במאמר העלאת אובייקטים.
- יוצרים קטגוריה של 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.importContext.importUser. - אם אין לכם צורך לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן עכשיו.