pglogical, על היתרונות שלו ועל המגבלות שלו.
סקירה כללית
pglogicalהתוסף הוא כלי חזק וגמיש לשכפול לוגי שנועד ל-PostgreSQL, והוא תומך גם בזמינות גבוהה (HA) ובהתאוששות מאסון (DR).
שכפול בינארי מסורתי, שנקרא בדרך כלל שכפול פיזי, משכפל שינויים ברמת מערכת הקבצים והבלוקים, וכתוצאה מכך נוצר שיקוף פיזי במערכת היעד. למרות שהשכפול הפיזי הוא חזק ומגן על כל אשכול מסדי הנתונים, הוא חד-כיווני בלבד ודורש גישה לקובץ הנתונים של מסד הנתונים הבסיסי ולקובצי יומן הרישום מראש (WAL).
לעומת זאת, התוסף pglogical מחלץ שינויים ב-SQL ממסד נתונים של ספק ומבצע שכפול שלהם, ואז מפעיל אותם מחדש על מסד נתונים אחד או יותר של מנויים. השכפול הזה נקרא שכפול לוגי.
באמצעות התוסף pglogical, אפשר:
- שכפול נתונים בין כמה מסדי נתונים של AlloyDB Omni.
- שכפול נתונים בין AlloyDB Omni לבין Google Cloud AlloyDB.
- יצירת רפליקה של נתונים בין AlloyDB Omni לבין הפצות אחרות של PostgreSQL, כולל רבות בשירותי ענן של צד שלישי.
יתרונות
רפליקציה לוגית באמצעות התוסף pglogical מציעה את היתרונות הבאים:
שכפול סלקטיבי: מאפשר להגדיר מסננים וכללים כדי לקבוע אילו נתונים לשכפל ולאן. אתם יכולים לבחור אילו טבלאות ייכללו ואיך המערכת תטפל בטבלאות חדשות, בין אם הן ייכללו ובין אם לא. אפשר גם להוסיף מסננים לעמודות ולשורות. אפשר להוסיף
apply delayבמקרים שבהם רוצים שהמנוי ייצג נקודת זמן מסוימת מהספק.שכפול דו-כיווני ורב-ראשי: כל מסדי הנתונים של החברים פתוחים במצב קריאה/כתיבה וניתן להשתמש בהם באופן מלא. כל מסד נתונים של נקודת קצה משמש גם כספק וגם כמנוי, ומאפשר ליצור תרחישי שכפול מתקדמים ועדכוני נתונים שמתבצעים בנקודות קצה שונות.
תמיכה בספקי שירותי ענן: ספקי ענן כמו Google מבינים את הערך של התוסף
pglogicalומשלבים אותו בשירותי הענן שלהם, כמו Google Cloud SQL ל-PostgreSQL ו-AlloyDB. ספקי ענן אחרים כוללים גם את התוסףpglogicalכאפשרות, ומאפשרים הגדרות של ענן מרובה או ענן היברידי.שכפול בין גרסאות: מכיוון ש-pglogical משכפל את הצהרות ה-SQL בפועל, הוא מאפשר שכפול בין גרסאות ראשיות של PostgreSQL. במיוחד אם מסד הנתונים של ספק המקור הוא גרסה ישנה יותר ממסד הנתונים של יעד המנוי, אפשר להטמיע שכפול בין גרסאות בצורה מהימנה.
התוסף
pglogicalתומך בגרסאות קודמות רבות של PostgreSQL, כמו גרסה 9.4 ומעלה. התכונה הזו הופכת את PostgreSQL לבחירה אופטימלית לתרחישים שבהם עובדים עם מערכות מדור קודם ורוצים לשכפל נתונים לגרסאות מודרניות יותר של PostgreSQL, כמו אלה שמשמשות ב-AlloyDB Omni וב- Google Cloud AlloyDB.
לסיכום, התוסף pglogical מספק פתרון עשיר בתכונות לשכפול לוגי, עם תאימות לגרסאות ישנות יותר של PostgreSQL ולשירותים מנוהלים בענן, כולל Google Cloud SQL ל-PostgreSQL ו-AlloyDB.
מגבלות של שכפול לוגי
לכל הטכנולוגיות של שכפול לוגי, כולל אלה שמשמשות בפלטפורמות אחרות של מסדי נתונים רלציוניים, יש מגבלות מסוימות, וכל ניהול לא תקין עלול לשבש את תהליך השכפול.
כדי להטמיע את התכונה בצורה מהימנה, כדאי לשים לב לנקודות הבאות:
- הסבר על אופן הטיפול באובייקטים בהיקף מסד נתונים ובאובייקטים בהיקף אשכול שנמצאים מחוץ להיקף השכפול. התוסף
pglogicalפועל ברמת מסד הנתונים ורק על קבוצה ספציפית של טבלאות ורצפים. צריך לשכפל סוגים אחרים של אובייקטים, כמו פונקציות ופרוצדורות, באמצעות שיטה אחרת. - מומלץ שלכל טבלאות השכפול יהיה מפתח ראשי.
אפשר להשתמש בתכונה
REPLICA IDENTITYשל הטבלה כדי להודיע לתוסףpglogicalאילו עמודות מזהות באופן ייחודי את השורות. אם אפשר, כדאי להימנע מכך. טבלאות שאין להן מפתחות ראשיים, הן סטטיות ולא מתבצעות בהן פעולותUPDATEDאוDELETED, והן תומכות רק בפעולהINSERTS. בסוגים האלה של טבלאות לא צריך מפתחות ראשיים. - ניהול של טריגרים ורצפים במסדי נתונים של מנויים. כברירת מחדל, טריגרים
מוגדרים כטריגרים מסוג
ORIGINאוLOCAL, והם לא מופעלים במסד הנתונים של המנויים כששורות משוכפלות. צריך לסמן את כל הטריגרים כדי לוודא שהאפשרותREPLICAמוגדרת לכל טריגר, כך שהטריגר לא יופעל בצד של המנוי אלא אם יש בכך צורך. - התמודדות עם פתרון סכסוכים באופן ידני או אוטומטי באמצעות
who winsכללים. - שכפול של פקודות Data Definition Language (DDL) באמצעות הטמעה ידנית בכל נקודות הקצה, או שכפול אוטומטי של DDL למסדי נתונים של מנויים באמצעות פונקציית ה-API המתאימה
pglogicalבמסד הנתונים של הספק. - לוודא שרצפים וטבלאות חדשים שנוצרו מתווספים באופן ידני או אוטומטי לקבוצות שכפול במסדי נתונים ראשיים.
- לוודא שקיימת רשת TCP חזקה, יעילה, אמינה ומאובטחת בין כל נקודות הקצה בטופולוגיית השכפול.
ההגבלות הנוספות על התוסף pglogical כוללות את ההגבלות הבאות:
- נדרשות הרשאות סופר-משתמש לגרסה 2.4.3 של
pglogical. - אפשר לשכפל את רוב הטבלאות והרצפים, אבל סוגים אחרים של אובייקטים לא משוכפלים על ידי התוסף
pglogical, וטבלאותTEMPORARYו-UNLOGGEDלא משוכפלות. - כדי לשכפל DDL, צריך להשתמש בפונקציית pglogical API. פקודות DDL מקוריות לא משוכפלות, למעט הפקודה
TRUNCATE. - הפעולה מתבצעת ברמת האובייקט לכל טבלה ולכל רצף, והיא נפרסת לכל מסד נתונים. המשמעות היא שאובייקטים מסוימים, כולל אובייקטים בהיקף האשכול כמו
usersו-roles, לא נכללים בשכפול וצריך לנהל אותם בנפרד.
המאמרים הבאים
- שכפול נתונים בין AlloyDB ל-PostgreSQL לבין AlloyDB Omni.
- שכפול נתונים בין AlloyDB Omni לבין מסדי נתונים אחרים.