בדף הזה מתואר ייצוא וייבוא של נתונים למכונות Cloud SQL באמצעות קובצי BAK, וייבוא של נתונים למכונות Cloud SQL באמצעות קובצי יומן טרנזקציות.
לפני שמתחילים
הייצוא משתמש במשאבי מסד הנתונים, אבל הוא לא מפריע לפעולות רגילות במסד הנתונים, אלא אם המכונה לא מספקת מספיק משאבים.
שיטות מומלצות לייבוא וייצוא נתונים
אחרי שמסיימים פעולת ייבוא, צריך לאמת את התוצאות.
ייצוא נתונים מ-Cloud SQL ל-SQL Server
Cloud SQL תומך בייצוא של קובצי BAK מובנים.
אם אתם רוצים ליצור מכונה חדשה מקובץ שייצאתם, כדאי לשחזר מגיבוי למכונה אחרת או לשכפל את המכונה.
במהלך פעולת ייצוא, Cloud SQL מבצע גיבוי מלא של מסד הנתונים שנבחר.
תפקידים והרשאות שנדרשים לייצוא מ-Cloud SQL ל-SQL Server
כדי לייצא נתונים מ-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(לייצוא של נתונים מפוספסים ולייצוא של יומן העסקאות) -
storage.buckets.get(לייצוא של יומן עסקאות בלבד)
למידע נוסף על תפקידים ב-IAM, אפשר לעיין במאמר ניהול זהויות והרשאות גישה.
ייצוא נתונים לקובץ BAK מ-Cloud SQL ל-SQL Server
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- כדי לפתוח את הדף סקירה כללית של מכונה, לוחצים על שם המכונה.
- לוחצים על ייצוא.
- בקטע פורמט הקובץ, לוחצים על BAK.
- בקטע נתונים לייצוא, משתמשים בתפריט הנפתח כדי לבחור את מסד הנתונים שממנו רוצים לייצא.
- בקטע יעד, לוחצים על עיון כדי לחפש קטגוריה של 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. - מייצאים את מסד הנתונים:
gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/FILENAME \ --database=DATABASE_NAME
מידע על השימוש בפקודה
gcloud sql export bakזמין ב דף העזרה של הפקודה. - אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, עכשיו צריך לבטל אותו.
REST v1
-
יוצרים קטגוריה של Cloud Storage לייצוא.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_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:
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
- אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, צריך להסיר אותו עכשיו.
REST v1beta4
-
יוצרים קטגוריה של Cloud Storage לייצוא.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_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:
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
- אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, עכשיו צריך לבטל אותו.
ייצוא גיבויים דיפרנציאליים של מסד נתונים
לפני שמייצאים גיבוי דיפרנציאלי של מסד נתונים, צריך לייצא בסיס דיפרנציאלי.
אם שירותים או תכונות אחרים, כמו שחזור מערכת מנקודה מסוימת בזמן (PITR) ושכפול לקריאה, מפעילים גיבוי מלא בין ייצוא הגיבוי המלא לייצוא הגיבוי הדיפרנציאלי, צריך להפעיל שוב ייצוא של גיבוי מלא.
כדי להבין את זה טוב יותר, נבחן את הדוגמה הבאה:
- הגשתם בקשה לגיבוי מלא בשעה 7:00 בבוקר.
- הפעלתם שחזור מערכת מנקודה מסוימת בזמן (PITR) בשעה 9:00 בבוקר. הפעולה הזו מפעילה גיבוי מלא במופע.
- אתם מנסים ליצור גיבוי דיפרנציאלי בשעה 17:00. בקשת הייצוא הזו נכשלת עם הודעת שגיאה כי הגיבוי המלא האחרון הופעל על ידי שחזור מערכת מנקודה מסוימת בזמן (PITR).
Cloud SQL לא תומך בבקשות לייצוא מסד נתונים עם --differential-base או --bak-type=DIFF במכונות משכפלות.
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. מייצאים את מסד הנתונים כבסיס דיפרנציאלי.
gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BASE_FILENAME \ --database=DATABASE_NAME --differential-base
מידע על השימוש בפקודה
gcloud sql export bakזמין ב דף העזרה של הפקודה.מייצאים גיבוי דיפרנציאלי.
gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BACKUP_FILENAME \ --database=DATABASE_NAME --bak-type=DIFF
מידע על השימוש בפקודה
gcloud sql export bakזמין ב דף העזרה של הפקודה.- אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, עכשיו צריך לבטל אותו.
REST v1
-
יוצרים קטגוריה של Cloud Storage לייצוא.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
השלב הזה לא נדרש, אבל מומלץ מאוד לבצע אותו כדי שלא תהיה גישה לנתונים אחרים.
- מספקים למופע את
storage.objectAdminתפקיד ה-IAM של הקטגוריה. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM. - מייצאים את הגיבוי המלא של מסד הנתונים כבסיס דיפרנציאלי.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט
- INSTANCE_ID: מזהה המכונה
- BUCKET_NAME: שם הקטגוריה של Cloud Storage
- PATH_TO_BAK_FILE: הנתיב לקובץ ה-BAK של SQL
- DATABASE_NAME: השם של מסד הנתונים בתוך מופע Cloud SQL
-
offload: כדי להפעיל את הייצוא בלי שרת (serverless) ולהשתמש בו, צריך להגדיר את הערך הזה ל-TRUE
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export
גוף בקשת JSON:
{ "exportContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "databases": ["DATABASE_NAME"] "offload": TRUE | FALSE "bakExportOptions": { "differentialBase":true } } }כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export"PowerShell
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export" | Select-Object -Expand Contentאתם אמורים לקבל תגובת JSON שדומה לזו:
- מייצאים גיבוי דיפרנציאלי.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
- bucket_name: שם הקטגוריה של Cloud Storage
- path_to_dump_file: הנתיב לקובץ ה-SQL dump
- database_name_1: השם של מסד נתונים בתוך מכונת Cloud SQL
- database_name_2: השם של מסד נתונים בתוך מכונת Cloud SQL
- offload: מאפשר ייצוא ללא שרת. מגדירים את הערך
trueכדי להשתמש בייצוא בלי שרת (serverless).
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export
גוף בקשת JSON:
{ "exportContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_dump_file", "databases": ["database_name"] "offload": true | false "bakExportOptions": { bakType:"DIFF" } } }כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export"PowerShell
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export" | Select-Object -Expand Contentאתם אמורים לקבל תגובת JSON שדומה לזו:
- אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, צריך להסיר אותו עכשיו.
REST v1beta4
-
יוצרים קטגוריה של Cloud Storage לייצוא.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_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
- offload: כדי להפעיל את הייצוא ללא שרת ולהשתמש בו, מגדירים את הערך שלו ל-
true.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export
גוף בקשת JSON:
{ "exportContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_dump_file", "databases": ["database_name"] "offload": true | false "bakExportOptions": { "differentialBase":true } } }כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export"PowerShell
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export" | Select-Object -Expand Contentאתם אמורים לקבל תגובת JSON שדומה לזו:
- ייצוא גיבוי דיפרנציאלי:
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
- bucket_name: שם הקטגוריה של Cloud Storage
- path_to_dump_file: הנתיב לקובץ ה-SQL dump
- database_name_1: השם של מסד נתונים בתוך מכונת Cloud SQL
- database_name_2: השם של מסד נתונים בתוך מכונת Cloud SQL
- offload: כדי להפעיל ייצוא בלי שרת (serverless) ולהשתמש בו, מגדירים את הערך הזה ל-
true.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export
גוף בקשת JSON:
{ "exportContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_dump_file", "databases": ["database_name"] "offload": true | false "bakExportOptions": { bakType:"DIFF" } } }כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export"PowerShell
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export" | Select-Object -Expand Contentאתם אמורים לקבל תגובת JSON שדומה לזו:
- אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, עכשיו צריך לבטל אותו.
ייצוא יומני עסקאות
אפשר לייצא את יומני העסקאות של כל המכונות של Cloud SQL ל-SQL Server שמופעל בהן שחזור לנקודת זמן מסוימת (PITR) והיומנים שלהן מאוחסנים ב-Cloud Storage.
gcloud
-
יוצרים קטגוריה של Cloud Storage לייצוא.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
השלב הזה לא נדרש, אבל מומלץ מאוד לבצע אותו כדי שלא תהיה גישה לנתונים אחרים.
- מוצאים את חשבון השירות של מכונת Cloud SQL שממנה מייצאים.
כדי לעשות את זה, מריצים את הפקודה
gcloud sql instances describe. חפשו את השדהserviceAccountEmailAddressבפלט.gcloud sql instances describe INSTANCE_NAME
- משתמשים ב-
gcloud storage buckets add-iam-policy-bindingכדי להקצות לחשבון השירות את התפקיד ב-IAMstorage.Admin. מידע נוסף על הגדרת הרשאות IAM מופיע במאמר הגדרת מדיניות IAM וניהול שלה בדליים. מייצאים את יומני הטרנזקציות.
gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/FOLDER_PATH --export-log-start-time=START_DATE_AND_TIME / --export-log-end-time=END_DATE_AND_TIME / --database=DATABASE_NAME --bak-type=TLOG
מידע על השימוש בפקודה
gcloud sql export bakזמין ב דף העזרה של הפקודה.- אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, עכשיו צריך לבטל אותו.
REST
יוצרים קטגוריה ב-Cloud Storage.
השלב הזה לא נדרש, אבל מומלץ מאוד לבצע אותו כדי שלא תהיה גישה לנתונים אחרים.
- מספקים למופע את
storage.Adminתפקיד ה-IAM של הקטגוריה. מידע נוסף על הגדרת הרשאות IAM מופיע במאמר הגדרת מדיניות IAM וניהול שלה בדליים. - מייצאים את יומני הטרנזקציות.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט.
- INSTANCE_ID: מזהה המכונה.
- BUCKET_NAME: שם הקטגוריה של Cloud Storage.
- FOLDER_PATH: הנתיב לתיקייה בקטגוריה של Cloud Storage. מערכת Cloud SQL מייצאת את יומני העסקאות לתיקייה הזו.
- DATABASE_NAME: השם של מסד הנתונים בתוך מופע Cloud SQL.
-
exportLogStartTime: תאריך ושעת ההתחלה של יומני העסקאות לייצוא. -
exportLogEndTime: תאריך ושעת הסיום של יומני הטרנזקציות לייצוא.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export
גוף בקשת JSON:
{ "exportContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/FOLDER_PATH", "databases": ["DATABASE_NAME"] "bakExportOptions": { bakType:"TLOG" exportLogStartTime: START_DATE_AND_TIME exportLogEndTime: END_DATE_AND_TIME } } }כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export"PowerShell
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export" | Select-Object -Expand Contentאתם אמורים לקבל תגובת JSON שדומה לזו:
- אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, צריך להסיר אותו עכשיו.
שימוש בייצוא מפוספס
היתרונות של ייצוא עם פסים הם:
- קיצור הזמן שנדרש להשלמת פעולות
- אפשר לייצא מסדי נתונים שגדולים מ-5TB
חיסרון פוטנציאלי בשימוש בייצוא מפוספס הוא שהגיבוי, במקום להיות קובץ אחד, מפולח לקבוצת קבצים. הקבוצה הזו נקראת 'קבוצת פס'. אפשר לקרוא על כך במאמר גיבוי מכשירים בקבוצת מדיה עם פסים (קבוצת פס). ב-Cloud SQL, מייצאים לתיקייה ריקה ב-Cloud Storage במקום ליצור קובץ יחיד. מידע נוסף מפורט בקטע איך משתמשים בייצוא מפוספס.
תכנון האופרציה הבינלאומית
ייצוא מפוספס יכול לשפר את ביצועי הייצוא. עם זאת, אם תרחיש השימוש שלכם דורש קובץ פלט יחיד, או אם גודל מסד הנתונים שלכם קטן מ-5TB, וביצועים מהירים פחות חשובים לכם, יכול להיות שתרצו להשתמש בייצוא לא מפוספס.
אם מחליטים להשתמש בייצוא מפוספס, צריך לקחת בחשבון את מספר הפסים. אפשר לציין את הערך הזה בפקודה של ה-CLI של gcloud או בקריאה ל-API בארכיטקטורת REST. עם זאת, אם אתם רוצים לקבל מספר אופטימלי של פסים לביצועים, או אם אתם לא יודעים מה המספר, אל תציינו מספר. מספר אופטימלי של פסים מוגדר באופן אוטומטי.
המספר המקסימלי של פסים שנתמך כרגע ב-Cloud SQL ל-SQL Server הוא 64.
איך משתמשים בייצוא מפוספס
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. - כדי לייצא את מסד הנתונים, מציינים את הפרמטר
--stripedו/או מציינים ערך לפרמטר--stripe_count. הגדרת ערך ל---stripe_countמרמזת שהפרמטר--stripedמיועד. שגיאה מתרחשת אם מציינים את--no-stripedאבל מציינים ערך עבור--stripe_count:gcloud beta sql export bak INSTANCE_NAME \ gs://BUCKET_NAME/STRIPED_EXPORT_FOLDER \ --database=DATABASE_NAME --striped --stripe_count=NUMBER
מידע על השימוש בפקודה
gcloud beta sql export bakזמין ב דף העזרה של הפקודה. - אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, עכשיו צריך לבטל אותו.
REST v1
-
יוצרים קטגוריה של Cloud Storage לייצוא.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
השלב הזה לא נדרש, אבל מומלץ מאוד לבצע אותו כדי שלא תהיה גישה לנתונים אחרים.
- מספקים למופע את
storage.objectAdminתפקיד ה-IAM של הקטגוריה. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM. - מייצאים את מסד הנתונים:
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
- bucket_name: שם הקטגוריה של Cloud Storage
- path_to_folder: הנתיב לתיקייה (בקטגוריה של Cloud Storage) שאליה רוצים לייצא את קבוצת הפסים.
- database_name: השם של מסד נתונים במופע Cloud SQL
- true | false: מוגדר ל-
trueכדי להשתמש בייצוא עם פסים. אם מציינים את הערךtrueבלי לציין את מספר הפסים, המערכת מגדירה באופן אוטומטי מספר אופטימלי של פסים. - number_of_stripes: מספר הפסים לשימוש. אם מציינים את הערך
striped, המשמעות היאtrue
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export
תוכן בקשת JSON:
{ "exportContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_folder", "databases": ["database_name"], "bakExportOptions": { "striped": true | false, "stripe_count": ["number_of_stripes"] } } }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
- אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, צריך להסיר אותו עכשיו.
REST v1beta4
-
יוצרים קטגוריה של Cloud Storage לייצוא.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
השלב הזה לא נדרש, אבל מומלץ מאוד לבצע אותו כדי שלא תהיה גישה לנתונים אחרים.
- מספקים למופע את
storage.objectAdminתפקיד ה-IAM של הקטגוריה. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM. - מייצאים את מסד הנתונים:
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
- bucket_name: שם הקטגוריה של Cloud Storage
- path_to_folder: הנתיב לתיקייה (בקטגוריה של Cloud Storage) שאליה רוצים לייצא את קבוצת הנתונים המפוספסת.
- database_name: השם של מסד נתונים במופע Cloud SQL
- true | false: מוגדר ל-
trueכדי להשתמש בייצוא עם פסים. אם מציינים את הערךtrueבלי לציין את מספר הפסים, המערכת מגדירה באופן אוטומטי מספר אופטימלי של פסים. - number_of_stripes: מספר הפסים לשימוש. אם מציינים את הערך
striped, המשמעות היאtrue
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export
תוכן בקשת JSON:
{ "exportContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_folder", "databases": ["database_name"], "bakExportOptions": { "striped": true | false, "stripe_count": ["number_of_stripes"] } } }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
- אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, צריך להסיר אותו עכשיו.
ייבוא ל-Cloud SQL ל-SQL Server
תפקידים והרשאות שנדרשים לייבוא ל-Cloud SQL ל-SQL Server
כדי לייבא נתונים מ-Cloud Storage ל-Cloud SQL, למשתמש שמבצע את הייבוא צריך להיות אחד מהתפקידים הבאים:
- התפקיד Cloud SQL Admin
- תפקיד בהתאמה אישית, כולל ההרשאות הבאות:
cloudsql.instances.getcloudsql.instances.import
בנוסף, לחשבון השירות של מכונת Cloud SQL צריך להיות אחד מהתפקידים הבאים:
- תפקיד IAM
storage.objectAdmin - תפקיד בהתאמה אישית, כולל ההרשאות הבאות:
storage.objects.getstorage.objects.list(לייבוא עם פסים בלבד)
למידע נוסף על תפקידים ב-IAM, אפשר לעיין במאמר ניהול זהויות והרשאות גישה.
ייבוא נתונים מקובץ BAK אל Cloud SQL ל-SQL Server
הוראות לשימוש בייבוא מפוספס מפורטות במאמר שימוש בייבוא מפוספס.
יש מגוון מסגרות ייבוא. לדוגמה, Cloud SQL ל-SQL Server תומך ב סימון נתונים שהשתנו (CDC) בגרסאות הבאות של מסדי נתונים:
- SQL Server 2017 Standard
- SQL Server 2017 Enterprise
- SQL Server 2019 Standard
- SQL Server 2019 Enterprise
- SQL Server 2022 Standard
- SQL Server 2022 Enterprise
כשמייבאים מסד נתונים עם CDC, הדגל KEEP_CDC נשמר.
אם גרסת המכונה שלכם היא Microsoft SQL Server Enterprise Edition, אתם יכולים לייבא קובצי BAK מוצפנים.
גם מופעים של Microsoft SQL Server Standard Edition מייבאים קובצי BAK מוצפנים, אבל רק דרך ה-CLI של gcloud.
הסיומות היחידות של קובצי BAK שנתמכות הן .bak ו-.bak.gz. כרגע אין תמיכה בגיבויים מוצפנים ב-GPG.
לפני שמתחילים לייבא את קובץ ה-BAK, צריך להתכונן לציין מסד נתונים חדש. לא יוצרים מסד נתונים לפני שמתחילים לייבא את קובץ ה-BAK.
כדי לייבא נתונים למכונת Cloud SQL באמצעות קובץ BAK:
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- כדי לפתוח את הדף סקירה כללית של מכונה, לוחצים על שם המכונה.
- לוחצים על Import.
- בשדה Choose a file to import from (בחירת קובץ לייבוא),
מזינים את הנתיב לדלי ולקובץ ה-BAK שרוצים להשתמש בו לייבוא.
אפשר לייבא קובץ דחוס (
.gz) או קובץ לא דחוס. בקטע File format, בוחרים באפשרות BAK.
- בקטע יעד, מציינים את מסד הנתונים במכונת Cloud SQL שאליה רוצים לייבא את קובץ ה-BAK.
- כדי להתחיל את הייבוא, לוחצים על ייבוא.
gcloud
יוצרים קטגוריה של Cloud Storage לייבוא.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
השלב הזה לא נדרש, אבל מומלץ מאוד לבצע אותו כדי שלא תהיה גישה לנתונים אחרים.
- מוודאים שהגדרתם את התפקידים וההרשאות הנדרשים.
- מעלים את הנתונים מקובץ ה-BAK לקטגוריה.
- מתארים את המופע שאליו מייבאים:
gcloud sql instances describe INSTANCE_NAME
- מעתיקים את השדה
serviceAccountEmailAddress. - משתמשים ב-
gcloud storage buckets add-iam-policy-bindingכדי להקצות לחשבון השירות את תפקיד ה-IAMstorage.objectViewerבדלי. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM. - מייבאים את הנתונים מהקובץ:
לייבוא מוצפן, משתמשים בפקודה הבאה:gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \ --database=DATABASE_NAME
gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME --database=DATABASE_NAME --cert-path=gs://BUCKET_NAME/CERTIFICATE_NAME --pvk-path=gs://BUCKET_NAME/KEY_NAME --prompt-for-pvk-password
- אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן באמצעות
gcloud storage buckets remove-iam-policy-binding.
REST v1
- יוצרים קטגוריה של Cloud Storage.
מעלים את הקובץ לקטגוריה.
לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.
- נותנים למופע את
storage.objectAdminתפקיד ה-IAM של הקטגוריה. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM. - מייבאים את הנתונים מהקובץ:
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
- bucket_name: שם הקטגוריה של Cloud Storage
- path_to_bak_file: הנתיב לקובץ ה-BAK
- database_name: השם של מסד נתונים בתוך מכונת Cloud SQL
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import
תוכן בקשת JSON:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_bak_file", "database": "database_name" } }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
כדי להשתמש במשתמש אחר לייבוא, מציינים את המאפיין
רשימה מלאה של הפרמטרים של הבקשה מופיעה בדף instances:import.importContext.importUser. - אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן.
REST v1beta4
- יוצרים קטגוריה של Cloud Storage.
מעלים את הקובץ לקטגוריה.
לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.
- נותנים למופע את
storage.objectAdminתפקיד ה-IAM של הקטגוריה. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM. - מייבאים את הנתונים מהקובץ:
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
- bucket_name: שם הקטגוריה של Cloud Storage
- path_to_bak_file: הנתיב לקובץ ה-BAK
- database_name: השם של מסד נתונים בתוך מכונת Cloud SQL
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import
תוכן בקשת JSON:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_bak_file", "database": "database_name" } }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
כדי להשתמש במשתמש אחר לייבוא, מציינים את המאפיין
רשימה מלאה של הפרמטרים של הבקשה מופיעה בדף instances:import.importContext.importUser. - אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן.
אם מופיעה שגיאה כמו ERROR_RDBMS, צריך לוודא שקובץ ה-BAK קיים בדלי ושיש לכם את ההרשאות הנכונות בדלי. במאמר
יצירה וניהול של רשימות של בקרת גישה מוסבר איך להגדיר בקרת גישה ב-Cloud Storage.
ייבוא גיבויים דיפרנציאליים של מסד נתונים
לפני שמייבאים גיבוי דיפרנציאלי של מסד נתונים, צריך לייבא גיבוי מלא, ומסד הנתונים צריך להיות במצב RESTORING אחרי ייבוא הגיבוי המלא.
ב-Cloud SQL אין תמיכה בייבוא של גיבויים דיפרנציאליים של מסדי נתונים במכונות שמופעל בהן שחזור מערכת מנקודה מסוימת בזמן (PITR). הסיבה לכך היא שייבוא של גיבוי מסד נתונים עם --no-recovery הוא תנאי מוקדם לייבוא של גיבויים דיפרנציאליים של מסד נתונים. בנוסף, אי אפשר להפעיל שחזור מערכת מנקודה מסוימת בזמן (PITR) במכונה אם מסד הנתונים נמצא במצב RESTORING.
אם הייבוא נכשל, אפשר לבצע אחת מהפעולות הבאות כדי להפעיל שחזור מערכת מנקודה מסוימת בזמן (PITR):
כדי להעביר את מסד הנתונים שנמצא במצב
RESTORINGלמצב אונליין, משתמשים בדגל--recovery-only.מסירים את מסד הנתונים.
כדי לייבא נתונים למכונת Cloud SQL באמצעות גיבוי דיפרנציאלי של מסד נתונים, פועלים לפי השלבים הבאים:
gcloud
יוצרים קטגוריה של Cloud Storage לייבוא.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
השלב הזה לא חובה, אבל מומלץ מאוד לבצע אותו כדי שלא תהיה גישה לנתונים אחרים.
- מוודאים שהגדרתם את התפקידים וההרשאות הנדרשים.
- מעלים את הנתונים מקובץ ה-BAK לקטגוריה.
- מתארים את המופע שאליו מייבאים:
gcloud sql instances describe INSTANCE_NAME
- מעתיקים את השדה
serviceAccountEmailAddress. - משתמשים ב-
gcloud storage buckets add-iam-policy-bindingכדי להקצות לחשבון השירות את תפקיד ה-IAMstorage.objectViewerבדלי. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM. ייבוא גיבוי מלא באמצעות
--no-recovery.gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BASE_FILENAME \ --database=DATABASE_NAME --bak-type=FULL --no-recovery
-
ייבוא של גיבוי דיפרנציאלי של מסד נתונים.
gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BACKUP_FILENAME \ --database=DATABASE_NAME --bak-type=DIFF --no-recovery
-
אחרי שמשחזרים את כל קובצי הגיבוי, משתמשים בדגל
--recovery-onlyכדי להעביר את מסד הנתונים המיובא למצב אונליין ממצבRESTORING. מומלץ מאוד למשתמשים לא להשתמש בפקודות T-SQL כדי להעלות את מסד הנתונים המיובא לאונליין.gcloud sql import bak INSTANCE_NAME \ --database=DATABASE_NAME --recovery-only
- אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן באמצעות
gcloud storage buckets remove-iam-policy-binding.
REST v1
- יוצרים קטגוריה של Cloud Storage.
מעלים את הקובץ לקטגוריה.
לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.
- נותנים למופע את
storage.objectAdminתפקיד ה-IAM של הקטגוריה. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM. -
ייבוא גיבוי מלא באמצעות
noRecovery.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט.
- INSTANCE_ID: מזהה המכונה.
- BUCKET_NAME: שם הקטגוריה של Cloud Storage.
- PATH_TO_BAK_FILE: הנתיב לקובץ ה-BAK.
- DATABASE_NAME: השם של מסד נתונים בתוך מופע Cloud SQL.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
גוף בקשת JSON:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "noRecovery": true, "bakType": "FULL", } } }כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Contentאתם אמורים לקבל תגובת JSON שדומה לזו:
- ייבוא של גיבוי דיפרנציאלי של מסד נתונים.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
- bucket_name: שם הקטגוריה של Cloud Storage
- path_to_bak_file: הנתיב לקובץ ה-BAK
- database_name: השם של מסד נתונים בתוך מכונת Cloud SQL
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import
גוף בקשת JSON:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_bak_file", "database": "database_name" "bakImportOptions": { "bakType": "DIFF", "noRecovery": true, } } }כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import"PowerShell
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import" | Select-Object -Expand Contentאתם אמורים לקבל תגובת JSON שדומה לזו:
אחרי שמשחזרים את כל קובצי הגיבוי, משתמשים בדגל
recoveryOnlyכדי להעביר את מסד הנתונים המיובא למצב אונליין ממצבRESTORING. מומלץ מאוד למשתמשים לא להשתמש בפקודות T-SQL כדי להעלות את מסד הנתונים המיובא לאונליין.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט
- INSTANCE_ID: מזהה המכונה
- BUCKET_NAME: שם הקטגוריה של Cloud Storage
- PATH_TO_BAK_FILE: הנתיב לקובץ ה-BAK
- DATABASE_NAME: השם של מסד נתונים בתוך מכונת Cloud SQL
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
גוף בקשת JSON:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "recoveryOnly": true, } } }כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Contentאתם אמורים לקבל תגובת JSON שדומה לזו:
- אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן.
REST v1beta4
- יוצרים קטגוריה של Cloud Storage.
מעלים את הקובץ לקטגוריה.
לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.
- נותנים למופע את
storage.objectAdminתפקיד ה-IAM של הקטגוריה. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM. -
ייבוא גיבוי מלא עם
noRecovery.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT-ID: מזהה הפרויקט.
- INSTANCE_ID: מזהה המכונה.
- BUCKET_NAME: שם הקטגוריה של Cloud Storage.
- PATH_TO_BAK_FILE: הנתיב לקובץ ה-BAK.
- DATABASE_NAME: השם של מסד נתונים בתוך מופע Cloud SQL.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import
גוף בקשת JSON:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "noRecovery": true, "bakType": "FULL", } } }כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import"PowerShell
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import" | Select-Object -Expand Contentאתם אמורים לקבל תגובת JSON שדומה לזו:
- ייבוא של גיבוי דיפרנציאלי של מסד נתונים.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
- bucket_name: שם הקטגוריה של Cloud Storage
- path_to_bak_file: הנתיב לקובץ ה-BAK
- database_name: השם של מסד נתונים בתוך מכונת Cloud SQL
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import
גוף בקשת JSON:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_bak_file", "database": "database_name" "bakImportOptions": { "bakType": "DIFF", "noRecovery": true, } } }כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import"PowerShell
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import" | Select-Object -Expand Contentאתם אמורים לקבל תגובת JSON שדומה לזו:
אחרי שמשחזרים את כל קובצי הגיבוי, משתמשים בדגל
recoveryOnlyכדי להעביר את מסד הנתונים המיובא למצב אונליין ממצבRESTORING. מומלץ מאוד למשתמשים לא להשתמש בפקודות T-SQL כדי להעלות את מסד הנתונים המיובא לאונליין.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט
- INSTANCE_ID: מזהה המכונה
- BUCKET_NAME: שם הקטגוריה של Cloud Storage
- PATH_TO_BAK_FILE: הנתיב לקובץ ה-BAK
- DATABASE_NAME: השם של מסד נתונים בתוך מכונת Cloud SQL
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import
גוף בקשת JSON:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "recoveryOnly": true, } } }כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Contentאתם אמורים לקבל תגובת JSON שדומה לזו:
- אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן.
אם מופיעה שגיאה כמו ERROR_RDBMS, צריך לוודא שקובץ ה-BAK קיים בדלי ושיש לכם את ההרשאות הנכונות בדלי. במאמר
יצירה וניהול של רשימות של בקרת גישה מוסבר איך להגדיר בקרת גישה ב-Cloud Storage.
ייבוא גיבויים של יומן העסקאות
יומן עסקאות הוא רשומה של העסקאות במסד הנתונים והשינויים שבוצעו על ידי כל עסקה. אפשר להשתמש בו כדי לשחזר את העקביות של מסד הנתונים במקרה של כשל במערכת.
כדי לייבא נתונים למכונה של Cloud SQL באמצעות גיבוי של יומן טרנזקציות, מבצעים את השלבים הבאים:
gcloud
אופציונלי: יוצרים קטגוריה של Cloud Storage לייבוא.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
- מעלים את קובצי הגיבוי לקטגוריה.
- מתארים את המופע שאליו מייבאים:
gcloud sql instances describe INSTANCE_NAME
- מעתיקים את השדה
serviceAccountEmailAddress. - משתמשים ב-
gcloud storage buckets add-iam-policy-bindingכדי להקצות לחשבון השירות את תפקיד ה-IAMstorage.objectViewerבדלי. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM. מייבאים גיבוי מלא באמצעות הפרמטר
--no-recovery. מוודאים שמסד הנתונים נמצא במצבRESTORINGאחרי הייבוא של הגיבוי המלא.gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/BACKUP_FILENAME \ --database=DATABASE_NAME --bak-type=FULL --no-recovery
- אופציונלי: ייבוא גיבוי דיפרנציאלי.
-
ייבוא גיבוי של יומן עסקאות.
מחליפים את מה שכתוב בשדות הבאים:gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/BACKUP_FILENAME \ --database=DATABASE_NAME --bak-type=TLOG --stop-at=STOP_AT_TIMESTAMP --stop-at-mark=STOP_AT_MARK_NAME --no-recovery
- INSTANCE_NAME: שם המכונה.
- BUCKET_NAME: שם הקטגוריה של Cloud Storage.
- BACKUP_FILENAME: השם של קובץ הגיבוי.
- DATABASE_NAME: השם של מסד נתונים בתוך מופע Cloud SQL.
- STOP_AT_TIMESTAMP: חותמת הזמן שבה צריך להפסיק את ייבוא יומן העסקאות. זהו שדה אופציונלי, והערך שלו צריך להיות בפורמט RFC 3339.
- STOP_AT_MARK_NAME:
העסקה המסומנת
שבנקודה שלה צריך להפסיק את הייבוא של יומן הטרנזקציות. זהו שדה אופציונלי שיכול לקבל כל מחרוזת כערך. אם הערך הוא בפורמט
lsn:log-sequence-number, הייבוא של יומן העסקאות מופסק ב מספר הרצף ביומן שצוין.
-
אחרי שמשחזרים את כל קובצי הגיבוי, משתמשים בדגל
--recovery-onlyכדי להעביר את מסד הנתונים המיובא למצב אונליין ממצבRESTORING. מומלץ מאוד למשתמשים לא להשתמש בפקודות T-SQL כדי להעלות את מסד הנתונים המיובא לאונליין.gcloud sql import bak INSTANCE_NAME \ --database=DATABASE_NAME --recovery-only
- אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן באמצעות
gcloud storage buckets remove-iam-policy-binding.
REST v1
- יוצרים קטגוריה של Cloud Storage.
מעלים את הקובץ לקטגוריה.
לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.
- נותנים למופע את
storage.objectAdminתפקיד ה-IAM של הקטגוריה. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM.
רשימה מלאה של הפרמטרים של הבקשה מופיעה בדף instances:import.
-
ייבוא גיבוי מלא באמצעות
noRecovery. מוודאים שמסד הנתונים נמצא במצבRESTORINGאחרי הייבוא של הגיבוי המלא.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט.
- INSTANCE_ID: מזהה המכונה.
- BUCKET_NAME: שם הקטגוריה של Cloud Storage.
- PATH_TO_BAK_FILE: הנתיב לקובץ ה-BAK.
- DATABASE_NAME: השם של מסד נתונים בתוך מופע Cloud SQL.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
גוף בקשת JSON:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "noRecovery": true, "bakType": "FULL", } } }כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Contentאתם אמורים לקבל תגובת JSON שדומה לזו:
- אופציונלי: ייבוא גיבוי דיפרנציאלי.
- ייבוא גיבוי של יומן עסקאות.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט.
- INSTANCE_ID: מזהה המכונה.
- BUCKET_NAME: שם הקטגוריה של Cloud Storage.
- PATH_TO_TLOG_FILE: הנתיב לקובץ יומן הטרנזקציות.
- DATABASE_NAME: השם של מסד נתונים בתוך מופע Cloud SQL.
- STOP_AT_TIMESTAMP: חותמת הזמן שבה צריך להפסיק את ייבוא יומן העסקאות. זהו שדה אופציונלי, והערך שלו צריך להיות בפורמט RFC 3339.
- STOP_AT_MARK_NAME:
העסקה המסומנת
שבנקודה שלה צריך להפסיק את הייבוא של יומן הטרנזקציות. זהו שדה אופציונלי שיכול לקבל כל מחרוזת כערך. אם הערך הוא בפורמט
lsn:log-sequence-number, הייבוא של יומן העסקאות מופסק ב מספר הרצף ביומן שצוין.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
גוף בקשת JSON:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_TLOG_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "bakType": "TLOG", "stopAt": STOP_AT_TIMESTAMP, "stopAtMark": STOP_AT_MARK_NAME, "noRecovery": true, } } }כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Contentאתם אמורים לקבל תגובת JSON שדומה לזו:
חוזרים על השלב הזה עד שמייבאים את כל הגיבויים של יומן העסקאות. אחרי שמשחזרים את כל קובצי הגיבוי, משתמשים בדגל
recoveryOnlyכדי להעביר את מסד הנתונים המיובא למצב אונליין ממצבRESTORING. מומלץ מאוד למשתמשים לא להשתמש בפקודות T-SQL כדי להעלות את מסד הנתונים המיובא לאונליין.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט
- INSTANCE_ID: מזהה המכונה
- BUCKET_NAME: שם הקטגוריה של Cloud Storage
- PATH_TO_BAK_FILE: הנתיב לקובץ ה-BAK
- DATABASE_NAME: השם של מסד נתונים בתוך מכונת Cloud SQL
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
גוף בקשת JSON:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "recoveryOnly": true, } } }כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Contentאתם אמורים לקבל תגובת JSON שדומה לזו:
- אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן.
REST v1beta4
- יוצרים קטגוריה של Cloud Storage.
מעלים את הקובץ לקטגוריה.
לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.
- נותנים למופע את
storage.objectAdminתפקיד ה-IAM של הקטגוריה. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM. -
ייבוא גיבוי מלא באמצעות
noRecovery. מוודאים שמסד הנתונים נמצא במצבRESTORINGאחרי הייבוא של הגיבוי המלא.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT-ID: מזהה הפרויקט.
- INSTANCE_ID: מזהה המכונה.
- BUCKET_NAME: שם הקטגוריה של Cloud Storage.
- PATH_TO_BAK_FILE: הנתיב לקובץ ה-BAK.
- DATABASE_NAME: השם של מסד נתונים בתוך מופע Cloud SQL.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import
גוף בקשת JSON:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "noRecovery": true, "bakType": "FULL", } } }כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import"PowerShell
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import" | Select-Object -Expand Contentאתם אמורים לקבל תגובת JSON שדומה לזו:
- אופציונלי: ייבוא גיבוי דיפרנציאלי.
- ייבוא גיבוי של יומן עסקאות. השדות
stopAtו-stopAtMarkהם אופציונליים.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט.
- INSTANCE_ID: מזהה המכונה.
- BUCKET_NAME: שם הקטגוריה של Cloud Storage.
- PATH_TO_BAK_FILE: הנתיב לקובץ ה-BAK.
- DATABASE_NAME: השם של מסד נתונים בתוך מופע Cloud SQL.
- STOP_AT_TIMESTAMP: חותמת הזמן שבה צריך להפסיק את ייבוא יומן העסקאות. זהו שדה אופציונלי, והערך שלו צריך להיות בפורמט RFC 3339.
- STOP_AT_MARK_NAME:
העסקה המסומנת
שבנקודה שלה צריך להפסיק את הייבוא של יומן הטרנזקציות. זהו שדה אופציונלי שיכול לקבל כל מחרוזת כערך. אם הערך הוא בפורמט
lsn:log-sequence-number, הייבוא של יומן העסקאות מופסק ב מספר הרצף ביומן שצוין.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
גוף בקשת JSON:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "bakType": "TLOG", "stopAt": STOP_AT_TIMESTAMP, "stopAtMark":STOP_AT_MARK_NAME, "noRecovery": true, } } }כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Contentאתם אמורים לקבל תגובת JSON שדומה לזו:
חוזרים על השלב הזה עד שמייבאים את כל הגיבויים של יומן העסקאות. אחרי שמשחזרים את כל קובצי הגיבוי, משתמשים ב-
recoveryOnlyכדי להעלות את מסד הנתונים המיובא לאונליין.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט
- INSTANCE_ID: מזהה המכונה
- BUCKET_NAME: שם הקטגוריה של Cloud Storage
- PATH_TO_BAK_FILE: הנתיב לקובץ ה-BAK
- DATABASE_NAME: השם של מסד נתונים בתוך מכונת Cloud SQL
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import
גוף בקשת JSON:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "recoveryOnly": true, } } }כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
שומרים את גוף הבקשה בקובץ בשם
request.jsonומריצים את הפקודה הבאה:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand Contentאתם אמורים לקבל תגובת JSON שדומה לזו:
- אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן.
שימוש בייבוא עם פסים
היתרונות של ייבוא עם פסים הם:
- קיצור הזמן שנדרש להשלמת פעולות
- אפשר לייבא מסדי נתונים גדולים מ-5TB
חיסרון פוטנציאלי בשימוש בייבוא עם פסי מידע הוא שצריך להעלות את כל הקבצים בסט של פסי המידע (ולא קובץ יחיד) לאותה תיקייה בקטגוריה של Cloud Storage לפני שמבצעים את הייבוא.
תכנון האופרציה הבינלאומית
ברוב תרחישי השימוש, ייבוא עם פסי נתונים מאפשר ביצועים טובים יותר ללא חסרונות. עם זאת, אם אתם לא יכולים לגבות קבוצה מפוספסת ממופע נתון, או אם מסד הנתונים שלכם קטן מ-5TB, ואם ביצועים מהירים הם לא קריטיים, כדאי להשתמש בייבוא לא מפוספס.
איך משתמשים בייבוא עם פסים
gcloud
יוצרים קטגוריה של Cloud Storage לייבוא.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
השלב הזה לא נדרש, אבל מומלץ מאוד לבצע אותו כדי שלא תהיה גישה לנתונים אחרים.
- מוודאים שהגדרתם את התפקידים וההרשאות הנדרשים ב-IAM.
- יוצרים תיקייה חדשה בדלי.
- כדי לייבא את מסד הנתונים, מעלים את הקבצים של קבוצת הפסים (של מסד הנתונים) לתיקייה החדשה. מוודאים שכל הקבצים הועלו לתיקייה, ושאין בתיקייה קבצים נוספים.
- מתארים את המופע שממנו מייצאים:
gcloud sql instances describe INSTANCE_NAME
- מעתיקים את השדה
serviceAccountEmailAddress. - משתמשים ב-
gcloud storage buckets add-iam-policy-bindingכדי להקצות לחשבון השירות את התפקיד ב-IAM עבור הדלי.storage.objectViewerמידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM. - מייבאים את הנתונים מהתיקייה. ההבדל מייבוא ללא פסים הוא כדלקמן: הקישור ל-URI הוא לשם התיקייה שאליה הועלה סט הפסים, ולא לקובץ יחיד, ומציינים את הפרמטר
--striped:gcloud beta sql import bak INSTANCE_NAME gs://BUCKET_NAME/FOLDER_NAME \ --database=DATABASE_NAME --striped
- אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן באמצעות
gcloud storage buckets remove-iam-policy-binding.
REST v1
- יוצרים קטגוריה של Cloud Storage.
מעלים את הקובץ לקטגוריה.
לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.
- נותנים למופע את
storage.objectAdminתפקיד ה-IAM של הקטגוריה. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM. - מייבאים את הנתונים מהקובץ:
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
- bucket_name: שם הקטגוריה של Cloud Storage
- path_to_folder: הנתיב לתיקייה (בקטגוריה של Cloud Storage) שבה נמצאת קבוצת הפסים
- database_name: השם של מסד הנתונים שרוצים ליצור במופע Cloud SQL
- true | false: מוגדר ל-
trueכדי להשתמש בייבוא עם פסים
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import
תוכן בקשת JSON:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_folder", "database": "database_name", "bakImportOptions": { "striped": true | false } } }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
כדי להשתמש במשתמש אחר לייבוא, מציינים את המאפיין
רשימה מלאה של הפרמטרים של הבקשה מופיעה בדף instances:import.importContext.importUser. - אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן.
REST v1beta4
- יוצרים קטגוריה של Cloud Storage.
מעלים את הקובץ לקטגוריה.
לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.
- נותנים למופע את
storage.objectAdminתפקיד ה-IAM של הקטגוריה. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM. - מייבאים את הנתונים מהקובץ:
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
- bucket_name: שם הקטגוריה של Cloud Storage
- path_to_folder: הנתיב לתיקייה (בקטגוריה של Cloud Storage) שבה נמצאת קבוצת הפסים
- database_name: השם של מסד הנתונים שרוצים ליצור במופע Cloud SQL
- true | false: מוגדר ל-
trueכדי להשתמש בייבוא עם פסים
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import
תוכן בקשת JSON:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_folder", "database": "database_name", "bakImportOptions": { "striped": true | false } } }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
כדי להשתמש במשתמש אחר לייבוא, מציינים את המאפיין
רשימה מלאה של הפרמטרים של הבקשה מופיעה בדף instances:import.importContext.importUser. - אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן.
אם מופיעה שגיאה כמו ERROR_RDBMS, צריך לוודא שהטבלה קיימת. אם הטבלה קיימת, צריך לוודא שיש לכם את ההרשאות הנכונות בדלי. במאמר
יצירה וניהול של רשימות של בקרת גישה מוסבר איך להגדיר בקרת גישה ב-Cloud Storage.
המאמרים הבאים
- איך בודקים את הסטטוס של פעולות ייבוא וייצוא
- שיטות מומלצות לייבוא וייצוא נתונים
- בעיות מוכרות בייבוא ובייצוא