בדף הזה מוסבר איך לייצא ולייבא נתונים למכונות 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=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 הוא מספר הליבות במכונה המקורית.