סקירה כללית
Database Migration Service תומך בהעברות רציפות ממסדי נתונים של מקור למסדי נתונים של יעד ב-AlloyDB.
מסדי הנתונים הנתמכים כמקורות ל-PostgreSQL כוללים:
- Amazon RDS 9.6.10+, 10.5+, 11.1+, 12, 13, 14, 15, 16, 17
- Amazon Aurora 10.11+, 11.6+, 12.4+, 13.3+, 14, 15, 16, 17
- PostgreSQL בניהול עצמי (במקום או במכונה וירטואלית בענן שאתם שולטים בה באופן מלא) 9.4, 9.5, 9.6, 10, 11, 12, 13, 14, 15, 16, 17
- Cloud SQL 9.6, 10, 11, 12, 13, 14, 15, 16, 17
כדי להגדיר את המקור, צריך להגדיר גם את מופע המקור וגם את מסדי הנתונים הבסיסיים של המקור.
הגדרת מופע המקור
כדי להגדיר את מופע המקור:
- מופע המקור צריך לכלול את מסד הנתונים
postgres. אם אין לכם את מסד הנתונים הזה, תצטרכו ליצור אותו. - מתקינים את חבילת
pglogicalבמופע המקור ומוודאים שהיא כלולה במשתנהshared_preload_libraries.- לפי ההוראות שבקטע התקנת חבילת
pglogicalבמופע המקור שמתאים לסביבה שלכם.
- לפי ההוראות שבקטע התקנת חבילת
הגדרת מסדי הנתונים של המקור
השירות Database Migration Service מעביר את כל מסדי הנתונים שמופיעים מתחת למופע המקור, למעט מסדי הנתונים הבאים:
- למקורות מקומיים: מסדי נתונים של תבניות
template0ו-template1 - למקורות Amazon RDS:
template0,template1וגםrdsadmin - למקורות Cloud SQL: מסדי נתונים של תבניות
template0ו-template1
מבצעים את הפעולות הבאות בכל מסד נתונים במופע המקור שלא צוין למעלה:
למקורות בגרסה 9.4 של PostgreSQL בלבד, מתקינים את התוספים הבאים
pglogicalבכל מסד נתונים במופע המקור:CREATE EXTENSION IF NOT EXISTS pglogical;CREATE EXTENSION IF NOT EXISTS pglogical_origin;
בכל הגרסאות האחרות, מתקינים רק את התוסף
pglogicalבכל מסד נתונים במופע המקור:CREATE EXTENSION IF NOT EXISTS pglogical.בטבלאות שאין להן מפתחות ראשיים, Database Migration Service תומך בהעברה של התמונה הראשונית ושל הצהרות
INSERTבמהלך שלב ה-CDC. מומלץ להעביר את הדוחותUPDATEו-DELETEבאופן ידני.לUSER שמשמש לחיבור למופע המקור (שיוגדר כמשתמש בדף פרופילים של חיבורים) צריכות להיות הרשאות מסוימות בכל אחד ממסדי הנתונים שהועברו, וגם במסד הנתונים
postgresשמוגדר כברירת מחדל. אתם יכולים ליצור משתמש חדש או להשתמש במשתמש קיים. כדי להגדיר את ההרשאות האלה, מתחברים למופע ומריצים את הפקודות הבאות:GRANT USAGE on SCHEMA SCHEMA to USERבכל הסכימות (מלבד סכימת המידע וסכימות שמתחילות ב-pg_) בכל מסד נתונים שרוצים להעביר.GRANT USAGE on SCHEMA pglogical to PUBLIC;בכל מסד נתונים שרוצים להעביר.GRANT SELECT on ALL TABLES in SCHEMA pglogical to USERבכל מסדי הנתונים כדי לקבל מידע על השכפול ממסדי הנתונים של המקור.GRANT SELECT on ALL TABLES in SCHEMA SCHEMA to USERבכל הסכימות (מלבד סכימת המידע וסכימות שמתחילות ב-pg_) בכל מסד נתונים שרוצים להעביר.GRANT SELECT on ALL SEQUENCES in SCHEMA SCHEMA to USERבכל הסכימות (מלבד סכימת המידע וסכימות שמתחילות ב-pg_) בכל מסד נתונים שרוצים להעביר.- אם המקור הוא Amazon RDS, מריצים את הפקודה הבאה:
GRANT rds_replication to USER
- אם המקור שלכם הוא לא Amazon RDS, מריצים את הפקודה הבאה:
ALTER USER USER with REPLICATIONתפקיד
התקנת חבילת pglogical במופע המקור
בקטע הזה מוסבר איך להגדיר את חבילת pglogical, כולל הגדרות לפרמטרים max_replication_slots, max_wal_senders ו-max_worker_processes.
אפשר גם לקבל את הערכים הנכונים של הפרמטרים האלה על ידי
הפעלת בדיקה של עבודת ההעברה כשיוצרים את עבודת ההעברה.
במהלך הבדיקה הזו, Database Migration Service יכול לאמת את ההגדרות ולהציע את הערכים הנכונים.
PostgreSQL מקומי או בניהול עצמי
- מתקינים את חבילת pglogical בשרת.
- מתחברים למופע ומגדירים את הפרמטרים הבאים לפי הצורך:
shared_preload_librariesחייב לכלול אתpglogical.כדי להגדיר את הפרמטר הזה, מריצים את הפקודה
ALTER SYSTEM SET shared_preload_libraries = 'pglogical,[any other libraries in your instance]';.מגדירים את
wal_levelלהיותlogical.כדי להגדיר את הפרמטר הזה, מריצים את הפקודה
ALTER SYSTEM SET wal_level = 'logical';.מגדירים את
wal_sender_timeoutלהיות0.כדי להגדיר את הפרמטר הזה, מריצים את הפקודה
ALTER SYSTEM SET wal_sender_timeout = 0;, כאשר0משבית את מנגנון הזמן הקצוב לתפוגה שמשמש לסיום חיבורי שכפול לא פעילים.max_replication_slots מגדיר את המספר המקסימלי של משבצות שכפול שמופע המקור יכול לתמוך בהן. הערך צריך להיות לפחות מספר המינויים שצפויים להתחבר, בתוספת כמה עתודות לסנכרון הטבלה.
Database Migration Service דורש משבצת אחת לכל מסד נתונים שמועבר (כלומר, כל מסדי הנתונים שמופיעים מתחת למופע המקור).
לדוגמה, אם יש 5 מסדי נתונים במופע המקור ויש 2 משימות העברה שנוצרו עבור המקור, מספר משבצות השכפול צריך להיות לפחות 5 * 2 = 10, ועוד מספר משבצות השכפול שכבר נמצאות בשימוש. אם אתם מתכננים להשתמש בהגדרות מקביליות של העברת נתונים מותאמת, חשוב להגדיל את מספר משבצות השכפול ו להריץ את בדיקת משימת ההעברה כשיוצרים את משימת ההעברה כדי לוודא שההגדרה נכונה.
כדי להגדיר את הפרמטר הזה, מריצים את הפקודה
ALTER SYSTEM SET max_replication_slots = #;, כאשר # מייצג את המספר המקסימלי של משבצות שכפול.הערך של max_wal_senders צריך להיות לפחות כמו הערך של
max_replication_slots, ועוד מספר השולחים שכבר נמצאים בשימוש במופע.לדוגמה, אם הפרמטר
כדי להגדיר את הפרמטר הזה, מריצים את הפקודהmax_replication_slotsמוגדר ל-10, ואתם כבר משתמשים ב-2 תהליכי שליחה, מספר התהליכים של WAL sender שפועלים בו-זמנית יהיה 10 + 2 = 12. אם אתם מתכננים להשתמש בהגדרות מקביליות של יצוא נתונים מותאמים, חשוב להגדיל את מספר השולחים ו להריץ את הבדיקה של משימת ההעברה כשיוצרים את משימת ההעברה כדי לוודא שההגדרה נכונה.ALTER SYSTEM SET max_wal_senders = #;, כאשר # מייצג את מספר התהליכים של WAL sender שפועלים בו-זמנית.הערך של max_worker_processes צריך להיות לפחות מספר מסדי הנתונים שיועברו באמצעות Database Migration Service (כלומר כל מסדי הנתונים שמתחת למופע המקור), ועוד מספר התהליכים של
max_worker_processesשכבר נמצאים בשימוש במופע.אם אתם מתכננים להשתמש בהגדרות מקביליות של העברת נתונים מותאמות, הקפידו להגדיל את מספר תהליכי העובד ו להריץ את הבדיקה של משימת ההעברה כשאתם יוצרים את משימת ההעברה כדי לוודא שההגדרה נכונה.
כדי להגדיר את הפרמטר הזה, מריצים את הפקודה
ALTER SYSTEM SET max_worker_processes = #;, כאשר # מייצג את מספר מסדי הנתונים שיועברו.
- כדי להחיל את שינויי ההגדרה, מפעילים מחדש את מופע המקור.
Amazon RDS PostgreSQL
- מתקינים את התוסף
pglogicalבמסד הנתונים של המקור. מידע נוסף זמין במאמר Using PostgreSQL extensions with Amazon RDS for PostgreSQL במסמכי העזרה של Amazon RDS. מגדירים את מופע המקור באמצעות קבוצות פרמטרים.
- יצירת קבוצת פרמטרים חדשה. בקבוצת הפרמטרים:
- מוודאים שהפרמטר
shared_preload_librariesכולל את הערךpglogical. - מגדירים את הפרמטר
rds.logical_replicationלערך1. הפעולה הזו תפעיל יומני WAL ברמה הלוגית. - מגדירים את הפרמטר
wal_sender_timeoutל-0. הפעולה הזו תשבית את מנגנון פסק הזמן שמשמש להפסקת חיבורי שכפול לא פעילים. מגדירים את הפרמטר max_replication_slots. הפרמטר הזה מגדיר את המספר המקסימלי של משבצות שכפול שמופע המקור יכול לתמוך בהן. הערך צריך להיות לפחות כמספר המינויים שצפויים להתחבר, בתוספת כמה מינויים נוספים לגיבוי לסנכרון הטבלה.
Database Migration Service דורש משבצת אחת לכל מסד נתונים שמועבר (כלומר, כל מסדי הנתונים שמופיעים מתחת למופע המקור).
לדוגמה, אם יש 5 מסדי נתונים במופע המקור וייווצרו 2 משימות העברה למקור, מספר משבצות השכפול צריך להיות לפחות 5 * 2 = 10, ועוד מספר משבצות השכפול שכבר נמצאות בשימוש. אם אתם מתכננים להשתמש בהגדרות מקביליות של העברת נתונים מותאמת, הקפידו להגדיל את מספר משבצות השכפול ו להריץ את בדיקת משימת ההעברה כשאתם יוצרים את משימת ההעברה כדי לוודא שההגדרה שלכם נכונה.
ערך ברירת המחדל של הפרמטר הזה הוא 10.
מגדירים את הפרמטר max_wal_senders לערך שהוא לפחות כמו
max_replication_slots, בתוספת מספר השולחים שכבר נמצאים בשימוש במופע.לדוגמה, אם הפרמטר
max_replication_slotsמוגדר ל-10, ואתם כבר משתמשים ב-2 שולחים, מספר התהליכים של WAL sender שפועלים בו-זמנית יהיה 10 + 2 = 12. אם אתם מתכננים להשתמש בהגדרות מקביליות של העברת נתונים מותאמות, הקפידו להגדיל את מספר השולחים ו להריץ את הבדיקה של משימת ההעברה כשאתם יוצרים את משימת ההעברה כדי לוודא שההגדרה נכונה.ערך ברירת המחדל של הפרמטר הזה הוא 10.
מגדירים את פרמטר המקור max_worker_processes למספר זהה לפחות למספר מסדי הנתונים שהשירות להעברת נתונים יעביר (כלומר כל מסדי הנתונים שמתחת למופע המקור), ועוד המספר
max_worker_processesשכבר נמצא בשימוש במופע. אם אתם מתכננים להשתמש בהגדרות מקביליות של יצוא נתונים מותאמים, הקפידו להגדיל את מספר תהליכי העובד ו להריץ את הבדיקה של משימת ההעברה כשאתם יוצרים את משימת ההעברה כדי לוודא שההגדרה שלכם נכונה.ערך ברירת המחדל של הפרמטר הזה הוא 8.
מצרפים את קבוצת הפרמטרים למופע. אם יוצרים מופע חדש, האפשרות הזו נמצאת בקטע Additional Configuration (הגדרה נוספת). אחרת, משנים את המופע כדי לצרף את קבוצת הפרמטרים.
כדי להחיל את שינויי ההגדרה, מפעילים מחדש את מופע המקור.
Cloud SQL ל-PostgreSQL
מפעילים שכפול לוגי ופענוח במסד הנתונים של המקור על ידי הגדרת הדגלים הבאים.
- מגדירים את הדגלים
cloudsql.logical_decodingו-cloudsql.enable_pglogicalלערךon. מגדירים את הדגל max_replication_slots. הדגל הזה מגדיר את המספר המקסימלי של משבצות שכפול שמופע המקור יכול לתמוך בהן. הערך צריך להיות לפחות מספר המינויים שצפויים להתחבר, בתוספת כמה עתודות לסנכרון הטבלה.
Database Migration Service דורש משבצת אחת לכל מסד נתונים שמועבר (כלומר, כל מסדי הנתונים שמופיעים מתחת למופע המקור).
לדוגמה, אם יש 5 מסדי נתונים במופע המקור וייווצרו 2 משימות העברה למקור, מספר משבצות השכפול צריך להיות לפחות 5 * 2 = 10, ועוד מספר משבצות השכפול שכבר נמצאות בשימוש. אם אתם מתכננים להשתמש בהגדרות מקביליות של העברת נתונים מותאמת, חשוב להגדיל את מספר משבצות השכפול ו להריץ את בדיקת משימת ההעברה כשיוצרים את משימת ההעברה כדי לוודא שההגדרה נכונה.
ערך ברירת המחדל של הדגל הזה הוא 10.
מגדירים את הדגל max_wal_senders לערך שהוא לפחות כמו
max_replication_slots, ועוד מספר השולחים שכבר נמצאים בשימוש במופע.לדוגמה, אם הדגל
max_replication_slotsמוגדר ל-10, ואתם כבר משתמשים ב-2 שולחים, מספר התהליכים של WAL sender שפועלים בו-זמנית יהיה 10 + 2 = 12. אם אתם מתכננים להשתמש בהגדרות מקביליות של יצוא נתונים מותאמים, חשוב להגדיל את מספר השולחים ו להריץ את הבדיקה של משימת ההעברה כשיוצרים את משימת ההעברה כדי לוודא שההגדרה נכונה.ערך ברירת המחדל של הדגל הזה הוא 10.
מגדירים את דגל המקור max_worker_processes למספר שהוא לפחות מספר מסדי הנתונים שיועברו באמצעות שירות העברת הנתונים (כלומר כל מסדי הנתונים שמתחת למופע המקור), ועוד המספר
max_worker_processesשכבר בשימוש במופע. אם אתם מתכננים להשתמש בהגדרות מקביליות של יצוא נתונים מותאם, צריך להביא בחשבון שני תהליכי עובד נוספים לכל חיבור (עד 20 עובדים לכל היותר).ערך ברירת המחדל של הדגל הזה הוא 8.
- מפעילים מחדש את מופע המקור כדי שהשינויים בהגדרות שביצעתם בדגלים ייכנסו לתוקף.
הפעלת מעקב אחר עיכוב בשכפול ב-PostgreSQL בגרסה נמוכה מ-9.6
אם אתם מעבירים נתונים מגרסת PostgreSQL קודמת לגרסה 9.6, מדד השהיית השכפול לא זמין כברירת מחדל. יש שלוש חלופות שיאפשרו לכם לעקוב אחרי המדד הזה כדי להבטיח זמן השבתה מינימלי כשמקדמים את מסד הנתונים:
אפשרות 1: מאפשרים ל-Database Migration Service לעקוב אחרי השהיית השכפול על ידי מתן גישה לשאילתה ספציפית. משתמשים עם הרשאה
SUPERUSERיכולים לבצע את הפעולות הבאות:מגדירים את הפונקציה הבאה כדי לאפשר ל-Database Migration Service לבצע שאילתה לגבי העיכוב בשכפול.
CREATE OR REPLACE FUNCTION pg_stat_replication_user() RETURNS TABLE ( pid integer , usesysid oid , username name , application_name text , client_addr inet , client_hostname text , client_port integer , backend_start timestamp with time zone , backend_xmin xid , state text , sent_location pg_lsn , write_location pg_lsn , flush_location pg_lsn , replay_location pg_lsn , sync_priority integer , sync_state text ) LANGUAGE SQL SECURITY DEFINER AS $$ SELECT * FROM pg_catalog.pg_stat_replication; $$;כדי להעניק את ההרשאה
EXECUTEל-USER, מריצים את הפקודות הבאות:REVOKE EXECUTE ON FUNCTION pg_stat_replication_user() FROM public;GRANT EXECUTE ON FUNCTION pg_stat_replication_user() to {replication_user};
אפשרות 2: מעניקים את ההרשאה
SUPERUSERישירות למשתמש USER שמשמש לחיבור למופע המקור. כך שירות העברת הנתונים יוכל לקרוא ישירות את עיכוב השכפול.אפשרות 3: מעקב אחרי עיכוב השכפול בנפרד באמצעות השאילתה הבאה:
SELECT current_timestamp, application_name, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.sent_location) AS sent_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.write_location) AS write_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.flush_location) AS flush_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.replay_location) AS replay_location_lag FROM pg_stat_replication WHERE application_name like 'cloudsql%';
אם תבחרו באפשרות הזו, מדד השהיית השכפול לא יוצג בתרשימים או בתגובות של API ב-Database Migration Service.