בדף הזה מוסבר איך לייצא נתונים מאשכולות של AlloyDB ל-PostgreSQL לקובצי SQL dump.
מידע על העברה של מסד נתונים שלם משרת מסד נתונים נתמך למופע חדש של AlloyDB זמין במאמר העברת מסד נתונים ל-AlloyDB באמצעות Database Migration Service. אם אתם מייצאים כי אתם רוצים ליצור מופע חדש מהקובץ המיוצא, כדאי לשקול שחזור של אשכול מגיבוי מאוחסן.
אתם יכולים לבטל את ייצוא הנתונים מאשכולות של AlloyDB ל-PostgreSQL. מידע נוסף מופיע במאמר ביטול ייצוא נתונים.
לפני שמתחילים
- לפני שמתחילים פעולת ייצוא, חשוב לזכור שפעולות ייצוא משתמשות במשאבי מסד נתונים, אבל הן לא מפריעות לפעולות רגילות של מסד נתונים, אלא אם המופע לא הוקצה בצורה מספקת.
- חיובים על העברת נתונים בין אזורים חלים כשהקטגוריה של היעד נמצאת באזור שונה מהאזור של אשכול המקור. מידע נוסף זמין במאמר בנושא תמחור של AlloyDB ל-PostgreSQL.
- הדחיסה מופעלת אם שם האובייקט מסתיים בסיומת
.gz. האובייקט מיוצא בפורמט.gzל-Cloud Storage. - אפשר להריץ כמה פעולות ייצוא במקביל.
תפקידים והרשאות שנדרשים לייצוא מ-AlloyDB
כדי לייצא נתונים מ-AlloyDB ל-Cloud Storage, למשתמש שמפעיל את הייצוא צריך להיות אחד מהתפקידים הבאים בניהול זהויות והרשאות גישה (IAM):
- התפקיד Cloud AlloyDB Admin (
roles/alloydb.admin) - תפקיד בהתאמה אישית, כולל ההרשאות הבאות:
alloydb.clusters.getalloydb.clusters.export
בנוסף, לחשבון השירות של אשכול AlloyDB צריך להיות אחד מהתפקידים הבאים:
- תפקיד IAM
storage.objectAdmin - תפקיד בהתאמה אישית, כולל ההרשאות
storage.objects.create
במאמר ניהול זהויות והרשאות גישה מוסבר איך משתמשים בתפקידים ב-IAM.
ייצוא נתונים מ-AlloyDB לקובץ SQL מוכן לשימוש
כשמבצעים ייצוא באמצעות AlloyDB, בין אם באמצעות ה-CLI של gcloud או ה-API, משתמשים בכלי pg_dump עם האפשרויות הנדרשות כדי לוודא שקובץ הייצוא שמתקבל יהיה תקין לייבוא חזרה ל-AlloyDB.
כדי לייצא נתונים ממסד נתונים באשכול AlloyDB לקובץ SQL dump בקטגוריה של Cloud Storage, צריך לבצע את השלבים הבאים:
gcloud
- יצירת קטגוריה של Cloud Storage
משתמשים בפורמט שמופיע כאן כדי לזהות את חשבון השירות של הפרויקט שממנו מייצאים. הפורמט של חשבון השירות הוא:
service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.comנותנים לחשבון השירות הרשאות לקטגוריה של Cloud Storage עבור פעולת הייצוא.
משתמשים ב-
.gcloud storage buckets add-iam-policy-bindingכדי להקצות את התפקיד ב-IAMstorage.objectAdminלחשבון השירות. במאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM.מייצאים את מסד הנתונים לקטגוריה של Cloud Storage. בהמשך מפורטות אפשרויות לייצוא נתונים בפורמט SQL dump:
-
--async(אופציונלי): חזרה מיידית, בלי לחכות שהפעולה תסתיים. -
--tables(אופציונלי): טבלאות לייצוא. -
--schema-only(אופציונלי): אם ההגדרה הזו מוגדרת, רק הסכימה מיוצאת. -
--clean-target-objects(אופציונלי): אם ההגדרה הזו מוגדרת, הפקודות להצגת כל האובייקטים של מסד הנתונים שנוצרו מוצגות לפני הפקודות ליצירתם.DROP -
--if-exist-target-objects(אופציונלי): אם ההגדרה הזו מוגדרת, משתמשים בפקודותDROP ... IF EXISTSכדי לבדוק אם האובייקט קיים לפני שמשחררים אותו במצב--clean-target-objects.
כדי להשתמש בתכונות האלה, צריך לכלול את האפשרויות האלה בפקודה
gcloud. אם רוצים לייצא רק את הגדרות האובייקטים (סכימה) ולא נתונים, משתמשים בדגל–-schema-only. כדי לציין אילו טבלאות לייצא, משתמשים בדגל--tables=TABLE_NAMES. כדי לציין כמה טבלאות, אפשר להפריד בין שמות הטבלאות באמצעות פסיקים או להשתמש בדפוסי תו כללי.אחרת, מסירים את הפרמטרים האלה מהפקודה הבאה:
gcloud alloydb clusters export CLUSTER_NAME --region=REGION --database=DATABASE_NAME --gcs-uri="gs://BUCKET_NAME/OBJECT_NAME" --tables=TABLE_NAMES --schema-only --clean-target-objects --if-exist-target-objects --sqlהפקודה
alloydb clusters exportלא מכילה טריגרים או פרוצדורות מאוחסנות, אבל היא כן מכילה תצוגות. כדי לייצא טריגרים או פרוצדורות מאוחסנות, משתמשים בכליpg_dump.מידע נוסף על השימוש בפקודה
alloydb clusters exportזמין בדף העזרה של הפקודהalloydb clusters export.-
אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, בטלו את התפקיד עכשיו.
REST v1
יוצרים קטגוריה לייצוא:
gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAMEמשתמשים בפורמט של חשבון השירות כדי לזהות את חשבון השירות של הפרויקט שממנו מייצאים.
הפורמט של חשבון השירות הוא:
service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.comנותנים לחשבון השירות הרשאות לקטגוריה של Cloud Storage עבור פעולת הייצוא.
משתמשים ב-
gcloud storage buckets add-iam-policy-bindingכדי להקצות את התפקיד ב-IAMstorage.objectAdminלחשבון השירות. במאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM.מייצאים את מסד הנתונים.
משתמשים ב-method הבא ב-HTTP ובכתובת ה-URL:
POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:exportלפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט.
- REGION: האזור שבו נפרס אשכול AlloyDB.
- CLUSTER_ID: מזהה האשכול.
- BUCKET_NAME: שם הקטגוריה ב-Cloud Storage.
- PATH_TO_SQL_FILE: הנתיב לקובץ ה-SQL המוכן לשימוש.
- DATABASE_NAME: השם של מסד נתונים בתוך מופע AlloyDB.
- TABLES: הטבלאות לייצוא.
- SCHEMA_ONLY: אם
true, ייצוא הסכימה בלבד. - CLEAN_TARGET_OBJECTS: אם
true, פקודות הפלט יכללו את כל אובייקטי מסד הנתונים שנוצרו לפני הפלט של הפקודות ליצירתם.DROP - IF_EXIST_TARGET_OBJECTS: אם
true, משתמשים בפקודותDROP ... IF EXISTSכדי לבדוק אם האובייקט קיים לפני שמעבירים אותו למצבclean_target_objects.
כדי להשתמש בתכונות האלה, צריך להגדיר את הערכים של הפרמטרים האלה בתור
true. אחרת, מגדירים את הערכים שלהם ל-false. אם רוצים לייצא רק את הגדרות האובייקטים (סכימה) ולא נתונים, משתמשים בדגלschema_only. כדי לציין אילו טבלאות לייצא, משתמשים בשדהtables. אפשר לבחור כמה טבלאות על ידי הזנת רשימה מופרדת בפסיקים של שמות טבלאות, או על ידי כתיבת תווים כלליים לחיפוש בתבנית.תוכן בקשת JSON:
{ "gcs_destination": { "uri": "gs://BUCKET_NAME/PATH_TO_SQL_FILE" }, "database": "DATABASE_NAME", "sql_export_options": { "schema_only": true, "tables": [ "TABLE1", "TABLE2" ], "clean_target_objects": false, "if_exist_target_objects": true } }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
Curl (Linux, macOS או Cloud Shell)
שומרים את גוף הבקשה בקובץ בשם
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://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:export"PowerShell (Windows)
שומרים את גוף הבקשה בקובץ בשם
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://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:export"| Select-Object -Expand Contentמקבלים תגובת JSON שדומה לזו:
תשובה
{ "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata", "createTime": "2024-09-17T06:05:31.244428646Z", "target": "projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID", "verb": "export", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }אם אין לכם צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותו עכשיו.
רשימה מלאה של הפרמטרים של הבקשה מופיעה במאמר בנושא clusters:export.