הדף הזה כולל סקריפטים שעוזרים לנפות באגים ולהשתמש ב-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: משתמשים בפקודה
COPYשל PostgreSQL כדי להעביר את הנתונים. מידע נוסף זמין במסמכי התיעוד של PostgreSQL. שימו לב: בשלב הזה, המכונה הווירטואלית של הרפליקה צריכה להיות מסוגלת להתחבר למכונה הווירטואלית של המקור.