סקירה כללית
לפני שבוחרים להעביר את מסדי הנתונים ל-Cloud SQL, חשוב לקחת בחשבון את המגבלות הידועות של תרחיש ההעברה הזה.
המגבלות הידועות על שימוש במסד נתונים של PostgreSQL כמקור כוללות:
התוסף
pglogicalלא תומך בשכפול של עמודות שנוצרו ב-PostgreSQL 12 ואילך.שינויים במבני טבלאות (DDL) לא משוכפלים באמצעות פקודות DDL רגילות, אלא רק באמצעות פקודות שמופעלות באמצעות התוסף
pglogicalשמשמש לשכפול. זה כולל שינויים בסוגיenum.לדוגמה,
pglogicalמספק פונקציהpglogical.replicate_ddl_commandשמאפשרת להריץ DDL גם במסד הנתונים של המקור וגם בעותק המשוכפל בנקודה עקבית. המשתמש שמריץ את הפקודה הזו במקור חייב להיות קיים כבר בעותק.כדי לשכפל נתונים לטבלאות חדשות, צריך להשתמש בפקודה
pglogical.replication_set_add_tableכדי להוסיף את הטבלאות החדשות לקבוצות שכפול קיימות.מידע נוסף על שכפול DDL בזמן שההעברה מתבצעת זמין בקטע בנושא דיוק ההעברה.
בטבלאות שאין להן מפתחות ראשיים, Database Migration Service תומך בהעברה של התמונה הראשונית ושל הצהרות
INSERTבמהלך השלב של סימון נתונים שהשתנו (CDC). מומלץ להעביר את הדוחותUPDATEו-DELETEבאופן ידני.Database Migration Service לא מעביר נתונים מתצוגות חומריות, אלא רק את סכימת התצוגה. כדי לאכלס את התצוגות, מריצים את הפקודה הבאה:
REFRESH MATERIALIZED VIEW view_name.הסטטוסים של
SEQUENCE(לדוגמה,last_value) ביעד החדש של Cloud SQL עשויים להיות שונים מהסטטוסים שלSEQUENCEבמקור.אי אפשר לשכפל את הטבלאות
UNLOGGEDו-TEMPORARY.סוג הנתונים Large Object לא נתמך. פרטים נוספים זמינים בקטע בנושא דיוק ההעברה.
אפשר להעביר רק תוספים ושפות פרוצדורליות ש-Cloud SQL תומך בהם עבור PostgreSQL. Database Migration Service לא מעביר תוספים שלא נתמכים על ידי Cloud SQL. הנוכחות של התוספים האלה לא חוסמת את ההעברה, אבל כדי להבטיח תהליך העברה חלק, צריך לוודא שהאובייקטים או האפליקציות לא מפנים לתוספים לא נתמכים. מומלץ להסיר את התוספים וההפניות האלה ממסד הנתונים של המקור לפני שממשיכים.
התוסף
pg_cron(או הגדרותcronשמשויכות לתוסף) לא מועבר על ידי Database Migration Service, אבל הוא נתמך ביעדים של Cloud SQL ל-PostgreSQL. אם אתם משתמשים בתוסףpg_cronבמסדי הנתונים של המקור, תוכלו להתקין אותו מחדש במופע היעד אחרי שההעברה תושלם.
Database Migration Service לא תומך בהעברה מרפליקות לקריאה שנמצאות במצב שחזור (recovery).
Database Migration Service לא תומך במקורות Amazon RDS שבהם מוחל חבילת ההרחבות של AWS SCT.
- אי אפשר להעביר פונקציות שהוגדרו על ידי המשתמש ונכתבו ב-C, למעט פונקציות שמותקנות במסד הנתונים של PostgreSQL כשמתקינים תוספים שנתמכים על ידי Cloud SQL.
אם קיימות הרחבות ושפות פרוצדורליות אחרות במסד הנתונים של המקור, או אם הגרסאות שלהן לא נתמכות, אז כשבודקים או מתחילים את משימת ההעברה, היא תיכשל.
מסדי נתונים שנוספים אחרי שמשימת ההעברה מתחילה לא מועברים.
- כשמבצעים העברה באמצעות Database Migration Service, אי אפשר לבחור טבלאות או סכימות ספציפיות.
Database Migration Service מעביר את כל הטבלאות והסכימות, למעט אלה:
- סכימת המידע (
information_schema). - כל הטבלאות שמתחילות ב-
pg, לדוגמה,pg_catalog. לרשימה המלאה של קטלוגים של PostgreSQL שמתחילים ב-pg, אפשר לעיין בקטלוגים של מערכת PostgreSQL במסמכי התיעוד של PostgreSQL. - מידע על משתמשים ותפקידי משתמשים לא מועבר.
- סכימת המידע (
אם מסדי נתונים מוצפנים דורשים מפתחי הצפנה בניהול הלקוח כדי לפענח את מסדי הנתונים, ול-Database Migration Service אין גישה למפתחות, אי אפשר להעביר את מסדי הנתונים.
עם זאת, אם נתוני הלקוחות מוצפנים על ידי התוסף
pgcrypto, אפשר להעביר את הנתונים באמצעות Database Migration Service (כי Cloud SQL תומך בתוסף).Database Migration Service תומך גם בהעברת נתונים ממסדי נתונים מוצפנים של Amazon Aurora או Amazon RDS, כי מסדי הנתונים האלה מטפלים בפענוח באופן שקוף בשירותים שלהם. מידע נוסף זמין במאמרים בנושא הצפנת משאבי Amazon Aurora והצפנת משאבי Amazon RDS.
מסד הנתונים של Cloud SQL ביעד הוא מסד נתונים שאפשר לכתוב בו במהלך ההעברה, כדי לאפשר החלה של שינויים ב-DDL אם יש צורך בכך. חשוב לא לבצע שינויים בהגדרות של מסד הנתונים או במבני הטבלאות, כי שינויים כאלה עלולים לשבש את תהליך ההעברה או לפגוע בשלמות הנתונים.
ההתנהגות של הטריגרים תלויה באופן שבו הם הוגדרו. ההתנהגות שמוגדרת כברירת מחדל היא שהטריגרים לא יופעלו, אבל אם הם הוגדרו באמצעות ההצהרה
ALTER EVENT TRIGGERאוALTER TABLEומצב הטריגר מוגדר כ-replica או כ-always, הם יופעלו ברפליקה במהלך השכפול.פונקציות עם מגדיר אבטחה ייווצרו על ידי
cloudsqlexternalsyncבעותק משוכפל של Cloud SQL. כשמשתמשים מריצים אותו, הוא מורץ עם ההרשאות שלcloudsqlexternalsyncשיש לו תפקידיםcloudsqlsuperuserו-cloudsqlreplica. עדיף להגביל את השימוש בפונקציית מגדיר האבטחה רק לחלק מהמשתמשים. כדי לעשות זאת, המשתמש צריך לבטל את הרשאות הגישה הציבוריות שמוגדרות כברירת מחדל, ואז להעניק הרשאת הפעלה באופן סלקטיבי.Cloud SQL לא תומך במרחבי טבלאות בהתאמה אישית. כל הנתונים במרחבי הטבלאות המותאמים אישית מועברים למרחב הטבלאות
pg_defaultבמופע היעד של Cloud SQL.שיטת הקישוריות של ממשקי Private Service Connect נתמכת רק להעברה למכונות יעד קיימות. אם רוצים להשתמש בקישוריות של כתובות IP פרטיות ולבצע העברה למופע יעד חדש, צריך להשתמש בקישור בין רשתות VPC שכנות (peering).
מגבלות בהעברות למופעי יעד קיימים
- מופע היעד הקיים יכול להכיל רק מסדי נתונים של מערכת ברירת המחדל, שמוגדרים באופן אוטומטי כשיוצרים את מופע היעד.
העברה למופעים קיימים של יעד שמכילים נתוני משתמשים (כמו טבלאות בסכימות של המערכת או מסדי נתונים) לא נתמכת.
אם נתקלתם בבעיות בגלל נתונים נוספים במופע היעד הקיים, צריך לנקות את מסדי הנתונים במופע היעד ולנסות שוב להפעיל את משימת ההעברה. אפשר לעיין במאמר בנושא ניקוי נתונים נוספים ממופע היעד הקיים.
- אפשר להגדיר רק משימת העברה אחת לכל מופע יעד.
- אפשר להעביר רק למכונות עצמאיות של Cloud SQL. אין תמיכה בהעברה אל רפליקות של שרתים חיצוניים.
- אחרי שמקדמים מופע, צריך להפעיל שחזור מערכת מנקודה מסוימת בזמן (PITR).
- אם במופע שלכם יש הגדרות גיבוי בהתאמה אישית (לדוגמה, מיקום גיבוי בהתאמה אישית), תצטרכו להתאים אישית מחדש את הגדרות הגיבוי אחרי שתשדרגו את המופע. במהלך תהליך הקידום, Cloud SQL מאפס את הגדרות הגיבוי לערכי ברירת המחדל שלהן.
- למשתמשי Terraform: Database Migration Service משנה את הגדרות הגיבוי והשחזור של מופע היעד. יכול להיות שההגדרות של מופע היעד יהיו שונות מההגדרות של Terraform שבהן השתמשתם להקצאת המשאבים. אם נתקלתם בבעיה הזו, כדאי לפעול לפי ההנחיות שבמאמר אבחון בעיות.
מכסות
- יכולים להיות עד 2,000 פרופילים של חיבורים ו-1,000 משימות העברה בכל זמן נתון. כדי לפנות מקום לעוד משימות העברה (כולל משימות שהושלמו) ופרופילים של חיבורים, אפשר למחוק אותם.
- מופע היעד הקיים יכול להכיל רק מסדי נתונים של מערכת ברירת המחדל, שמוגדרים באופן אוטומטי כשיוצרים את מופע היעד.
העברה למופעים קיימים של יעד שמכילים נתוני משתמשים (כמו טבלאות בסכימות של המערכת או מסדי נתונים) לא נתמכת.