ייצוא וייבוא באמצעות קובצי BAK וקובצי יומן עסקאות

בדף הזה מתואר ייצוא וייבוא של נתונים למכונות Cloud SQL באמצעות קובצי BAK, וייבוא של נתונים למכונות Cloud SQL באמצעות קובצי יומן טרנזקציות.

לפני שמתחילים

הייצוא משתמש במשאבי מסד הנתונים, אבל הוא לא מפריע לפעולות רגילות במסד הנתונים, אלא אם המכונה לא מספקת מספיק משאבים.

שיטות מומלצות לייבוא וייצוא נתונים

אחרי שמסיימים פעולת ייבוא, צריך לאמת את התוצאות.

ייצוא נתונים מ-Cloud SQL ל-SQL Server

‫Cloud SQL תומך בייצוא של קובצי BAK מובנים.

אם אתם רוצים ליצור מכונה חדשה מקובץ שייצאתם, כדאי לשחזר מגיבוי למכונה אחרת או לשכפל את המכונה.

במהלך פעולת ייצוא, ‏Cloud SQL מבצע גיבוי מלא של מסד הנתונים שנבחר.

תפקידים והרשאות שנדרשים לייצוא מ-Cloud SQL ל-SQL Server

כדי לייצא נתונים מ-Cloud SQL ל-Cloud Storage, למשתמש שמפעיל את הייצוא צריך להיות אחד מהתפקידים הבאים:

בנוסף, לחשבון השירות של מכונת Cloud SQL צריך להיות אחד מהתפקידים הבאים:

  • תפקיד storage.objectAdmin ניהול הזהויות והרשאות הגישה (IAM)
  • תפקיד בהתאמה אישית, כולל ההרשאות הבאות:
    • storage.objects.create
    • storage.objects.list (לייצוא של נתונים מפוספסים ולייצוא של יומן העסקאות)
    • storage.objects.delete (לייצוא של נתונים מפוספסים ולייצוא של יומן העסקאות)
    • storage.buckets.get (לייצוא של יומן עסקאות בלבד)

למידע נוסף על תפקידים ב-IAM, אפשר לעיין במאמר ניהול זהויות והרשאות גישה.

ייצוא נתונים לקובץ BAK מ-Cloud SQL ל-SQL Server

המסוף

  1. נכנסים לדף Cloud SQL Instances במסוף Google Cloud .

    כניסה לדף Cloud SQL Instances

  2. כדי לפתוח את הדף סקירה כללית של מכונה, לוחצים על שם המכונה.
  3. לוחצים על ייצוא.
  4. בקטע פורמט הקובץ, לוחצים על BAK.
  5. בקטע נתונים לייצוא, משתמשים בתפריט הנפתח כדי לבחור את מסד הנתונים שממנו רוצים לייצא.
  6. בקטע יעד, לוחצים על עיון כדי לחפש קטגוריה של Cloud Storage או תיקייה לייצוא.
  7. לוחצים על ייצוא כדי להתחיל בייצוא.

gcloud

  1. יצירת קטגוריה של Cloud Storage.
  2. מוצאים את חשבון השירות של מכונת Cloud SQL שממנה מייצאים. אפשר לעשות את זה באמצעות הרצת הפקודה gcloud sql instances describe. חפשו את השדה serviceAccountEmailAddress בפלט.
    gcloud sql instances describe INSTANCE_NAME
      
  3. משתמשים ב- gcloud storage buckets add-iam-policy-binding כדי להקצות לחשבון השירות את התפקיד ב-IAM storage.objectAdmin. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM.
  4. מייצאים את מסד הנתונים:
    gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/FILENAME \
    --database=DATABASE_NAME
      

    מידע על השימוש בפקודה gcloud sql export bak זמין ב דף העזרה של הפקודה.

  5. אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, עכשיו צריך לבטל אותו.

REST v1

  1. יוצרים קטגוריה של Cloud Storage לייצוא.
    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME

    השלב הזה לא נדרש, אבל מומלץ מאוד לבצע אותו כדי שלא תהיה גישה לנתונים אחרים.

  2. מספקים למופע את storage.objectAdmin תפקיד ה-IAM של הקטגוריה. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM.
  3. מייצאים את מסד הנתונים:

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • 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 שדומה לזו:

  4. אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, צריך להסיר אותו עכשיו.
רשימה מלאה של הפרמטרים של הבקשה מופיעה בדף instances:export.

REST v1beta4

  1. יוצרים קטגוריה של Cloud Storage לייצוא.
    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
    

    השלב הזה לא נדרש, אבל מומלץ מאוד לבצע אותו כדי שלא תהיה גישה לנתונים אחרים.

  2. מספקים למופע את storage.objectAdmin תפקיד ה-IAM של הקטגוריה. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM.
  3. מייצאים את מסד הנתונים:

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • 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 שדומה לזו:

  4. אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, עכשיו צריך לבטל אותו.
רשימה מלאה של הפרמטרים של הבקשה מופיעה בדף instances:export.

ייצוא גיבויים דיפרנציאליים של מסד נתונים

לפני שמייצאים גיבוי דיפרנציאלי של מסד נתונים, צריך לייצא בסיס דיפרנציאלי.

אם שירותים או תכונות אחרים, כמו שחזור מערכת מנקודה מסוימת בזמן (PITR) ושכפול לקריאה, מפעילים גיבוי מלא בין ייצוא הגיבוי המלא לייצוא הגיבוי הדיפרנציאלי, צריך להפעיל שוב ייצוא של גיבוי מלא.

כדי להבין את זה טוב יותר, נבחן את הדוגמה הבאה:

  1. הגשתם בקשה לגיבוי מלא בשעה 7:00 בבוקר.
  2. הפעלתם שחזור מערכת מנקודה מסוימת בזמן (PITR) בשעה 9:00 בבוקר. הפעולה הזו מפעילה גיבוי מלא במופע.
  3. אתם מנסים ליצור גיבוי דיפרנציאלי בשעה 17:00. בקשת הייצוא הזו נכשלת עם הודעת שגיאה כי הגיבוי המלא האחרון הופעל על ידי שחזור מערכת מנקודה מסוימת בזמן (PITR).

‫Cloud SQL לא תומך בבקשות לייצוא מסד נתונים עם --differential-base או --bak-type=DIFF במכונות משכפלות.

gcloud

  1. יוצרים קטגוריה ב-Cloud Storage.
  2. מוצאים את חשבון השירות של מכונת Cloud SQL שממנה מייצאים. אפשר לעשות את זה באמצעות הרצת הפקודה gcloud sql instances describe. חפשו את השדה serviceAccountEmailAddress בפלט.
    gcloud sql instances describe INSTANCE_NAME
      
  3. משתמשים ב- gcloud storage buckets add-iam-policy-binding כדי להקצות לחשבון השירות את התפקיד ב-IAM storage.objectAdmin. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM.
  4. מייצאים את מסד הנתונים כבסיס דיפרנציאלי.

    gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BASE_FILENAME \
    --database=DATABASE_NAME --differential-base

    מידע על השימוש בפקודה gcloud sql export bak זמין ב דף העזרה של הפקודה.

  5. מייצאים גיבוי דיפרנציאלי.

    gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BACKUP_FILENAME \
    --database=DATABASE_NAME --bak-type=DIFF
      

    מידע על השימוש בפקודה gcloud sql export bak זמין ב דף העזרה של הפקודה.

  6. אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, עכשיו צריך לבטל אותו.

REST v1

  1. יוצרים קטגוריה של Cloud Storage לייצוא.
    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME

    השלב הזה לא נדרש, אבל מומלץ מאוד לבצע אותו כדי שלא תהיה גישה לנתונים אחרים.

  2. מספקים למופע את storage.objectAdmin תפקיד ה-IAM של הקטגוריה. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM.
  3. מייצאים את הגיבוי המלא של מסד הנתונים כבסיס דיפרנציאלי.

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • 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 שדומה לזו:

  4. מייצאים גיבוי דיפרנציאלי.

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • project-id: מזהה הפרויקט
    • instance-id: מזהה המכונה
    • bucket_name: שם הקטגוריה של Cloud Storage
    • path_to_dump_file: הנתיב לקובץ ה-SQL dump
    • database_name_1: השם של מסד נתונים בתוך מכונת Cloud SQL
    • database_name_2: השם של מסד נתונים בתוך מכונת Cloud SQL
    • offload: מאפשר ייצוא ללא שרת. מגדירים את הערך true כדי להשתמש בייצוא בלי שרת (serverless).

    ה-method של ה-HTTP וכתובת ה-URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export

    גוף בקשת JSON:

    {
     "exportContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_dump_file",
          "databases": ["database_name"]
          "offload": true | false
          "bakExportOptions": {
            bakType:"DIFF"
          }
    
        }
    }
    

    כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:

    curl

    שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export"

    PowerShell

    שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export" | Select-Object -Expand Content

    אתם אמורים לקבל תגובת JSON שדומה לזו:

  5. אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, צריך להסיר אותו עכשיו.
רשימה מלאה של הפרמטרים של הבקשה מופיעה בדף instances:export.

REST v1beta4

  1. יוצרים קטגוריה של Cloud Storage לייצוא.
    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
    

    השלב הזה לא נדרש, אבל מומלץ מאוד לבצע אותו כדי שלא תהיה גישה לנתונים אחרים.

  2. מספקים למופע את storage.objectAdmin תפקיד ה-IAM של הקטגוריה. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM.
  3. מייצאים את הגיבוי המלא של מסד הנתונים כבסיס דיפרנציאלי.

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • project-id: מזהה הפרויקט
    • instance-id: מזהה המכונה
    • bucket_name: שם הקטגוריה של Cloud Storage
    • path_to_dump_file: הנתיב לקובץ ה-SQL dump
    • database_name_1: השם של מסד נתונים בתוך מכונת Cloud SQL
    • database_name_2: השם של מסד נתונים בתוך מכונת Cloud SQL
    • offload: כדי להפעיל את הייצוא ללא שרת ולהשתמש בו, מגדירים את הערך שלו ל-true.

    ה-method של ה-HTTP וכתובת ה-URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export

    גוף בקשת JSON:

    {
      "exportContext":
        {
           "fileType": "BAK",
           "uri": "gs://bucket_name/path_to_dump_file",
           "databases": ["database_name"]
           "offload": true | false
           "bakExportOptions": {
             "differentialBase":true
           }
    
         }
    }
    

    כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:

    curl

    שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export"

    PowerShell

    שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export" | Select-Object -Expand Content

    אתם אמורים לקבל תגובת JSON שדומה לזו:

  4. ייצוא גיבוי דיפרנציאלי:

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • project-id: מזהה הפרויקט
    • instance-id: מזהה המכונה
    • bucket_name: שם הקטגוריה של Cloud Storage
    • path_to_dump_file: הנתיב לקובץ ה-SQL dump
    • database_name_1: השם של מסד נתונים בתוך מכונת Cloud SQL
    • database_name_2: השם של מסד נתונים בתוך מכונת Cloud SQL
    • offload: כדי להפעיל ייצוא בלי שרת (serverless) ולהשתמש בו, מגדירים את הערך הזה ל-true.

    ה-method של ה-HTTP וכתובת ה-URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export

    גוף בקשת JSON:

    {
      "exportContext":
        {
           "fileType": "BAK",
           "uri": "gs://bucket_name/path_to_dump_file",
           "databases": ["database_name"]
           "offload": true | false
           "bakExportOptions": {
            bakType:"DIFF"
           }
    
         }
    }
    

    כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:

    curl

    שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export"

    PowerShell

    שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export" | Select-Object -Expand Content

    אתם אמורים לקבל תגובת JSON שדומה לזו:

  5. אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, עכשיו צריך לבטל אותו.
רשימה מלאה של הפרמטרים של הבקשה מופיעה בדף instances:export.

ייצוא יומני עסקאות

אפשר לייצא את יומני העסקאות של כל המכונות של Cloud SQL ל-SQL Server שמופעל בהן שחזור לנקודת זמן מסוימת (PITR) והיומנים שלהן מאוחסנים ב-Cloud Storage.

gcloud

  1. יוצרים קטגוריה של Cloud Storage לייצוא.
    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME

    השלב הזה לא נדרש, אבל מומלץ מאוד לבצע אותו כדי שלא תהיה גישה לנתונים אחרים.

  2. מוצאים את חשבון השירות של מכונת Cloud SQL שממנה מייצאים. כדי לעשות את זה, מריצים את הפקודה gcloud sql instances describe. חפשו את השדה serviceAccountEmailAddress בפלט.
    gcloud sql instances describe INSTANCE_NAME
      
  3. משתמשים ב- gcloud storage buckets add-iam-policy-binding כדי להקצות לחשבון השירות את התפקיד ב-IAM storage.Admin. מידע נוסף על הגדרת הרשאות IAM מופיע במאמר הגדרת מדיניות IAM וניהול שלה בדליים.
  4. מייצאים את יומני הטרנזקציות.

    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 זמין ב דף העזרה של הפקודה.

  5. אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, עכשיו צריך לבטל אותו.

REST

  1. יוצרים קטגוריה ב-Cloud Storage.

    השלב הזה לא נדרש, אבל מומלץ מאוד לבצע אותו כדי שלא תהיה גישה לנתונים אחרים.

  2. מספקים למופע את storage.Admin תפקיד ה-IAM של הקטגוריה. מידע נוסף על הגדרת הרשאות IAM מופיע במאמר הגדרת מדיניות IAM וניהול שלה בדליים.
  3. מייצאים את יומני הטרנזקציות.

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • 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 שדומה לזו:

  4. אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, צריך להסיר אותו עכשיו.
רשימה מלאה של הפרמטרים של הבקשה מופיעה בדף instances.export.

שימוש בייצוא מפוספס

היתרונות של ייצוא עם פסים הם:

  • קיצור הזמן שנדרש להשלמת פעולות
  • אפשר לייצא מסדי נתונים שגדולים מ-5TB

חיסרון פוטנציאלי בשימוש בייצוא מפוספס הוא שהגיבוי, במקום להיות קובץ אחד, מפולח לקבוצת קבצים. הקבוצה הזו נקראת 'קבוצת פס'. אפשר לקרוא על כך במאמר גיבוי מכשירים בקבוצת מדיה עם פסים (קבוצת פס). ב-Cloud SQL, מייצאים לתיקייה ריקה ב-Cloud Storage במקום ליצור קובץ יחיד. מידע נוסף מפורט בקטע איך משתמשים בייצוא מפוספס.

תכנון האופרציה הבינלאומית

ייצוא מפוספס יכול לשפר את ביצועי הייצוא. עם זאת, אם תרחיש השימוש שלכם דורש קובץ פלט יחיד, או אם גודל מסד הנתונים שלכם קטן מ-5TB, וביצועים מהירים פחות חשובים לכם, יכול להיות שתרצו להשתמש בייצוא לא מפוספס.

אם מחליטים להשתמש בייצוא מפוספס, צריך לקחת בחשבון את מספר הפסים. אפשר לציין את הערך הזה בפקודה של ה-CLI של gcloud או בקריאה ל-API בארכיטקטורת REST. עם זאת, אם אתם רוצים לקבל מספר אופטימלי של פסים לביצועים, או אם אתם לא יודעים מה המספר, אל תציינו מספר. מספר אופטימלי של פסים מוגדר באופן אוטומטי.

המספר המקסימלי של פסים שנתמך כרגע ב-Cloud SQL ל-SQL Server הוא 64.

איך משתמשים בייצוא מפוספס

gcloud

  1. יוצרים קטגוריה ב-Cloud Storage.
  2. מוצאים את חשבון השירות של מכונת Cloud SQL שממנה מייצאים. כדי לעשות את זה, מריצים את הפקודה gcloud sql instances describe. חפשו את השדה serviceAccountEmailAddress בפלט.
    gcloud sql instances describe INSTANCE_NAME
      
  3. משתמשים ב- gcloud storage buckets add-iam-policy-binding כדי להקצות לחשבון השירות את התפקיד ב-IAM storage.objectAdmin. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM.
  4. כדי לייצא את מסד הנתונים, מציינים את הפרמטר --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 זמין ב דף העזרה של הפקודה.

  5. אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, עכשיו צריך לבטל אותו.

REST v1

  1. יוצרים קטגוריה של Cloud Storage לייצוא.
    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME

    השלב הזה לא נדרש, אבל מומלץ מאוד לבצע אותו כדי שלא תהיה גישה לנתונים אחרים.

  2. מספקים למופע את storage.objectAdmin תפקיד ה-IAM של הקטגוריה. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM.
  3. מייצאים את מסד הנתונים:

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • 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 שדומה לזו:

  4. אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, צריך להסיר אותו עכשיו.
רשימה מלאה של הפרמטרים של הבקשה מופיעה בדף instances:export.

REST v1beta4

  1. יוצרים קטגוריה של Cloud Storage לייצוא.
    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
    

    השלב הזה לא נדרש, אבל מומלץ מאוד לבצע אותו כדי שלא תהיה גישה לנתונים אחרים.

  2. מספקים למופע את storage.objectAdmin תפקיד ה-IAM של הקטגוריה. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM.
  3. מייצאים את מסד הנתונים:

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • 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 שדומה לזו:

  4. אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, צריך להסיר אותו עכשיו.
רשימה מלאה של הפרמטרים של הבקשה מופיעה בדף instances:export.

ייבוא ל-Cloud SQL ל-SQL Server

תפקידים והרשאות שנדרשים לייבוא ל-Cloud SQL ל-SQL Server

כדי לייבא נתונים מ-Cloud Storage ל-Cloud SQL, למשתמש שמבצע את הייבוא צריך להיות אחד מהתפקידים הבאים:

בנוסף, לחשבון השירות של מכונת 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, צריך להתכונן לציין מסד נתונים חדש. לא יוצרים מסד נתונים לפני שמתחילים לייבא את קובץ ה-BAK.

כדי לייבא נתונים למכונת Cloud SQL באמצעות קובץ BAK:

המסוף

  1. נכנסים לדף Cloud SQL Instances במסוף Google Cloud .

    כניסה לדף Cloud SQL Instances

  2. כדי לפתוח את הדף סקירה כללית של מכונה, לוחצים על שם המכונה.
  3. לוחצים על Import.
  4. בשדה Choose a file to import from (בחירת קובץ לייבוא), מזינים את הנתיב לדלי ולקובץ ה-BAK שרוצים להשתמש בו לייבוא.

    אפשר לייבא קובץ דחוס (.gz) או קובץ לא דחוס.

  5. בקטע File format, בוחרים באפשרות BAK.

  6. בקטע יעד, מציינים את מסד הנתונים במכונת Cloud SQL שאליה רוצים לייבא את קובץ ה-BAK.
  7. כדי להתחיל את הייבוא, לוחצים על ייבוא.

gcloud

  1. יוצרים קטגוריה של Cloud Storage לייבוא.

    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME

    השלב הזה לא נדרש, אבל מומלץ מאוד לבצע אותו כדי שלא תהיה גישה לנתונים אחרים.

  2. מוודאים שהגדרתם את התפקידים וההרשאות הנדרשים.
  3. מעלים את הנתונים מקובץ ה-BAK לקטגוריה.
  4. מתארים את המופע שאליו מייבאים:
    gcloud sql instances describe INSTANCE_NAME
  5. מעתיקים את השדה serviceAccountEmailAddress.
  6. משתמשים ב- gcloud storage buckets add-iam-policy-binding כדי להקצות לחשבון השירות את תפקיד ה-IAM storage.objectViewer בדלי. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM.
  7. מייבאים את הנתונים מהקובץ:
    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
  8. אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן באמצעות gcloud storage buckets remove-iam-policy-binding.

REST v1

  1. יוצרים קטגוריה של Cloud Storage.
  2. מעלים את הקובץ לקטגוריה.

    לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.

  3. נותנים למופע את storage.objectAdmin תפקיד ה-IAM של הקטגוריה. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM.
  4. מייבאים את הנתונים מהקובץ:

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • 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 שדומה לזו:

    כדי להשתמש במשתמש אחר לייבוא, מציינים את המאפיין importContext.importUser.

    רשימה מלאה של הפרמטרים של הבקשה מופיעה בדף instances:import.
  5. אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן.

REST v1beta4

  1. יוצרים קטגוריה של Cloud Storage.
  2. מעלים את הקובץ לקטגוריה.

    לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.

  3. נותנים למופע את storage.objectAdmin תפקיד ה-IAM של הקטגוריה. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM.
  4. מייבאים את הנתונים מהקובץ:

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • 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 שדומה לזו:

    כדי להשתמש במשתמש אחר לייבוא, מציינים את המאפיין importContext.importUser.

    רשימה מלאה של הפרמטרים של הבקשה מופיעה בדף instances:import.
  5. אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן.

אם מופיעה שגיאה כמו ERROR_RDBMS, צריך לוודא שקובץ ה-BAK קיים בדלי ושיש לכם את ההרשאות הנכונות בדלי. במאמר יצירה וניהול של רשימות של בקרת גישה מוסבר איך להגדיר בקרת גישה ב-Cloud Storage.

ייבוא גיבויים דיפרנציאליים של מסד נתונים

לפני שמייבאים גיבוי דיפרנציאלי של מסד נתונים, צריך לייבא גיבוי מלא, ומסד הנתונים צריך להיות במצב RESTORING אחרי ייבוא הגיבוי המלא.

ב-Cloud SQL אין תמיכה בייבוא של גיבויים דיפרנציאליים של מסדי נתונים במכונות שמופעל בהן שחזור מערכת מנקודה מסוימת בזמן (PITR). הסיבה לכך היא שייבוא של גיבוי מסד נתונים עם --no-recovery הוא תנאי מוקדם לייבוא של גיבויים דיפרנציאליים של מסד נתונים. בנוסף, אי אפשר להפעיל שחזור מערכת מנקודה מסוימת בזמן (PITR) במכונה אם מסד הנתונים נמצא במצב RESTORING. אם הייבוא נכשל, אפשר לבצע אחת מהפעולות הבאות כדי להפעיל שחזור מערכת מנקודה מסוימת בזמן (PITR):

  • כדי להעביר את מסד הנתונים שנמצא במצב RESTORING למצב אונליין, משתמשים בדגל --recovery-only .

  • מסירים את מסד הנתונים.

כדי לייבא נתונים למכונת Cloud SQL באמצעות גיבוי דיפרנציאלי של מסד נתונים, פועלים לפי השלבים הבאים:

gcloud

  1. יוצרים קטגוריה של Cloud Storage לייבוא.

    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME

    השלב הזה לא חובה, אבל מומלץ מאוד לבצע אותו כדי שלא תהיה גישה לנתונים אחרים.

  2. מוודאים שהגדרתם את התפקידים וההרשאות הנדרשים.
  3. מעלים את הנתונים מקובץ ה-BAK לקטגוריה.
  4. מתארים את המופע שאליו מייבאים:
    gcloud sql instances describe INSTANCE_NAME
  5. מעתיקים את השדה serviceAccountEmailAddress.
  6. משתמשים ב- gcloud storage buckets add-iam-policy-binding כדי להקצות לחשבון השירות את תפקיד ה-IAM storage.objectViewer בדלי. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM.
  7. ייבוא גיבוי מלא באמצעות --no-recovery.

    gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BASE_FILENAME \
    --database=DATABASE_NAME --bak-type=FULL --no-recovery
  8. ייבוא של גיבוי דיפרנציאלי של מסד נתונים.

    gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BACKUP_FILENAME \
    --database=DATABASE_NAME --bak-type=DIFF --no-recovery
  9. אחרי שמשחזרים את כל קובצי הגיבוי, משתמשים בדגל --recovery-only כדי להעביר את מסד הנתונים המיובא למצב אונליין ממצב RESTORING. מומלץ מאוד למשתמשים לא להשתמש בפקודות T-SQL כדי להעלות את מסד הנתונים המיובא לאונליין.

    gcloud sql import bak INSTANCE_NAME \
    --database=DATABASE_NAME --recovery-only
  10. אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן באמצעות gcloud storage buckets remove-iam-policy-binding.

REST v1

  1. יוצרים קטגוריה של Cloud Storage.
  2. מעלים את הקובץ לקטגוריה.

    לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.

  3. נותנים למופע את storage.objectAdmin תפקיד ה-IAM של הקטגוריה. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM.
  4. ייבוא גיבוי מלא באמצעות 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 שדומה לזו:

  5. ייבוא של גיבוי דיפרנציאלי של מסד נתונים.

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • 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 שדומה לזו:

  6. אחרי שמשחזרים את כל קובצי הגיבוי, משתמשים בדגל 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 שדומה לזו:

  7. אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן.

REST v1beta4

  1. יוצרים קטגוריה של Cloud Storage.
  2. מעלים את הקובץ לקטגוריה.

    לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.

  3. נותנים למופע את storage.objectAdmin תפקיד ה-IAM של הקטגוריה. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM.
  4. ייבוא גיבוי מלא עם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 שדומה לזו:

  5. ייבוא של גיבוי דיפרנציאלי של מסד נתונים.

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • 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 שדומה לזו:

  6. אחרי שמשחזרים את כל קובצי הגיבוי, משתמשים בדגל 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 שדומה לזו:

  7. אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן.

אם מופיעה שגיאה כמו ERROR_RDBMS, צריך לוודא שקובץ ה-BAK קיים בדלי ושיש לכם את ההרשאות הנכונות בדלי. במאמר יצירה וניהול של רשימות של בקרת גישה מוסבר איך להגדיר בקרת גישה ב-Cloud Storage.

ייבוא גיבויים של יומן העסקאות

יומן עסקאות הוא רשומה של העסקאות במסד הנתונים והשינויים שבוצעו על ידי כל עסקה. אפשר להשתמש בו כדי לשחזר את העקביות של מסד הנתונים במקרה של כשל במערכת.

כדי לייבא נתונים למכונה של Cloud SQL באמצעות גיבוי של יומן טרנזקציות, מבצעים את השלבים הבאים:

gcloud

  1. אופציונלי: יוצרים קטגוריה של Cloud Storage לייבוא.

    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
  2. מעלים את קובצי הגיבוי לקטגוריה.
  3. מתארים את המופע שאליו מייבאים:
    gcloud sql instances describe INSTANCE_NAME
  4. מעתיקים את השדה serviceAccountEmailAddress.
  5. משתמשים ב- gcloud storage buckets add-iam-policy-binding כדי להקצות לחשבון השירות את תפקיד ה-IAM storage.objectViewer בדלי. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM.
  6. מייבאים גיבוי מלא באמצעות הפרמטר --no-recovery. מוודאים שמסד הנתונים נמצא במצב RESTORING אחרי הייבוא של הגיבוי המלא.

    gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/BACKUP_FILENAME \
    --database=DATABASE_NAME --bak-type=FULL --no-recovery
  7. אופציונלי: ייבוא גיבוי דיפרנציאלי.
  8. ייבוא גיבוי של יומן עסקאות.

    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, הייבוא של יומן העסקאות מופסק ב מספר הרצף ביומן שצוין.
    חוזרים על השלב הזה עד שכל הגיבויים של יומן העסקאות מיובאים.
  9. אחרי שמשחזרים את כל קובצי הגיבוי, משתמשים בדגל --recovery-only כדי להעביר את מסד הנתונים המיובא למצב אונליין ממצב RESTORING. מומלץ מאוד למשתמשים לא להשתמש בפקודות T-SQL כדי להעלות את מסד הנתונים המיובא לאונליין.

    gcloud sql import bak INSTANCE_NAME \
    --database=DATABASE_NAME --recovery-only
  10. אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן באמצעות gcloud storage buckets remove-iam-policy-binding.

REST v1

  1. יוצרים קטגוריה של Cloud Storage.
  2. מעלים את הקובץ לקטגוריה.

    לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.

  3. נותנים למופע את storage.objectAdmin תפקיד ה-IAM של הקטגוריה. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM.
  4. רשימה מלאה של הפרמטרים של הבקשה מופיעה בדף instances:import.
  5. ייבוא גיבוי מלא באמצעות 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 שדומה לזו:

  6. אופציונלי: ייבוא גיבוי דיפרנציאלי.
  7. ייבוא גיבוי של יומן עסקאות.

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • 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 שדומה לזו:

    חוזרים על השלב הזה עד שמייבאים את כל הגיבויים של יומן העסקאות.
  8. אחרי שמשחזרים את כל קובצי הגיבוי, משתמשים בדגל 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 שדומה לזו:

  9. אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן.

REST v1beta4

  1. יוצרים קטגוריה של Cloud Storage.
  2. מעלים את הקובץ לקטגוריה.

    לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.

  3. נותנים למופע את storage.objectAdmin תפקיד ה-IAM של הקטגוריה. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM.
  4. ייבוא גיבוי מלא באמצעות 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 שדומה לזו:

  5. אופציונלי: ייבוא גיבוי דיפרנציאלי.
  6. ייבוא גיבוי של יומן עסקאות. השדות 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 שדומה לזו:

    חוזרים על השלב הזה עד שמייבאים את כל הגיבויים של יומן העסקאות.
  7. אחרי שמשחזרים את כל קובצי הגיבוי, משתמשים ב-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 שדומה לזו:

  8. אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן.

שימוש בייבוא עם פסים

היתרונות של ייבוא עם פסים הם:

  • קיצור הזמן שנדרש להשלמת פעולות
  • אפשר לייבא מסדי נתונים גדולים מ-5TB

חיסרון פוטנציאלי בשימוש בייבוא עם פסי מידע הוא שצריך להעלות את כל הקבצים בסט של פסי המידע (ולא קובץ יחיד) לאותה תיקייה בקטגוריה של Cloud Storage לפני שמבצעים את הייבוא.

תכנון האופרציה הבינלאומית

ברוב תרחישי השימוש, ייבוא עם פסי נתונים מאפשר ביצועים טובים יותר ללא חסרונות. עם זאת, אם אתם לא יכולים לגבות קבוצה מפוספסת ממופע נתון, או אם מסד הנתונים שלכם קטן מ-5TB, ואם ביצועים מהירים הם לא קריטיים, כדאי להשתמש בייבוא לא מפוספס.

איך משתמשים בייבוא עם פסים

gcloud

  1. יוצרים קטגוריה של Cloud Storage לייבוא.

    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME

    השלב הזה לא נדרש, אבל מומלץ מאוד לבצע אותו כדי שלא תהיה גישה לנתונים אחרים.

  2. מוודאים שהגדרתם את התפקידים וההרשאות הנדרשים ב-IAM.
  3. יוצרים תיקייה חדשה בדלי.
  4. כדי לייבא את מסד הנתונים, מעלים את הקבצים של קבוצת הפסים (של מסד הנתונים) לתיקייה החדשה. מוודאים שכל הקבצים הועלו לתיקייה, ושאין בתיקייה קבצים נוספים.
  5. מתארים את המופע שממנו מייצאים:
    gcloud sql instances describe INSTANCE_NAME
  6. מעתיקים את השדה serviceAccountEmailAddress.
  7. משתמשים ב- gcloud storage buckets add-iam-policy-binding כדי להקצות לחשבון השירות את התפקיד ב-IAM עבור הדלי.storage.objectViewer מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM.
  8. מייבאים את הנתונים מהתיקייה. ההבדל מייבוא ללא פסים הוא כדלקמן: הקישור ל-URI הוא לשם התיקייה שאליה הועלה סט הפסים, ולא לקובץ יחיד, ומציינים את הפרמטר --striped:
    gcloud beta sql import bak INSTANCE_NAME gs://BUCKET_NAME/FOLDER_NAME \
    --database=DATABASE_NAME --striped
  9. אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן באמצעות gcloud storage buckets remove-iam-policy-binding.

REST v1

  1. יוצרים קטגוריה של Cloud Storage.
  2. מעלים את הקובץ לקטגוריה.

    לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.

  3. נותנים למופע את storage.objectAdmin תפקיד ה-IAM של הקטגוריה. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM.
  4. מייבאים את הנתונים מהקובץ:

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • 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 שדומה לזו:

    כדי להשתמש במשתמש אחר לייבוא, מציינים את המאפיין importContext.importUser.

    רשימה מלאה של הפרמטרים של הבקשה מופיעה בדף instances:import.
  5. אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן.

REST v1beta4

  1. יוצרים קטגוריה של Cloud Storage.
  2. מעלים את הקובץ לקטגוריה.

    לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.

  3. נותנים למופע את storage.objectAdmin תפקיד ה-IAM של הקטגוריה. מידע נוסף על הגדרת הרשאות IAM זמין במאמר שימוש בהרשאות IAM.
  4. מייבאים את הנתונים מהקובץ:

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • 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 שדומה לזו:

    כדי להשתמש במשתמש אחר לייבוא, מציינים את המאפיין importContext.importUser.

    רשימה מלאה של הפרמטרים של הבקשה מופיעה בדף instances:import.
  5. אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן.

אם מופיעה שגיאה כמו ERROR_RDBMS, צריך לוודא שהטבלה קיימת. אם הטבלה קיימת, צריך לוודא שיש לכם את ההרשאות הנכונות בדלי. במאמר יצירה וניהול של רשימות של בקרת גישה מוסבר איך להגדיר בקרת גישה ב-Cloud Storage.

המאמרים הבאים