הדף הזה כולל סקריפטים שעוזרים לנפות באגים ולהשתמש ב-PostgreSQL.
העברת פעולות UPDATE ו-DELETE בטבלאות ללא מפתח ראשי
בטבלאות שאין בהן מפתחות ראשיים, בהעברות רגילות, Database Migration Service תומך בהעברה של תמונת המצב הראשונית ובהצהרות INSERT במהלך שלב סימון הנתונים שהשתנו (CDC). עם זאת, הצהרות UPDATE ו-DELETE לא משוכפלות באופן אוטומטי לטבלאות ללא מפתח ראשי בהעברות רגילות (העברות בהתחלה מהירה תומכות בשכפול של פעולות UPDATE ו-DELETE כשמגדירים את REPLICA IDENTITY).
כדי לזהות ולסנכרן באופן ידני פעולות UPDATE ו-DELETE חסרות בהעברות רגילות, צריך לבצע את ההליכים שמפורטים בקטעים הבאים.
זיהוי נתונים חסרים בין המקור לבין אשכול היעד של AlloyDB ל-PostgreSQL
- מזהים אילו טבלאות במסד הנתונים של המקור לא כוללות מפתחות ראשיים:
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: מספר השורות שנמחקו
-
- שומרים את הנתונים הסטטיסטיים הבסיסיים האלה בטבלה או בקובץ.
- אחרי שהגדרת ההעברה הושלמה ולפני שמקדמים את משימת ההעברה, מריצים שוב את השאילתה.
- משווים בין הנתונים הסטטיסטיים הראשוניים לנתונים הסטטיסטיים העדכניים. אם הערך של
n_tup_updאוn_tup_delהשתנה במהלך ההעברה, בוצעו עדכונים או מחיקות במקור שלא תועדו על ידי CDC.
העברה ידנית של נתונים מאשכול המקור לאשכול היעד של AlloyDB ל-PostgreSQL
אם אתם מזהים פערים בטבלאות בלי מפתחות ראשיים, אתם יכולים לסנכרן את הנתונים באחת מהדרכים הבאות:
- אפשרות 1: משווים באופן ידני בין הנתונים במסד הנתונים של המקור לבין הנתונים באשכול היעד של AlloyDB ל-PostgreSQL באמצעות שאילתות של סיכום ביקורת (checksum) או סקריפטים של דלתא, ומריצים עדכוני SQL מתאימים לרשומות שונות.
- אפשרות 2: מריצים את
pg_dumpואתpg_restoreספציפית לטבלאות בלי מפתחות ראשיים במהלך המעבר החד למערכת אחרת (cutover) לתחזוקת האפליקציה. - אפשרות 3: משתמשים בפקודה
COPYשל PostgreSQL כדי לייצא ולייבא נתוני טבלה. מידע נוסף זמין במסמכי התיעוד של PostgreSQL.