בדף הזה מוסבר איך לייצא ולייבא נתונים למכונות Cloud SQL באמצעות pg_dump, pg_dumpall ו-pg_restore.
לפני שמתחילים
הייצוא משתמש במשאבי מסד הנתונים, אבל הוא לא מפריע לפעולות הרגילות של מסד הנתונים, אלא אם המופע לא הוקצה מספיק.
שיטות מומלצות מפורטות במאמר שיטות מומלצות לייבוא וייצוא נתונים.
אחרי שמסיימים פעולת ייבוא, צריך לאמת את התוצאות.
מידע נוסף על כלי השירות pg_dump, pg_dumpall וpg_restore
ייצוא נתונים מ-Cloud SQL ל-PostgreSQL
אפשר להשתמש ב-Cloud SQL כדי לבצע ייצוא מ Google Cloud המסוף, מ-ה-CLI של gcloud או מה-API.
- כדי לייצא מסד נתונים יחיד של PostgreSQL, משתמשים בכלי
pg_dump. - כדי לייצא את כל מסדי הנתונים של PostgreSQL באשכול, משתמשים בכלי
pg_dumpall.
כשמשתמשים באחד מכלי השירות, צריך לוודא שמשתמשים גם באפשרויות הנדרשות כדי להבטיח שקובץ הייצוא שמתקבל יהיה תקין לייבוא חזרה ל-Cloud SQL.
ייצוא נתונים משרת PostgreSQL מקומי באמצעות pg_dump
כדי לייצא מסד נתונים שלא מנוהל על ידי Cloud SQL, לצורך ייבוא מאוחר יותר ל-Cloud SQL, משתמשים בכלי pg_dump עם הדגלים הבאים:
--no-ownerאסור לכלול בקובץ ה-dump פקודות לשינוי הבעלות.
--formatמותר להשתמש בפורמטים
customו-directoryאם קובץ ה-dump מיועד לשימוש עםpg_restore.בפורמט
plain-text, מייצאים ל-SQL dump fileבמקום זאת. הפורמט הזה לא תואם ל-pg_restore, ולכן צריך לייבא אותו באמצעות פקודת הייבוא של מסוף Google Cloud או לקוחpsql.--no-aclחובה להשתמש בדגל הזה אם הפלט של ה-dump אמור לכלול הצהרות לגבי הענקת או ביטול חברות בתפקיד
SUPERUSER.--cleanהדגל האופציונלי הזה מאפשר לכם לכלול את הצהרת ה-SQL
DROP <object>שנדרשת להסרת (ניקוי) אובייקטים של מסד נתונים לפני הייבוא שלהם.--if-existsהדגל האופציונלי הזה מאפשר לכם לכלול את הצהרת ה-SQL
IF EXISTSעם כל הצהרהDROPשנוצרת על ידי הדגלclean.
בנוסף, צריך להסיר את כל הפריטים הבאים:
- הצהרות שקשורות לתוסף, אם Cloud SQL לא תומך בתוסף הזה. רשימת התוספים הנתמכים מופיעה במאמר PostgreSQL Extensions.
-
CREATE EXTENSIONאוDROP EXTENSIONהצהרות שמפנות ל-plpgsql. התוסף הזה מותקן מראש במכונות של Cloud SQL Postgres. COMMENT ON EXTENSIONדוחות.
בודקים שקידוד ברירת המחדל, כפי שנקבע בהגדרות מסד הנתונים,
מתאים לנתונים שלכם. במקרה הצורך, אפשר להחליף את ברירת המחדל באמצעות הדגל --encoding.
ייצוא נתונים מ-Cloud SQL ל-PostgreSQL בפורמט custom
כדי להשתמש בפורמט בהתאמה אישית, מריצים את הפקודה pg_dump משורת הפקודה:
pg_dump \ -U USERNAME \ --format=custom \ --no-owner \ --no-acl \ DATABASE_NAME > DATABASE_NAME.dmp
ייצוא נתונים מכמה קבצים במקביל מ-Cloud SQL ל-PostgreSQL
אפשר להשתמש בפורמט הפלט directory רק כדי לייצא נתונים מכמה קבצים במקביל.
כדי לייצא במקביל, משתמשים בדגל -j NUM_CORES.
NUM_CORES הוא מספר ליבות המעבד במופע המקור.
ייצוא של כל מסדי הנתונים
pg_dumpall הוא כלי שמאפשר לכם לחלץ את כל מסדי הנתונים של PostgreSQL באשכול לקובץ סקריפט יחיד. בקובץ הזה יש פקודות SQL שאפשר להשתמש בהן כדי לשחזר את מסדי הנתונים.
כדי לייצא את כל מסדי הנתונים של PostgreSQL במכונה של Cloud SQL, משתמשים בכלי pg_dumpall עם הדגלים הבאים שהם חובה:
exclude-database=cloudsqladminexclude-database=template*
לכלי pg_dumpall אין גישה למסדי הנתונים cloudsqladmin או template.
כדי לייצא את כל מסדי הנתונים של PostgreSQL, מריצים את הפקודה הבאה:
pg_dumpall \ -h HOST_NAME -l DATABASE_NAME --exclude-database=cloudsqladmin \ --exclude-database=template* > pg_dumpall.sql
כדי לראות את הסיסמאות של התפקידים כשמבצעים dump של תפקידים באמצעות pg_dumpall, מגדירים את הדגל cloudsql.pg_authid_select_role לשם של תפקיד ב-PostgreSQL. אם התפקיד קיים, יש לו הרשאת קריאה בלבד (SELECT) לטבלה pg_authid. הטבלה הזו
מכילה סיסמאות של תפקידים.
ייבוא
משתמשים בכלי השירות pg_restore כדי לייבא ארכיון למסד נתונים של Cloud SQL. הפונקציה pg_restore פועלת רק עם ארכיונים שנוצרו על ידי pg_dump בפורמטים custom או directory.
מידע נוסף על
pg_restore
ייבוא מתוך קובץ dump שנוצר בפורמט custom אל Cloud SQL ל-PostgreSQL
אם קובץ ה-dump נוצר בפורמט מותאם אישית, מריצים את הפקודה הבאה:
pg_restore \ --list DATABASE_NAME.dmp | sed -E 's/(.* EXTENSION )/; \1/g' > DATABASE_NAME.toc
בשלב העיבוד שאחרי, sed מוסיף הערות לכל הצהרות התוסף בקובץ ה-SQL המוכן לשימוש.
כשמייבאים באמצעות pg_restore, מציינים את תוכן העניינים שעבר עיבוד באמצעות ארגומנט שורת הפקודה "--use-list=DATABASE_NAME.toc".
ייבוא נתונים מכמה קבצים במקביל אל Cloud SQL ל-PostgreSQL
אפשר לייבא נתונים מכמה קבצים במקביל רק לארכיונים שנוצרו באמצעות פורמטי הפלט directory ו-custom.
כדי לייבא במקביל, משתמשים בדגל -j NUM_CORES.
NUM_CORES הוא מספר ליבות המעבד במופע היעד.
ביצועי ייבוא ב-Cloud SQL ל-PostgreSQL
המאמרים הבאים
- איך בודקים את הסטטוס של פעולות ייבוא וייצוא
- שיטות מומלצות לייבוא וייצוא נתונים
- מידע נוסף על כלי השירות pg_dump של PostgreSQL
- בעיות מוכרות בייבוא ובייצוא