ייצוא וייבוא באמצעות קובצי 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. כדי לפתוח את הדף Overview של מכונה, לוחצים על שם המכונה.
  3. לוחצים על ייצוא.
  4. בקטע פורמט קובץ, לוחצים על BAK.
  5. בקטע Data to export, בוחרים בתפריט הנפתח את מסד הנתונים שממנו רוצים לייצא.
  6. בקטע Destination, לוחצים על Browse כדי לחפש קטגוריה של 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. אתם מפעילים את האפשרות "שחזור מערכת מנקודה מסוימת בזמן" בשעה 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: הנתיב לקובץ ה-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 שדומה לזו:

  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). כדי להשתמש בייצוא ללא שרת (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 שדומה לזו:

  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: כדי להפעיל את הייצוא ללא שרת (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 שדומה לזו:

  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.

    ה-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.

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

המסוף

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

    כניסה לדף Cloud SQL Instances

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

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

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

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

שימוש בייבוא מקבילי (striped)

היתרונות של ייבוא מקבילי:

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

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

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

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

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

‫REST v1beta4

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

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

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

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