כשמייבאים ומייצאים נתונים אל AlloyDB ל-PostgreSQL, כדאי לפעול לפי השיטות המומלצות הבאות:
- אל תשתמשו בקטגוריות של Cloud Storage עם התכונה מגיש הבקשה משלם לייבוא או לייצוא.
- כשיוצרים קובץ SQL מוכן לשימוש, צריך להשתמש בדגלים הנכונים.
- כדאי לדחוס את הנתונים כדי להפחית את העלויות.
- כדי לצמצם את משך הזמן של תהליכי ייבוא וייצוא ארוכים, אפשר לעבד את הנתונים במנות.
- אחרי הייבוא, צריך לוודא שהמסד הנתונים שיובא תקין.
לא להשתמש בקטגוריות של Cloud Storage עם התכונה 'מגיש הבקשה משלם'
אי אפשר להשתמש בקטגוריה של Cloud Storage שבה מופעלת התכונה 'מגיש הבקשה משלם' לצורך ייבוא אל AlloyDB או ייצוא ממנו. AlloyDB משתמש בחשבון שירות בניהול Google, סוכן שירות, כדי לבצע ייבוא וייצוא. בדרך כלל לסוכן הזה אין את ההקשר או את ההגדרה לחיוב הפרויקט של מגיש הבקשה על גישה לנתונים, ולכן פעולות שכוללות בקשות לגישה ל-buckets עם חיוב המבקש נכשלות.
שימוש בדגלים הנכונים כשיוצרים קובץ SQL מוכן לשימוש
אם לא משתמשים בדגלים ובאפשרויות הנכונים כשמייצאים נתונים לקובץ SQL מוכן לשימוש, יכול להיות שהייבוא ייכשל. מידע על ייצוא נתונים לצורך ייבוא ל-AlloyDB זמין במאמרים ייצוא קובץ DMP וייצוא קובץ SQL.
דחיסת נתונים כדי להפחית את העלות
AlloyDB תומך בייבוא ובייצוא של קובצי .gz דחוסים מ-Cloud Storage. דחיסה יכולה לחסוך לכם הרבה מקום אחסון ב-Cloud Storage ולהפחית את עלויות האחסון, במיוחד כשמייצאים כמויות גדולות של נתונים. כשמייצאים קובץ CSV או SQL dump באמצעות AlloyDB API, צריך להשתמש בתוסף .gz בקובץ ב-URI של היעד כדי לדחוס את הנתונים. כשמייבאים קובץ עם סיומת .gz, הקובץ נפרס אוטומטית.
צמצום תהליכי ייבוא וייצוא ארוכים
בהתאם לגודל הנתונים, ייבוא ל-AlloyDB וייצוא ממנו יכולים להימשך זמן רב. אם פעולה מסוימת נמשכת יותר מדי זמן, היא עלולה לחסום פעולות אחרות.
כדי לקצר את הזמן שנדרש להשלמת כל פעולה, כדאי להשתמש באצוות קטנות יותר של נתונים. אפשר גם להשתמש בכלי pg_dump כדי לבצע ייצוא ידני מלקוח שמחובר למופע של מאגר לקריאה.
אימות מסד הנתונים המיובא
אחרי שמסיימים פעולת ייבוא, מתחברים למסד הנתונים באמצעות psql או לקוח אחר, ומריצים פקודות מתאימות כדי לוודא שהתוכן נכון, למשל פקודות לרישום טבלאות או לשאילתות של ספירת שורות.
אוטומציה של פעולות ייצוא
למרות ש-AlloyDB לא מספק שיטה מובנית לייצוא אוטומטי, אפשר ליצור כלי אוטומציה באמצעות רכיבים אחרים שלGoogle Cloud כמו Cloud Scheduler, Pub/Sub ופונקציות Cloud Run.
פתרון בעיות
בקטע הזה מפורטות הצעות לפתרון בעיות שאתם עלולים להיתקל בהן בפעולות ייבוא וייצוא.
ייבוא פעולות
| שגיאה | תיאור | תיקון מומלץ |
|---|---|---|
ERROR: permission denied for schema public |
ב-PostgreSQL מגרסה 15 ואילך, יכול להיות שהייבוא של נתונים ייכשל בגלל הרשאות סכימה אם יוצרים את מסד הנתונים של היעד מ-template0. |
כדי לפתור את הבעיה, משתמשים בפקודה הבאה כדי להעניק הרשאות בסכימה
GRANT ALL ON SCHEMA public TO my_import_user;
|
| פעולת הייבוא נמשכת יותר מדי זמן. | יותר מדי חיבורים פעילים עלולים להפריע לפעולות ייבוא. |
נסו:
|
| פעולת ייבוא נכשלת כי משתמש אחד או יותר שמצוינים בקובץ ה-dump לא קיימים. | לפני שמייבאים קובץ dump, כל המשתמשים במסד הנתונים שיש בבעלותם אובייקטים או שקיבלו הרשאות לאובייקטים במסד הנתונים שהושלך חייבים להיות קיימים במסד הנתונים של היעד. אם הם לא קיימים, פעולת הייבוא לא מצליחה ליצור מחדש את האובייקטים עם הבעלות או ההרשאות המקוריות. | לפני הייבוא, יוצרים את משתמשי מסד הנתונים הנדרשים. |
GRANT stderr: ERROR: must be member of role ROLE_NAME
|
השגיאה הזו יכולה להתרחש אם מייבאים קובץ SQL מוכן לשימוש שמכיל אובייקטים בבעלות ROLE_NAME או הרשאות שניתנו ל-ROLE_NAME, אבל משתמש מסד הנתונים שמבצע את הייבוא לא חבר ב-ROLE_NAME. |
כדי לפתור את הבעיה, צריך לוודא שהתפקיד ROLE_NAME קיים במסד הנתונים של היעד, ולהעניק למשתמש שמבצע את הייבוא חברות בתפקיד ROLE_NAME לפני הפעלת הייבוא. |
פעולות ייצוא
| שגיאה | תיאור | תיקון מומלץ |
|---|---|---|
HTTP Error 403: The service account does not have the required
permissions for the bucket. |
לחשבון השירות של AlloyDB אין את ההרשאות הנדרשות לקטגוריית היעד. | מוודאים שקטגוריית היעד ב-Cloud Storage קיימת ושלחשבון השירות של AlloyDB הוקצו התפקידים roles/storage.objectAdmin או roles/storage.objectCreator. התפקידים האלה מאפשרים לכתוב לקטגוריה. מידע נוסף זמין במאמר בנושא תפקידים בניהול זהויות והרשאות גישה (IAM) ל-Cloud Storage.
|
| ייצוא ה-CSV פעל, אבל ייצוא ה-SQL נכשל. | הייצוא של פורמטים CSV ו-SQL מתבצע באופן שונה. ייצוא בפורמט SQL כולל את סכימת מסד הנתונים והנתונים, ובדרך כלל נמשך יותר זמן. בפורמט CSV
מיוצאים רק הנתונים שמתקבלים משאילתת SELECT שאתם
מספקים. |
אם ייצוא SQL נכשל או שהוא איטי מדי, כדאי לייצא טבלאות נפרדות באמצעות CSV. |
| הייצוא נמשך יותר מדי זמן. | אם הייצוא נמשך זמן רב מדי במופע הראשי, יכול להיות שהייצוא גדול מדי. | כדאי לייצא את הנתונים בקבוצות קטנות יותר. לדוגמה,
עדיף לייצא טבלאות בנפרד מאשר לייצא מסד נתונים שלם בפעולה אחת. אפשר גם להשתמש בכלי pg_dump כדי לבצע ייצוא ידני מלקוח שמחובר למופע של מאגר לקריאה.
|
שגיאת Create Extension ביומן pg_restore או שהייבוא נכשל. |
קובץ ה-dump מכיל הפניות לתוסף PostgreSQL שלא נתמך ב-AlloyDB, או שלא מותקן באשכול. | כדי להסיר את ההפניות, עורכים את קובץ ה-dump או מתקינים את התוסף באשכול אם הוא נתמך ב-AlloyDB. |
שגיאה בשימוש ב-pg_dumpall. |
יכול להיות שיהיה צורך בהרשאות שלא זמינות ב-AlloyDB כדי להשתמש בכלי pg_dumpall עם פלאגים כמו --globals-only. |
כדי לייצא אובייקטים גלובליים כמו משתמשים ותפקידים ללא סיסמאות, משתמשים בפקודה הבאה כדי לכלול את הדגל
pg_dumpall --globals-only --no-role-passwords
|
הזמן הקצוב לתפוגה של פעולת הייצוא מסתיים או שמופיעה השגיאה
Connection reset by peer. |
אם Cloud Storage לא מקבל נתונים בפרק זמן מסוים, יכול להיות שהחיבור יתאפס. זה יכול לקרות אם השאילתות הראשוניות במסד הנתונים שנדרשות לייצוא לוקחות יותר מדי זמן להרצה. | אם זה קורה, נסו לבצע ייצוא ידני באמצעות הכלי pg_dump מלקוח שמחובר למופע של מאגר לקריאה. |
בעיות נפוצות
| שגיאה | תיאור | תיקון מומלץ |
|---|---|---|
HTTP Error 409: Operation failed because another operation was
already in progress. |
המערכת מאפשרת לבצע רק פעולת ייבוא או ייצוא אחת שמבוססת על API בכל פעם. | כדאי לנסות לשלוח את הבקשה אחרי שהפעולה הנוכחית תסתיים. |
המאמרים הבאים
- ייבוא נתונים באמצעות קובצי dump
- ייצוא נתונים באמצעות קובצי dump
- ייבוא נתונים באמצעות קובצי CSV.
- ייצוא נתונים באמצעות קובצי CSV.
- ייבוא נתונים באמצעות קובצי SQL.
- ייצוא נתונים באמצעות קובצי SQL.
- הפעלת גיבויים אוטומטיים.
- שחזור מגיבוי