בדף הזה מוסבר איך לייצא ולייבא נתונים למכונות Cloud SQL באמצעות קובצי BAK, ואיך לייבא נתונים למכונות Cloud SQL באמצעות קובצי יומן של טרנזקציות.
לפני שמתחילים
פעולות הייצוא משתמשות במשאבים של מסד הנתונים, אבל הן לא מפריעות לפעולות הרגילות של מסד הנתונים, אלא אם המכונה לא הוקצתה כראוי.
שיטות מומלצות לייבוא ולייצוא של נתונים
אחרי שמסיימים את פעולת הייבוא, בודקים את התוצאות.
ייצוא נתונים מ-Cloud SQL ל-SQL Server
ב-Cloud SQL אפשר לייצא קובצי BAK מובנים.
אם אתם רוצים ליצור מכונה חדשה מקובץ שייצאתם, כדאי לשחזר מגיבוי למכונה אחרת או לשכפל את המכונה.
במהלך פעולת הייצוא, Cloud SQL מבצע גיבוי מלא של מסד הנתונים שנבחר.
התפקידים וההרשאות שנדרשים לייצוא מ-Cloud SQL ל-SQL Server
כדי לייצא נתונים מ-Cloud SQL ל-Cloud Storage, למשתמש שמפעיל את הייצוא צריך להיות אחד מהתפקידים הבאים:
- התפקיד עריכה ב-Cloud SQL
- תפקיד בהתאמה אישית, שכולל את ההרשאות הבאות:
cloudsql.instances.getcloudsql.instances.export
בנוסף, לחשבון השירות של מכונת Cloud SQL צריך להיות אחד מהתפקידים הבאים:
- התפקיד
storage.objectAdminבניהול זהויות והרשאות גישה (IAM) - תפקיד בהתאמה אישית, כולל ההרשאות הבאות:
storage.objects.create-
storage.objects.list(לייצוא של יומן עסקאות וייצוא של נתונים מפוצלים) -
storage.objects.delete(לייצוא של יומן עסקאות וייצוא של נתונים מפוצלים) -
storage.buckets.get(לייצוא של יומן העסקאות בלבד)
לעזרה בנושא תפקידי IAM, קראו את המאמר ניהול זהויות והרשאות גישה.
ייצוא נתונים לקובץ BAK מ-Cloud SQL ל-SQL Server
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- כדי לפתוח את הדף Overview של מכונה, לוחצים על שם המכונה.
- לוחצים על ייצוא.
- בקטע פורמט קובץ, לוחצים על BAK.
- בקטע Data to export, בוחרים בתפריט הנפתח את מסד הנתונים שממנו רוצים לייצא.
- בקטע Destination, לוחצים על Browse כדי לחפש קטגוריה של Cloud Storage או תיקייה לייצוא.
- לוחצים על ייצוא כדי להתחיל את הייצוא.
gcloud
- יצירת קטגוריה של Cloud Storage.
- מאתרים את חשבון השירות של המכונה ב-Cloud SQL שממנה מייצאים. אפשר לעשות את זה באמצעות הפקודה
gcloud sql instances describe. מחפשים את השדהserviceAccountEmailAddressבפלט.gcloud sql instances describe INSTANCE_NAME
- משתמשים ב-
gcloud storage buckets add-iam-policy-bindingכדי להקצות את תפקיד ה-IAMstorage.objectAdminלחשבון השירות. למידע נוסף על הגדרת הרשאות IAM, קראו את המאמר שימוש בהרשאות IAM. - מייצאים את מסד הנתונים:
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.
- אתם מפעילים את האפשרות "שחזור מערכת מנקודה מסוימת בזמן" בשעה 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: הנתיב לקובץ ה-SQL BAK
- 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: הפעלת ייצוא בלי שרת (serverless). כדי להשתמש בייצוא ללא שרת (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_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
- תפקיד בהתאמה אישית, שכולל את ההרשאות הבאות:
cloudsql.instances.getcloudsql.instances.import
בנוסף, לחשבון השירות של מכונת Cloud SQL צריך להיות אחד מהתפקידים הבאים:
- תפקיד ה-IAM
storage.objectAdmin - תפקיד בהתאמה אישית, כולל ההרשאות הבאות:
storage.objects.get-
storage.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.
כדי לייבא נתונים למכונה של Cloud SQL באמצעות קובץ BAK:
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- כדי לפתוח את הדף Overview של מכונה, לוחצים על שם המכונה.
- לוחצים על Import.
- בשדה Choose a file to import from, מזינים את הנתיב לקטגוריה ולקובץ ה-BAK שבו רוצים להשתמש לייבוא.
אפשר לייבא קובץ דחוס (
.gz) או קובץ לא דחוס. בקטע פורמט קובץ, בוחרים באפשרות BAK.
- בקטע Destination, מציינים את מסד הנתונים במכונה של 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
מעלים את הקובץ לקטגוריה.
לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.
- נותנים למכונה את תפקיד ה-IAM
storage.objectAdminלקטגוריה. למידע נוסף על הגדרת הרשאות 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
מעלים את הקובץ לקטגוריה.
לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.
- נותנים למכונה את תפקיד ה-IAM
storage.objectAdminלקטגוריה. למידע נוסף על הגדרת הרשאות 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
מעלים את הקובץ לקטגוריה.
לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.
- נותנים למכונה את תפקיד ה-IAM
storage.objectAdminלקטגוריה. למידע נוסף על הגדרת הרשאות 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
מעלים את הקובץ לקטגוריה.
לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.
- נותנים למכונה את תפקיד ה-IAM
storage.objectAdminלקטגוריה. למידע נוסף על הגדרת הרשאות 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
מעלים את הקובץ לקטגוריה.
לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.
- נותנים למכונה את תפקיד ה-IAM
storage.objectAdminלקטגוריה. למידע נוסף על הגדרת הרשאות 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
מעלים את הקובץ לקטגוריה.
לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.
- נותנים למכונה את תפקיד ה-IAM
storage.objectAdminלקטגוריה. למידע נוסף על הגדרת הרשאות 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 שהגדרתם קודם, הסירו אותן.
שימוש בייבוא מקבילי (striped)
היתרונות של ייבוא מקבילי:
- הפחתה בזמן שנדרש להשלמת פעולות
- אפשר לייבא מסדי נתונים שגדולים מ-5TB
חיסרון אפשרי של שימוש בייבוא מפוצל הוא שצריך להעלות את כל הקבצים בקבוצה המפוצלת (ולא קובץ בודד) לאותה תיקייה בקטגוריה של Cloud Storage, לפני שמבצעים את הייבוא.
תכנון הפעולות שלכם
ברוב התרחישים לדוגמה, ייבוא מפוספס מאפשר ביצועים טובים יותר ללא חסרונות. עם זאת, אם אתם לא יכולים לגבות למערך משולב ממכונה נתונה, או אם מסד הנתונים שלכם קטן מ-5TB, ואם ביצועים מהירים יותר הם לא קריטיים, יכול להיות שתרצו להשתמש בייבוא לא משולב.
איך משתמשים בייבוא מפוצל
gcloud
יוצרים קטגוריה של Cloud Storage לייבוא.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
השלב הזה לא נדרש, אבל מומלץ מאוד לבצע אותו כדי לא לפתוח גישה לנתונים אחרים.
- חשוב לוודא שהגדרתם את התפקידים וההרשאות הנדרשים ב-IAM.
- יוצרים תיקייה חדשה בקטגוריה.
- כדי לייבא את מסד הנתונים, מעלים את הקבצים של קבוצת ה-striped (של מסד הנתונים) לתיקייה החדשה. מוודאים שכל הקבצים הועלו לתיקייה, ושהתיקייה לא מכילה קבצים נוספים.
- תארו את המכונה שממנה אתם מייצאים:
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
מעלים את הקובץ לקטגוריה.
לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.
- נותנים למכונה את תפקיד ה-IAM
storage.objectAdminלקטגוריה. למידע נוסף על הגדרת הרשאות IAM, קראו את המאמר שימוש בהרשאות IAM. - מייבאים את הנתונים מהקובץ:
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
- bucket_name: שם הקטגוריה של Cloud Storage
- path_to_folder: הנתיב לתיקייה (בקטגוריה של Cloud Storage) שבה נמצאת קבוצת ה-stripe
- 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
מעלים את הקובץ לקטגוריה.
לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.
- נותנים למכונה את תפקיד ה-IAM
storage.objectAdminלקטגוריה. למידע נוסף על הגדרת הרשאות 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.