ייצוא וייבוא באמצעות pg_dump,‏ pg_dumpall ו-pg_restore

בדף הזה מוסבר איך לייצא ולייבא נתונים למכונות Cloud SQL באמצעות pg_dump,‏ pg_dumpall ו-pg_restore.

לפני שמתחילים

פעולות הייצוא משתמשות במשאבים של מסד הנתונים, אבל הן לא מפריעות לפעולות הרגילות של מסד הנתונים, אלא אם המכונה לא הוקצתה כראוי.

למידע נוסף, קראו את השיטות המומלצות לייבוא ולייצוא של נתונים.

אחרי שמסיימים את פעולת הייבוא, בודקים את התוצאות.

מידע נוסף על כלי השירות pg_dump,‏ pg_dumpall ו-pg_restore.

ייצוא נתונים מ-Cloud SQL ל-PostgreSQL

אתם יכולים להשתמש ב-Cloud SQL כדי לייצא ממסוף Cloud de Confiance , מ-gcloud CLI או מה-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, וצריך לייבא אותו באמצעות פקודת הייבוא במסוף Cloud de Confiance או באמצעות הלקוח psql.

  • --no-acl

    הדגל הזה נדרש אם ה-dump מכיל הצהרות להענקה או לביטול של חברות בתפקיד SUPERUSER.

  • --clean

    הדגל האופציונלי הזה מאפשר לכלול את הצהרת ה-SQL‏ DROP <object> שנדרשת כדי להסיר (לנקות) אובייקטים של מסד נתונים לפני שמייבאים אותם.

  • --if-exists

    הדגל האופציונלי הזה מאפשר לכלול את הצהרת ה-SQL‏ IF EXISTS בכל הצהרת DROP שנוצרת על ידי הדגל clean.

בנוסף, צריך להסיר את כל הפריטים הבאים:

  • הצהרות שקשורות לתוספים, אם Cloud SQL לא תומך בתוסף הזה. רשימת התוספים הנתמכים מופיעה במאמר תוספים של PostgreSQL.
  • הצהרות CREATE EXTENSION או DROP EXTENSION שמפנות ל-plpgsql. התוסף הזה מותקן מראש במכונות של Cloud SQL ל-Postgres.
  • COMMENT ON EXTENSION דוחות.

מוודאים שקידוד ברירת המחדל, שנקבע בהגדרות של מסד הנתונים, מתאים לנתונים שלכם. במקרה הצורך, אפשר לשנות את ברירת המחדל באמצעות הדגל --encoding.

ייצוא נתונים בפורמט custom מ-Cloud SQL ל-PostgreSQL

כדי להשתמש בפורמט בהתאמה אישית, מריצים את הפקודה 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=cloudsqladmin
  • exclude-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

הביצועים של

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