בדף הזה יש סקירה כללית של רפליקציה בין קטגוריות והוראות לשימוש בתכונה.
סקירה כללית של רפליקציה בין קטגוריות
במקרים מסוימים, יכול להיות שתרצו להעתיק נתונים מקטגוריית Cloud Storage אחת לקטגוריה אחרת. שכפול בין קטגוריות מעתיק אובייקטים חדשים ומעודכנים באופן אסינכרוני מקטגוריית מקור לקטגוריית יעד.
רפליקציה בין קטגוריות שונה מרפליקציה רגילה ומרפליקציה בקצב טורבו בכך שהנתונים שלכם קיימים בשתי קטגוריות, שלכל אחת מהן יש הגדרות משלה, כמו מיקום אחסון, הצפנה, גישה וסוג אחסון (storage class). כתוצאה מכך, הוא מציע שחזור נתונים וזמינות, אבל הוא מתאים גם ל:
- ריבונות נתונים: שמירה על נתונים באזורים מרוחקים גיאוגרפית.
- שמירה על גרסאות פיתוח וייצור נפרדות: יוצרים מאגרי מידע ומרחבי שמות נפרדים, כדי שהפיתוח לא ישפיע על עומס העבודה של הייצור.
- שיתוף נתונים: שכפול נתונים לקטגוריה שבבעלות ספק או שותף.
- צבירת נתונים: שילוב נתונים מכמה קטגוריות לקטגוריה אחת כדי להריץ עומסי עבודה של ניתוח נתונים.
- ניהול עלויות, אבטחה ועמידה בדרישות: שמירה על הנתונים בבעלויות שונות, בסוגי אחסון שונים ובתקופות שמירה שונות.
שכפול בין קטגוריות משתמש ב-Storage Transfer Service כדי לשכפל אובייקטים וב-Pub/Sub כדי לקבל התראות על שינויים בקטגוריות המקור והיעד. אפשר להפעיל רפליקציה בין קטגוריות בקטגוריות חדשות שיוצרים ובקטגוריות קיימות. רוב האובייקטים יכולים לעבור רפליקציה תוך דקות, אבל אובייקטים בגודל של יותר מ-GiB אחד יכולים לעבור רפליקציה תוך כמה שעות.
מגבלות
אין תמיכה בשמות מותאמים אישית בעבודות שכפול בין מאגרי מידע. בקשות שכוללות ערך בשדה
nameיחזירו שגיאה.שכפול בין קטגוריות לא נתמך בקטגוריות עם מרחב שמות היררכי.
מחיקות של אובייקטים בקטגוריית המקור לא משוכפלות לקטגוריית היעד.
הגדרות מחזור החיים של אובייקטים לא משוכפלות.
כשמשכפלים אובייקטים, מטא-נתונים של חותמות זמן (לדוגמה,
timeCreatedו-timeUpdated) לא נשמרים. פרטים על שמירת מטא-נתונים זמינים במאמר בנושא העברות בין קטגוריות של Cloud Storage.מכיוון שאפשר להשתמש ברפליקציה בין קטגוריות כדי ליצור רפליקות של נתונים בין קטגוריות שנמצאות בכל מיקום ב-Google Cloud, הביצועים של הרפליקציה בין קטגוריות משתנים בהתאם למיקומים שנבחרו. לכן, שכפול בין מאגרי מידע לא מציע יעד להתאוששות מאסון (RPO).
אובייקטים שכבר נמצאים בדלי כשיוצרים משימת שכפול לא משוכפלים באופן אוטומטי. רק אובייקטים חדשים ומעודכנים משוכפלים. כדי לשכפל אובייקטים קיימים, יוצרים משימת העברה חד-פעמית ב-Storage Transfer Service מהקטגוריה הקיימת לקטגוריה החדשה. הוראות מפורטות זמינות במאמר בנושא יצירת העברות.
לפני שמתחילים
לפני שמתחילים, צריך לבצע את השלבים הבאים.
הפעלת Storage Transfer Service API
אם עדיין לא עשיתם זאת, מפעילים את Storage Transfer Service API.
קבלת התפקידים הנדרשים
כדי לקבל את ההרשאות שנדרשות לשימוש בשכפול בין קטגוריות, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM Storage Transfer User (roles/storagetransfer.user) בקטגוריה או בפרויקט המקור.
התפקיד המוגדר מראש הזה כולל את ההרשאות שנדרשות לשימוש בשכפול בין קטגוריות. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי להשתמש בשכפול בין מאגרי מידע, נדרשות ההרשאות הבאות:
-
storagetransfer.jobs.create -
storagetransfer.jobs.delete -
storagetransfer.jobs.get -
storagetransfer.jobs.list -
storagetransfer.jobs.run -
storagetransfer.jobs.update
במאמר שימוש ב-IAM עם קטגוריות מוסבר איך מקצים תפקידים בקטגוריות. במאמר ניהול הגישה לפרויקטים מופיעות הוראות להקצאת תפקידים בפרויקטים.
מתן התפקידים הנדרשים
שכפול בין קטגוריות משתמש ב-Storage Transfer Service כדי לשכפל אובייקטים מקטגוריית המקור לקטגוריית היעד, וב-Pub/Sub כדי לקבל התראות על שינויים בקטגוריית המקור.
כדי שהשירותים האלה יוכלו לשמש לשכפול בין מאגרי מידע, צריך להעניק את ההרשאות הנדרשות לחשבון השירות שמשמש את Storage Transfer Service לשכפול נתונים, ולסוכן השירות שמשמש את Pub/Sub לכתיבת התראות.
מתן התפקידים הנדרשים ל-Storage Transfer Service
אפשר להעניק את ההרשאות הנדרשות לשכפול נתונים באמצעות Storage Transfer Service לאחד משני חשבונות שירות. אחת מהאפשרויות:
- סוכן השירות של Storage Transfer Service, שנוצר ומנוהל באופן אוטומטי על ידי Google. כתובת האימייל של סוכן השירות הזה היא בפורמט השמות
project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com. אפשר לקבל את כתובת האימייל של סוכן השירות של Storage Transfer Service באמצעות Storage Transfer ServicegoogleServiceAccounts.getAPI.
או:
חשבון שירות שמנוהל על ידי משתמש. כתובת האימייל של חשבון השירות הזה היא בפורמט
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com. אתם יכולים ליצור חשבון שירות משלכם ולהעניק לו את ההרשאות הנדרשות כדי לשכפל את הנתונים.הוראות לשימוש בחשבון שירות שמנוהל על ידי משתמש עם Storage Transfer Service מופיעות במאמר הקצאת הרשאות של סוכן שירות לחשבון שירות שמנוהל על ידי משתמש. נדרשות הרשאות נוספות מעבר לאלה שמפורטות ברשימות הבאות. בפרט, צריך להקצות לסוכן השירות את התפקיד 'יצירת אסימונים בחשבון שירות' (
roles/iam.serviceAccountTokenCreator) כדי לתת לו גישה לחשבון השירות שמנוהל על ידי המשתמש. מידע נוסף זמין במאמר מתן גישה לסוכן השירות.
לסוכן השירות של Storage Transfer Service או לחשבון השירות של המשתמש צריכות להיות ההרשאות הבאות כדי לשכפל את האובייקטים ולהגדיר התראות Pub/Sub לקטגוריית המקור:
ההרשאות הנדרשות
צריך לתת את ההרשאות הבאות בפרויקט המקור:
pubsub.topics.createpubsub.subscriptions.createpubsub.subscriptions.consume
צריך לתת את ההרשאות הבאות בקטגוריית המקור:
storage.buckets.getstorage.buckets.updatestorage.objects.get
צריך לתת את ההרשאות הבאות בקטגוריית היעד:
storage.buckets.getstorage.objects.createstorage.objects.get
אפשר להעניק את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או באמצעות הענקת כל התפקידים המוגדרים מראש הבאים:
- התפקיד 'עריכה ב-Pub/Sub' (
roles/pubsub.editor) בפרויקט המקור - התפקידים Storage Legacy Bucket Owner (
roles/storage.legacyBucketOwner) ו-Storage Object Viewer (roles/storage.objectViewer) בקטגוריית המקור - התפקידים Storage Legacy Bucket Writer (
roles/storage.legacyBucketWriter) ו-Storage Object Viewer (roles/storage.objectViewer) בקטגוריית היעד
הקצאת התפקידים הנדרשים ל-Pub/Sub
ב-Cloud Storage משתמשים בסוכן שירות שמנוהל על ידי Google כדי לנהל התראות Pub/Sub. כתובת האימייל של סוכן השירות הזה היא בפורמט service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com.
סוכן השירות של Cloud Storage צריך את ההרשאות הבאות כדי להגדיר את Pub/Sub ולפרסם הודעות בנושא:
ההרשאות הנדרשות
-
pubsub.topics.publishבנושא Pub/Sub -
pubsub.subscriptions.consumeבנושא Pub/Sub -
pubsub.subscriptions.createבפרויקט המקור
אפשר להעניק את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או באמצעות הענקת התפקיד המוגדר מראש הבא:
- פרסום הודעות ב-Pub/Sub (
roles/pubsub.publisher) בפרויקט המקור
יצירת עבודת שכפול
המסוף
הוראות ליצירת משימת שכפול באמצעות מסוף Google Cloud זמינות במאמר יצירת משימת שכפול באמצעות מסוף Google Cloud .
שורת הפקודה
כשמשתמשים ב-Google Cloud CLI, אפשר ליצור משימת שכפול לדליים קיימים.
כדי ליצור עבודת שכפול, משתמשים בפקודה gcloud alpha transfer jobs create עם הדגל --replication:
gcloud alpha transfer jobs create gs://SOURCE_BUCKET_NAME gs://DESTINATION_BUCKET_NAME --replication
מחליפים את:
SOURCE_BUCKET_NAMEבשם של קטגוריית המקור שרוצים לשכפל. לדוגמה,my-source-bucket.
DESTINATION_BUCKET_NAMEבשם של קטגוריית היעד. לדוגמה,my-destination-bucket.
שימו לב: לא ניתן להשתמש בדגל --name בעבודות שכפול בין מאגרי מידע.
ממשקי API ל-REST
API ל-JSON
כשמשתמשים ב-API בפורמט JSON, אפשר ליצור משימת שכפול לקטגוריות קיימות.
התקנה והפעלה של ה-CLI של gcloud, שמאפשרות ליצור אסימון גישה לכותרת
Authorization.יוצרים קובץ JSON שמכיל אובייקט
TransferJobעם משאבReplicationSpecמאותחל:TransferJob { ReplicationSpec: { "gcsDataSource": { "bucketName": "SOURCE_BUCKET_NAME" }, "gcsDataSink" { "bucketName": "DESTINATION_BUCKET_NAME" }, "objectConditions": { }, "transferOptions": { "overwriteWhen": "OVERWRITE_OPTION" } } ... }
מחליפים את:
SOURCE_BUCKET_NAMEבשם של קטגוריית המקור שמכילה את האובייקטים שרוצים לשכפל. לדוגמה,example-source-bucket.
DESTINATION_BUCKET_NAMEבשם קטגוריית היעד שאליה יועתקו האובייקטים. לדוגמה,example-destination-bucket.OVERWRITE_OPTIONעם אפשרות להגדיר איך אובייקטים קיימים בקטגוריית היעד יכולים להיות מוחלפים כתוצאה מעבודת שכפול, מה שיכול לקרות כשאובייקט היעד ואובייקט המקור הם בעלי אותו שם. הערך חייב להיות אחד מהערכים הבאים:
ALWAYS: תמיד להחליף אובייקטים בקטגוריית היעד
DIFFERENT: מחליף אובייקטים בקטגוריית היעד רק אם נתוני אובייקט היעד שונים מנתוני אובייקט המקור
NEVER: אף פעם לא להחליף אובייקטים בקטגוריית היעד
חשוב לזכור שאין תמיכה בשדה
nameבעבודות שכפול בין מאגרי מידע.משתמשים ב-cURL כדי לשלוח קריאה ל-Storage Transfer Service API בארכיטקטורת REST באמצעות בקשת
transferJobs.create:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storagetransfer.googleapis.com/v1/transferJobs"
מחליפים את מה שכתוב בשדות הבאים:
-
JSON_FILE_NAMEהוא השם של קובץ ה-JSON שיצרתם בשלב 2.
-
כדי לבדוק את הסטטוס של עבודת השכפול, צופים ביומנים של Storage Transfer Service ב-Cloud Logging.
הצגת רשימה של משימות שכפול
המסוף
הוראות לשימוש במסוף Google Cloud לצורך הצגת רשימה של משימות שכפול זמינות במאמר הצגת רשימה של משימות שכפול באמצעות מסוף Google Cloud .
שורת הפקודה
משתמשים בפקודה gcloud alpha transfer jobs list עם הדגל --job-type:
gcloud alpha transfer jobs list --job-type=replication
ממשקי API ל-REST
API ל-JSON
התקנה והפעלה של ה-CLI של gcloud, שמאפשרות ליצור אסימון גישה לכותרת
Authorization.משתמשים ב- cURL כדי לשלוח קריאה ל-Storage Transfer Service API בארכיטקטורת REST באמצעות בקשת
transferJobs.list:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storagetransfer.googleapis.com/v1/transferJobs"
צפייה במשימת שכפול
המסוף
הוראות לשימוש במסוף Google Cloud להצגת משימת שכפול מפורטות במאמר הצגת משימת שכפול באמצעות מסוף Google Cloud .
שורת הפקודה
משתמשים בפקודה gcloud alpha transfer jobs describe:
gcloud alpha transfer jobs describe JOB_NAME
מחליפים את:
-
JOB_NAMEבמזהה הייחודי של עבודת השכפול. לדוגמה,1234567890. כדי למצוא את המזהה של עבודת ההעברה, מציגים את רשימת עבודות השכפול.
ממשקי API ל-REST
API ל-JSON
התקנה והפעלה של ה-CLI של gcloud, שמאפשרות ליצור אסימון גישה לכותרת
Authorization.משתמשים ב-
cURLכדי לשלוח קריאה ל-Storage Transfer Service API בארכיטקטורת REST באמצעות בקשתtransferJobs.get:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storagetransfer.googleapis.com/v1/transferJobs/JOB_NAME"
מחליפים את:
-
JOB_NAMEעם המזהה הייחודי של משימת השכפול. לדוגמה,1234567890. כדי למצוא את המזהה של עבודת השכפול, מציגים את רשימת עבודות השכפול.
-
עדכון של משימת שכפול
אפשר לעדכן את השדות הבאים של עבודת שכפול:
תיאור של עבודת השכפול
ההגדרה להרצת משימת שכפול
ההגדרה של התראות שמתפרסמות ב-Pub/Sub
התנהגות הרישום ביומן של פעולות של משימות שכפול
הסטטוס של עבודת השכפול (מופעלת, מושבתת או נמחקה)
המסוף
הוראות לעדכון משימת שכפול במסוף Google Cloud זמינות במאמר עדכון משימת שכפול באמצעות מסוף Google Cloud .
שורת הפקודה
משתמשים בפקודה gcloud alpha transfer jobs update עם הדגלים ששולטים במאפיינים של עבודת השכפול שרוצים לעדכן. רשימה של הדגלים האפשריים מופיעה במאמרי העזרה בנושא gcloud alpha transfer jobs update.
לדוגמה, כדי לעדכן את התנהגות השכתוב של אובייקט בעבודת הרפליקציה, מריצים את הפקודה gcloud alpha transfer jobs update עם הדגל --overwrite-when:
gcloud alpha transfer jobs update JOB_NAME --overwrite-when=OVERWRITE_OPTION
מחליפים את:
JOB_NAMEבמזהה הייחודי של עבודת השכפול. לדוגמה,1234567890. כדי למצוא את המזהה של עבודת ההעברה, אפשר לרשום או להציג את עבודת ההעברה.
OVERWRITE_OPTIONעם אפשרות להגדיר איך אובייקטים קיימים בקטגוריית היעד יוחלפו כתוצאה מעבודת שכפול. זה יכול לקרות כשאובייקט היעד ואובייקט המקור הם בעלי אותו שם. הערך חייב להיות אחד מהערכים הבאים:
always: תמיד מחליף את אובייקטי היעד.
different: מחליף רק אובייקטים בקטגוריית היעד אם נתוני אובייקט היעד שונים מנתוני אובייקט המקור.
never: אף פעם לא מתבצעת החלפה של אובייקטים ביעד.
ממשקי API ל-REST
API ל-JSON
התקנה והפעלה של ה-CLI של gcloud, שמאפשרות ליצור אסימון גישה לכותרת
Authorization.יוצרים קובץ JSON שמכיל את המבנה הבא, שכולל את השדות של אובייקט
TransferJobשרוצים לעדכן:{ "projectId": string, "transferJob": { object (TransferJob) }, "updateTransferJobFieldMask": UPDATE_MASK }
מחליפים את מה שכתוב בשדות הבאים:
מחליפים את
object (TransferJob)בשדות של עבודת השכפול שרוצים לעדכן. מידע נוסף זמין בTransferJobייצוג המשאבים.
UPDATE_MASKהיא רשימה מופרדת בפסיקים של שמות השדות שרוצים לעדכן. הערכים יכולים להיות אחד או יותר מהערכים הבאים:description, transferSpec, notificationConfig,loggingConfig, status.
מידע נוסף על שמות השדות שאפשר לכלול זמין בגוף הבקשה
transferJobs.patch.משתמשים ב-cURL כדי לשלוח קריאה ל-Storage Transfer Service API בארכיטקטורת REST באמצעות בקשת
transferJobs.patch:curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storagetransfer.googleapis.com/v1/transferJobs/JOB_NAME"
מחליפים את:
-
JOB_NAMEעם המזהה הייחודי של משימת השכפול. לדוגמה,1234567890. כדי למצוא את המזהה של עבודת השכפול, מציגים את רשימת עבודות השכפול.
-
מחיקת משימת שכפול
המסוף
הוראות למחיקת משימת שכפול במסוף מופיעות במאמר מחיקת משימת שכפול באמצעות המסוף. Google Cloud Google Cloud
שורת הפקודה
משתמשים בפקודה gcloud alpha transfer jobs delete:
gcloud alpha transfer jobs delete JOB_NAME
מחליפים את:
-
JOB_NAMEבמזהה הייחודי של עבודת השכפול. לדוגמה,1234567890. כדי למצוא את המזהה של עבודת השכפול, מציגים את רשימת עבודות השכפול.
ממשקי API ל-REST
API ל-JSON
התקנה והפעלה של ה-CLI של gcloud, שמאפשרות ליצור אסימון גישה לכותרת
Authorization.משתמשים ב- cURL כדי לשלוח קריאה ל-Storage Transfer Service API בארכיטקטורת REST באמצעות בקשת
transferJobs.delete:curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storagetransfer.googleapis.com/v1/transferJobs/JOB_NAME"
מחליפים את:
-
JOB_NAMEעם המזהה הייחודי של משימת השכפול. לדוגמה,1234567890. כדי למצוא את המזהה של עבודת השכפול, מציגים את רשימת עבודות השכפול.
-