בדף הזה מוסבר איך לייצא ולייבא נתונים למכונות Cloud SQL באמצעות קובצי SQL dump.
לפני שמתחילים
הייצוא משתמש במשאבי מסד הנתונים, אבל הוא לא מפריע לפעולות הרגילות של מסד הנתונים, אלא אם המופע לא הוקצה מספיק.
שיטות מומלצות מפורטות במאמר שיטות מומלצות לייבוא וייצוא נתונים.
אחרי שמסיימים פעולת ייבוא, צריך לאמת את התוצאות.
ייצוא נתונים מ-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 מוכן לשימוש מ-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 .
- כדי לפתוח את הדף סקירה כללית של מכונה, לוחצים על שם המכונה.
- לוחצים על ייצוא.
- בקטע File format, לוחצים על SQL כדי ליצור קובץ SQL מוכן לשימוש.
- בקטע Data to export (נתונים לייצוא), לוחצים על One or more databases in this instance (מסד נתונים אחד או יותר במופע הזה) כדי לייצא מסדי נתונים ספציפיים.
- משתמשים בתפריט הנפתח כדי לבחור את מסדי הנתונים שרוצים לייצא מהם.
- בקטע יעד, לוחצים על עיון כדי לחפש קטגוריה של 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לא מכילה טריגרים או פרוצדורות מאוחסנות, אבל היא מכילה תצוגות. כדי לייצא טריגרים או נהלים מאוחסנים, משתמשים בכלי 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אסור לכלול מידע על 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 Admin
- תפקיד בהתאמה אישית, כולל ההרשאות הבאות:
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 .
- כדי לפתוח את הדף סקירה כללית של מכונה, לוחצים על שם המכונה.
- לוחצים על 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.
- אם מייבאים נתונים משרת 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 להיות תואם ל-Cloud SQL.
- אם מייבאים נתונים משרת MySQL מקומי:
- יצירת קובץ SQL מוכן לשימוש
- יצירת קטגוריה ב-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
- בעיות מוכרות בייבוא ובייצוא