בדף הזה מוסבר איך לייצא ולייבא נתונים למכונות 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 שהגדרתם קודם, עכשיו הזמן לבטל אותו.
ייצוא גיבויים דיפרנציאליים של מסד נתונים
לפני שמייצאים גיבוי דיפרנציאלי של מסד נתונים, צריך לייצא בסיס דיפרנציאלי.
אם שירותים או תכונות אחרים, כמו שחזור לנקודת זמן מסוימת ושכפול לקריאה, מפעילים גיבוי מלא בין ייצוא הגיבוי המלא לייצוא הגיבוי ההפרשי, צריך להפעיל שוב ייצוא של גיבוי מלא.
כדי להבין את זה טוב יותר, נבחן את הדוגמה הבאה:
- הגשתם בקשה לגיבוי מלא בשעה 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כדי להשתמש בייצוא ללא שרת.
ה-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: כדי להפעיל את הייצוא בלי שרת (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": { "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: כדי להפעיל ייצוא ללא שרת ולהשתמש בו, צריך להגדיר את הערך הזה ל-
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כדי להקצות לחשבון השירות את התפקיד ב-IAMstorage.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.
המאמרים הבאים
- איך בודקים את הסטטוס של פעולות ייבוא וייצוא
- שיטות מומלצות לייבוא וייצוא נתונים
- בעיות מוכרות בייבוא ובייצוא