סקירה כללית
הדף הזה כולל סקריפטים שעוזרים בניפוי באגים ובשימוש ב-PostgreSQL.
העברת פעולות UPDATE ו-DELETE לטבלאות ללא מפתח ראשי
בטבלאות שאין להן מפתחות ראשיים, Database Migration Service תומך בהעברה של התמונה הראשונית ושל הצהרות INSERT במהלך השלב של סימון נתונים שהשתנו (CDC).
כדי לעדכן את התהליכים החסרים UPDATE ו-DELETE, אפשר לעיין בקטעים הבאים של המסמך הזה.
זיהוי נתונים חסרים בין מכונות המקור למכונות היעד של Cloud SQL
- זיהוי הטבלאות שאין להן מפתחות ראשיים:
select tab.table_schema, tab.table_name from information_schema.tables tab left join information_schema.table_constraints tco on tab.table_schema = tco.table_schema and tab.table_name = tco.table_name and tco.constraint_type = 'PRIMARY KEY' where tab.table_type = 'BASE TABLE' and tab.table_schema not in ('pg_catalog', 'information_schema', 'pglogical') and tco.constraint_name is null order by table_schema, table_name; - לפני שמתחילים את ההעברה, בודקים אם יש עדכונים או מחיקות בכל הטבלאות שאין להן מפתחות ראשיים, באמצעות השאילתה הבאה:
איפה:SELECT schemaname, relname, n_tup_ins, n_tup_upd, n_tup_del FROM pg_stat_user_tables WHERE schemaname NOT IN ('pglogical', 'pg_catalog', 'information_schema');-
n_tup_ins: מספר השורות שהוכנסו -
n_tup_upd: מספר השורות שעודכנו (כולל שורות שעודכנו ב-HOT) -
n_tup_del: מספר השורות שנמחקו
-
- שומרים את התוצאות האלה בטבלה נפרדת או בקובץ.
- אחרי שמסיימים את הגדרת המיגרציה, מריצים שוב את השאילתה.
- משווים את התוצאות לתוצאות משלב 3.
אם יש הבדלים בערכים של n_tup_upd או n_tup_del במקור במהלך ההעברה, יכול להיות שיהיו עדכונים או מחיקות במקור.
העברה ידנית של נתונים ממכונות המקור למכונות היעד ב-Cloud SQL
אם אתם מזהים שיש כמה הבדלים בין מופע המקור לבין מופע היעד ב-Cloud SQL, אתם יכולים להעביר את הנתונים באמצעות אחת מהאפשרויות הבאות:
אפשרות 1: משווים באופן ידני את הנתונים בין המקור ליעד ב-Cloud SQL ומריצים שאילתות SQL מתאימות כדי לעדכן רק את הנתונים ששונים בין המקור לבין העותק.
אפשרות 2: מריצים את הפקודות
pg_dumpו-pg_restoreעבור הטבלאות בלי מפתחות ראשיים. מידע נוסף מופיע במאמר ייצוא נתונים משרת PostgreSQL מקומי באמצעות pg_dump.אפשרות 3: שימוש בפקודה של Postgres
COPYלהעברת הנתונים. מידע נוסף זמין במסמכי התיעוד של PostgreSQL. הערה: כדי לבצע את השלב הזה, המכונה הווירטואלית המשוכפלת צריכה להיות מסוגלת להתחבר למכונה הווירטואלית של המקור.