בקטע הזה מוסבר איך להגדיר גיבוי ושחזור של נתונים במעגל של מסד הנתונים Apache Cassandra שהותקן במישור זמן הריצה של Apigee Hybrid. אפשר לעיין גם במאגר הנתונים של Cassandra.
מה צריך לדעת על גיבויים של Cassandra
Cassandra הוא מסד נתונים משוכפל שמוגדר כך שיהיו לפחות שלושה עותקים של הנתונים שלכם בכל אזור או מרכז נתונים. Cassandra משתמשת בשכפול סטרימינג ובתיקוני קריאה כדי לשמור על רפליקות הנתונים בכל אזור או מרכז נתונים בכל נקודה נתונה.
בסביבה היברידית, הגיבויים של Cassandra לא מופעלים כברירת מחדל. עם זאת, מומלץ להפעיל גיבויים של Cassandra למקרה שהנתונים יימחקו בטעות.
מה מגובֶה?
הגדרות הגיבוי שמתוארות במאמר הזה מגבות את הישויות הבאות:
- סכימת Cassandra כולל סכימת המשתמש (הגדרות של מרחב מפתחות Apigee)
- פרטי טוקן של מחיצת Cassandra לכל צומת
- תמונת מצב של נתוני Cassandra
איפה נשמרים נתוני הגיבוי?
הנתונים שגובו מאוחסנים בקטגוריה של Google Cloud Storage שצריך ליצור. בנושא הזה מוסבר איך ליצור קטגוריה ואיך להגדיר אותה.
תזמון גיבויים של Cassandra
גיבויים מתוזמנים כמשימות cron במישור זמן הריצה. כדי לתזמן גיבויים של Cassandra:
- מריצים את הפקודה
create-service-accountהבאה כדי ליצור חשבון שירות (SA) ב-Google Cloud עם התפקיד הרגילroles/storage.objectAdmin. תפקיד SA הזה מאפשר לכם לכתוב נתוני גיבוי ל-Cloud Storage. מריצים את הפקודה הבאה בספריית הבסיס של ההתקנה ההיברידית: לדוגמה:./tools/create-service-account apigee-cassandra OUTPUT_DIR
מידע נוסף על חשבונות שירות ב-Google Cloud זמין במאמר יצירה וניהול של חשבונות שירות../tools/create-service-account apigee-cassandra ./service-accounts
- הפקודה
create-service-accountשומרת קובץ JSON שמכיל את המפתח הפרטי של חשבון השירות. הקובץ נשמר באותה ספרייה שבה מופעלת הפקודה. תצטרכו את הנתיב לקובץ הזה בשלבים הבאים. - יצירת קטגוריה של Cloud Storage מציינים מדיניות שמירת נתונים סבירה לקטגוריה. Apigee ממליצה על מדיניות שמירת נתונים של 15 ימים.
- פותחים את קובץ
overrides.yaml. - כדי להפעיל גיבוי, מוסיפים את המאפיינים הבאים
cassandra.backup. אל תסירו אף אחת מהמאפיינים שכבר הוגדרו.פרמטרים
cassandra: ... backup: enabled: true serviceAccountPath: SA_JSON_FILE_PATH dbStorageBucket: CLOUD_STORAGE_BUCKET_PATH schedule: BACKUP_SCHEDULE_CODE ...דוגמה
... cassandra: storage: type: gcepd capacity: 50Gi gcepd: replicationType: regional-pd sslRootCAPath: "/Users/myhome/ssh/cassandra.crt" sslCertPath: "/Users/myhome/ssh/cassandra.crt" sslKeyPath: "/Users/myhome/ssh/cassandra.key" auth: default: password: "abc123" admin: password: "abc234" ddl: password: "abc345" dml: password: "abc456" nodeSelector: key: cloud.google.com/gke-nodepool value: apigee-data backup: enabled: true serviceAccountPath: "/Users/myhome/.ssh/my_cassandra_backup.json" dbStorageBucket: "gs://myname-cassandra-backup" schedule: "45 23 * * 6" ...
כאשר:
- מחילים את שינויי ההגדרות על האשכול החדש. לדוגמה:
./apigeectl apply -f overrides.yaml
| מאפיין (property) | תיאור |
|---|---|
backup:enabled |
הגיבוי מושבת כברירת מחדל. צריך להגדיר את המאפיין הזה לערך true. |
backup:serviceAccountPath |
SA_JSON_FILE_PATH הנתיב במערכת הקבצים לקובץ ה-JSON של חשבון השירות שהורד כשמריצים את |
backup:dbStorageBucket |
CLOUD_STORAGE_BUCKET_PATH נתיב הקטגוריה של Cloud Storage בפורמט הזה: |
backup:schedule |
BACKUP_SCHEDULE_CODE השעה שבה הגיבוי מתחיל, שצוינה בתחביר crontab רגיל. ברירת מחדל: |
שחזור גיבויים
השחזור לוקח את הנתונים ממיקום הגיבוי ומשחזר אותם לאשכול חדש של Cassandra עם אותו מספר צמתים. לא נלקחים נתונים מאשכול Cassandra הישן.
ההוראות לשחזור שבהמשך מיועדות לפריסות באזור יחיד שמשתמשות ב-Google Cloud Storage לגיבויים. למידע על פריסות אחרות, קראו את המאמרים הבאים:
- לפריסות באזור יחיד שלא משתמשות ב-Google Cloud Storage לגיבויים, אפשר לעיין במאמר בנושא גיבוי ושחזור ללא Google Cloud.
- לפריסות מרובות אזורים, אפשר לעיין במאמר פריסה מרובת אזורים ב-GKE וב-GKE On-Prem.
כדי לשחזר גיבויים של Cassandra:
- יוצרים מרחב שמות חדש באשכול Kubernetes הקיים, שישמש לשחזור הפריסה של סביבת זמן הריצה ההיברידית. אל תשתמשו בשם המקורי של מרחב השמות בשביל מרחב השמות החדש. אל תשתמשו במרחב השמות הישן לשחזור.
- בספריית השורש של ההתקנה ההיברידית, יוצרים קובץ חדש בשם
overrides-restore.yaml. - מעתיקים את ההגדרה המלאה של Cassandra מהקובץ המקורי
overrides.yamlלקובץ החדשoverrides-restore.yaml. לדוגמה, הפקודה הבאה:cp ./overrides.yaml ./overrides-restore.yaml
- מוסיפים רכיב של מרחב שמות לקובץ
overrides-restore.yamlהחדש. אל תשתמשו באותו מרחב שמות שבו השתמשתם באשכול המקורי.פרמטרים
namespace: YOUR_RESTORE_NAMESPACE cassandra: ... restore: enabled: true snapshotTimestamp: TIMESTAMP serviceAccountPath: SA_JSON_FILE_PATH dbStorageBucket: CLOUD_STORAGE_BUCKET_PATH image: pullPolicy: Always ...דוגמה
... namespace: cassandra-restore cassandra: storage: type: gcepd capacity: 50Gi gcepd: replicationType: regional-pd sslRootCAPath: "/Users/myhome/ssh/cassandra.crt" sslCertPath: "/Users/myhome/ssh/cassandra.crt" sslKeyPath: "/Users/myhome/ssh/cassandra.key" auth: default: password: "abc123" admin: password: "abc234" ddl: password: "abc345" dml: password: "abc456" nodeSelector: key: cloud.google.com/gke-nodepool value: apigee-data restore: enabled: true snapshotTimestamp: "20210203213003" serviceAccountPath: "/Users/myhome/.ssh/my_cassandra_backup.json" dbStorageBucket: "gs://myname-cassandra-backup" image: pullPolicy: Always ...
כאשר:
מאפיין (property) תיאור namespaceYOUR_RESTORE_NAMESPACE
השם של מרחב השמות החדש שיצרתם בשלב 1 עבור אשכול Cassandra החדש. אל תשתמשו באותו מרחב שמות שבו השתמשתם עבור האשכול המקורי.
restore:enabledהשחזור מושבת כברירת מחדל. צריך להגדיר את המאפיין הזה לערך true.restore:snapshotTimestampTIMESTAMP
חותמת הזמן של תמונת המצב של הגיבוי שרוצים לשחזר. כדי לבדוק באילו חותמות זמן אפשר להשתמש, עוברים אל
dbStorageBucketומסתכלים על הקבצים שנמצאים בדלי. כל שם קובץ מכיל ערך של חותמת זמן, כמו בדוגמה הבאה:backup_20210203213003_apigee-cassandra-default-0.tgzכאשר 20210203213003 הוא הערך של
snapshotTimestampשבו הייתם משתמשים אם הייתם רוצים לשחזר את הגיבויים שנוצרו באותו רגע בזמן.restore:serviceAccountPathSA_JSON_FILE_PATH
הנתיב במערכת הקבצים לחשבון השירות שיצרתם לגיבוי.
restore:dbStorageBucketCLOUD_STORAGE_BUCKET_PATH
נתיב הקטגוריה של Cloud Storage שבו מאוחסנים נתוני הגיבוי, בפורמט הבא:
gs://BUCKET_NAMEהשדה
gs://הוא שדה חובה. - משנים את התווית
appבכל צומתי Cassandra במרחב השמות הישן על ידי הפעלת הפקודה הבאה:kubectl label pods --overwrite --namespace=OLD_NAMESPACE -l app=apigee-cassandra app=apigee-cassandra-old
- יוצרים פריסה חדשה של סביבת ריצה היברידית. ייווצר אשכול חדש של Cassandra והנתונים יתחילו להשתחזר לתוך האשכול:
./apigeectl init -f ../overrides-restore.yaml
./apigeectl apply -f ../overrides-restore.yaml
-
אחרי שהשחזור יסתיים, צריך להעביר את התנועה לשימוש באשכול Cassandra במרחב השמות החדש. מריצים את הפקודות הבאות כדי להעביר את התנועה:
kubectl get rs -n OLD_NAMESPACE # look for the 'apigee-connect' replicaset
kubectl patch rs -n OLD_NAMESPACE APIGEE_CONNECT_RS_NAME -p '{"spec":{"replicas" : 0}}' - אחרי שהתנועה תעבור, תוכלו להגדיר מחדש את הגיבויים באשכול המשוחזר. לשם כך, תצטרכו להסיר את ההגדרה
restoreולהוסיף את ההגדרהbackupלקובץoverrides-restore.yaml. מחליפים את YOUR_RESTORE_NAMESPACE בשם של מרחב השמות החדש שנוצר בשלב 1.namespace: YOUR_RESTORE_NAMESPACE cassandra: ... backup: enabled: true serviceAccountPath: SA_JSON_FILE_PATH dbStorageBucket: CLOUD_STORAGE_BUCKET_PATH schedule: BACKUP_SCHEDULE_CODE ...לאחר מכן מריצים את הפקודה הבאה כדי להחיל את הגדרות
backup:./apigeectl apply -f ../overrides-restore.yaml
צפייה ביומני השחזור
אפשר לבדוק את היומנים של עבודת השחזור ולהשתמש ב-grep כדי לחפש error כדי לוודא שאין שגיאות ביומן השחזור.
אימות השלמת השחזור
כדי לבדוק אם פעולת השחזור הסתיימה, משתמשים בפקודה הבאה:
kubectl get pods
הפלט אמור להיראות כך:
NAME READY STATUS RESTARTS AGE apigee-cassandra-default-0 1/1 Running 0 1h apigee-cassandra-default-1 1/1 Running 0 1h apigee-cassandra-default-2 1/1 Running 0 59m apigee-cassandra-restore-b4lgf 0/1 Completed 0 51m
צפייה ביומני השחזור
כדי לראות את יומני השחזור, משתמשים בפקודה הבאה:
kubectl logs -f apigee-cassandra-restore-b4lgf
הפלט אמור להיראות כך:
Restore Logs: Activated service account credentials for: [apigee-cassandra-backup-svc@gce-myusername.iam.gserviceaccount.com] to download file gs://gce-myusername-apigee-cassandra-backup/apigeecluster/dc-1/backup_20190405011309_schema.tgz INFO: download successfully extracted the backup files from gs://gce-myusername-apigee-cassandra-backup/apigeecluster/dc-1 finished downloading schema.cql to create schema from 10.32.0.28 Warnings : dclocal_read_repair_chance table option has been deprecated and will be removed in version 4.0 dclocal_read_repair_chance table option has been deprecated and will be removed in version 4.0 Warnings : dclocal_read_repair_chance table option has been deprecated and will be removed in version 4.0 dclocal_read_repair_chance table option has been deprecated and will be removed in version 4.0 INFO: the schema has been restored starting apigee-cassandra-default-0 in default starting apigee-cassandra-default-1 in default starting apigee-cassandra-default-2 in default 84 95 106 waiting on waiting nodes $pid to finish 84 Activated service account credentials for: [apigee-cassandra-backup-svc@gce-myusername.iam.gserviceaccount.com] Activated service account credentials for: [apigee-cassandra-backup-svc@gce-myusername.iam.gserviceaccount.com] Activated service account credentials for: [apigee-cassandra-backup-svc@gce-myusername.iam.gserviceaccount.com] INFO: restore downloaded tarball and extracted the file from gs://gce-myusername-apigee-cassandra-backup/apigeecluster/dc-1 INFO: restore downloaded tarball and extracted the file from gs://gce-myusername-apigee-cassandra-backup/apigeecluster/dc-1 INFO: restore downloaded tarball and extracted the file from gs://gce-myusername-apigee-cassandra-backup/apigeecluster/dc-1 INFO 12:02:28 Configuration location: file:/etc/cassandra/cassandra.yaml …... INFO 12:02:41 [Stream #e013ee80-5863-11e9-8458-353e9e3cb7f9] All sessions completed Summary statistics: Connections per host : 3 Total files transferred : 2 Total bytes transferred : 0.378KiB Total duration : 5048 ms Average transfer rate : 0.074KiB/s Peak transfer rate : 0.075KiB/s progress: [/10.32.1.155]0:1/1 100% 1:1/1 100% [/10.32.0.28]1:1/1 100% 0:1/1 100% [/10.32.3.220]0:1/1 100% 1:1/1 100% total: 100% 0.000KiB/s (avg: 0.074KiB/s) INFO 12:02:41 [Stream #e013ee80-5863-11e9-8458-353e9e3cb7f9] All sessions completed progress: [/10.32.1.155]0:1/1 100% 1:1/1 100% [/10.32.0.28]1:1/1 100% 0:1/1 100% [/10.32.3.220]0:1/1 100% 1:1/1 100% total: 100% 0.000KiB/s (avg: 0.074KiB/s) INFO 12:02:41 [Stream #e013ee80-5863-11e9-8458-353e9e3cb7f9] All sessions completed INFO 12:02:41 [Stream #e013ee80-5863-11e9-8458-353e9e3cb7f9] All sessions completed INFO: ./apigee/data/cassandra/data/ks1/user-9fbae960571411e99652c7b15b2db6cc restored successfully INFO: Restore 20190405011309 completed INFO: ./apigee/data/cassandra/data/ks1/user-9fbae960571411e99652c7b15b2db6cc restored successfully INFO: Restore 20190405011309 completed waiting on waiting nodes $pid to finish 106 Restore finished
אימות של עבודת הגיבוי
אפשר גם לאמת את עבודת הגיבוי אחרי שתזמנתם את משימת ה-cron לגיבוי. אחרי שתזמנו את משימת ה-cron, אתם אמורים לראות משהו כזה:
kubectl get pods
הפלט אמור להיראות כך:
NAME READY STATUS RESTARTS AGE apigee-cassandra-default-0 1/1 Running 0 2h apigee-cassandra-default-1 1/1 Running 0 2h apigee-cassandra-default-2 1/1 Running 0 2h apigee-cassandra-backup-1554515580-pff6s 0/1 Running 0 54s
בדיקת יומני הגיבוי
משימת הגיבוי:
- המערכת יוצרת קובץ
schema.cql. - העלאה לקטגוריית האחסון.
- הפקודה משקפת את הצומת כדי לגבות את הנתונים ומעלה אותם בו-זמנית.
- הפונקציה ממתינה עד שכל הנתונים יועלו.
kubectl logs -f apigee-cassandra-backup-1554515580-pff6s
הפלט אמור להיראות כך:
myusername-macbookpro:cassandra-backup-utility myusername$ kubectl logs -f apigee-cassandra-backup-1554577680-f9sc4 starting apigee-cassandra-default-0 in default starting apigee-cassandra-default-1 in default starting apigee-cassandra-default-2 in default 35 46 57 waiting on process 35 Activated service account credentials for: [apigee-cassandra-backup-svc@gce-myusername.iam.gserviceaccount.com] Activated service account credentials for: [apigee-cassandra-backup-svc@gce-myusername.iam.gserviceaccount.com] Activated service account credentials for: [apigee-cassandra-backup-svc@gce-myusername.iam.gserviceaccount.com] Requested creating snapshot(s) for [all keyspaces] with snapshot name [20190406190808] and options {skipFlush=false} Snapshot directory: 20190406190808 INFO: backup created cassandra snapshot 20190406190808 tar: Removing leading `/' from member names /apigee/data/cassandra/data/ks1/mytest3-37bc2df0587811e98e8d875b0ed64754/snapshots/ /apigee/data/cassandra/data/ks1/mytest3-37bc2df0587811e98e8d875b0ed64754/snapshots/20190406190808/ /apigee/data/cassandra/data/ks1/mytest3-37bc2df0587811e98e8d875b0ed64754/snapshots/20190406190808/mc-1-big-Data.db Requested creating snapshot(s) for [all keyspaces] with snapshot name [20190406190808] and options {skipFlush=false} Requested creating snapshot(s) for [all keyspaces] with snapshot name [20190406190808] and options {skipFlush=false} Snapshot directory: 20190406190808 INFO: backup created cassandra snapshot 20190406190808 tar: Removing leading `/' from member names /apigee/data/cassandra/data/system/hints-2666e20573ef38b390fefecf96e8f0c7/snapshots/ /apigee/data/cassandra/data/system/hints-2666e20573ef38b390fefecf96e8f0c7/snapshots/20190406190808/ /apigee/data/cassandra/data/system/hints-2666e20573ef38b390fefecf96e8f0c7/snapshots/20190406190808/manifest.json /apigee/data/cassandra/data/system/prepared_statements-18a9c2576a0c3841ba718cd529849fef/snapshots/ /apigee/data/cassandra/data/system/prepared_statements-18a9c2576a0c3841ba718cd529849fef/snapshots/20190406190808/ /apigee/data/cassandra/data/system/prepared_statements-18a9c2576a0c3841ba718cd529849fef/snapshots/20190406190808/manifest.json /apigee/data/cassandra/data/system/range_xfers-55d764384e553f8b9f6e676d4af3976d/snapshots/ /apigee/data/cassandra/data/system/range_xfers-55d764384e553f8b9f6e676d4af3976d/snapshots/20190406190808/ /apigee/data/cassandra/data/system/range_xfers-55d764384e553f8b9f6e676d4af3976d/snapshots/20190406190808/manifest.json /apigee/data/cassandra/data/system/peer_events-59dfeaea8db2334191ef109974d81484/snapshots/ /apigee/data/cassandra/data/system/peer_events-59dfeaea8db2334191ef109974d81484/snapshots/20190406190808/ /apigee/data/cassandra/data/system/peer_events-59dfeaea8db2334191ef109974d81484/snapshots/20190406190808/manifest.json /apigee/data/cassandra/data/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/snapshots/ /apigee/data/cassandra/data/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/snapshots/20190406190808/ /apigee/data/cassandra/data/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/snapshots/20190406190808/manifest.json …… /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/ /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/ /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-3-big-Filter.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-2-big-CompressionInfo.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-2-big-Index.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-3-big-Statistics.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-2-big-Data.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-1-big-Index.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-1-big-Statistics.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-2-big-TOC.txt /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-2-big-Statistics.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-1-big-Summary.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-1-big-Filter.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-2-big-Summary.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-3-big-Index.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/manifest.json /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-2-big-Filter.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-2-big-Digest.crc32 /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-3-big-Summary.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-3-big-Data.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-1-big-TOC.txt /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/schema.cql /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-3-big-CompressionInfo.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-1-big-Digest.crc32 /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-3-big-TOC.txt /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-1-big-Data.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-3-big-Digest.crc32 /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-1-big-CompressionInfo.db …… /tmp/tokens.txt / [1 files][ 0.0 B/ 0.0 B] Operation completed over 1 objects. / [1 files][ 0.0 B/ 0.0 B] Operation completed over 1 objects. INFO: backup created tarball and transferred the file to gs://gce-myusername-apigee-cassandra-backup/apigeecluster/dc-1 INFO: removing cassandra snapshot INFO: backup created tarball and transferred the file to gs://gce-myusername-apigee-cassandra-backup/apigeecluster/dc-1 INFO: removing cassandra snapshot Requested clearing snapshot(s) for [all keyspaces] INFO: Backup 20190406190808 completed waiting on process 46 Requested clearing snapshot(s) for [all keyspaces] INFO: Backup 20190406190808 completed Requested clearing snapshot(s) for [all keyspaces] waiting on process 57 INFO: Backup 20190406190808 completed waiting result to get schema from 10.32.0.28 INFO: /tmp/schema.cql has been generated Activated service account credentials for: [apigee-cassandra-backup-svc@gce-myusername.iam.gserviceaccount.com] tar: removing leading '/' from member names tmp/schema.cql Copying from <TDIN>... / [1 files][ 0.0 B/ 0.0 B] Operation completed over 1 objects. INFO: backup created tarball and transferred the file to gs://gce-myusername-apigee-cassandra-backup/apigeecluster/dc-1 finished uploading schema.cql