ניפוי באגים וכלים אחרים

הדף הזה כולל סקריפטים שעוזרים לנפות באגים ולהשתמש ב-PostgreSQL.

העברת פעולות UPDATE ו-DELETE בטבלאות ללא מפתח ראשי

בטבלאות שאין בהן מפתחות ראשיים, בהעברות רגילות, Database Migration Service תומך בהעברה של תמונת המצב הראשונית ובהצהרות INSERT במהלך שלב סימון הנתונים שהשתנו (CDC). עם זאת, הצהרות UPDATE ו-DELETE לא משוכפלות באופן אוטומטי לטבלאות ללא מפתח ראשי בהעברות רגילות (העברות בהתחלה מהירה תומכות בשכפול של פעולות UPDATE ו-DELETE כשמגדירים את REPLICA IDENTITY).

כדי לזהות ולסנכרן באופן ידני פעולות UPDATE ו-DELETE חסרות בהעברות רגילות, צריך לבצע את ההליכים שמפורטים בקטעים הבאים.

זיהוי נתונים חסרים בין המקור לבין אשכול היעד של AlloyDB ל-PostgreSQL

  1. מזהים אילו טבלאות במסד הנתונים של המקור לא כוללות מפתחות ראשיים:
    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;
  2. לפני שמתחילים את משימת ההעברה, לכל הטבלאות בלי מפתחות ראשיים, מתעדים את הנתונים הסטטיסטיים של השינויים:
    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. שומרים את הנתונים הסטטיסטיים הבסיסיים האלה בטבלה או בקובץ.
  4. אחרי שהגדרת ההעברה הושלמה ולפני שמקדמים את משימת ההעברה, מריצים שוב את השאילתה.
  5. משווים בין הנתונים הסטטיסטיים הראשוניים לנתונים הסטטיסטיים העדכניים. אם הערך של n_tup_upd או n_tup_del השתנה במהלך ההעברה, בוצעו עדכונים או מחיקות במקור שלא תועדו על ידי CDC.

העברה ידנית של נתונים מאשכול המקור לאשכול היעד של AlloyDB ל-PostgreSQL

אם אתם מזהים פערים בטבלאות בלי מפתחות ראשיים, אתם יכולים לסנכרן את הנתונים באחת מהדרכים הבאות:

  • אפשרות 1: משווים באופן ידני בין הנתונים במסד הנתונים של המקור לבין הנתונים באשכול היעד של AlloyDB ל-PostgreSQL באמצעות שאילתות של סיכום ביקורת (checksum) או סקריפטים של דלתא, ומריצים עדכוני SQL מתאימים לרשומות שונות.
  • אפשרות 2: מריצים את pg_dump ואת pg_restore ספציפית לטבלאות בלי מפתחות ראשיים במהלך המעבר החד למערכת אחרת (cutover) לתחזוקת האפליקציה.
  • אפשרות 3: משתמשים בפקודה COPY של PostgreSQL כדי לייצא ולייבא נתוני טבלה. מידע נוסף זמין במסמכי התיעוד של PostgreSQL.