בדף הזה מוסבר איך להפעיל מעקב אחרי עיכובים ברפליקציה כשמעבירים ממכונת מקור שפועלת בגרסאות PostgreSQL שקודמות ל-9.6 אל AlloyDB ל-PostgreSQL. הוראות מלאות להגדרת מסד הנתונים של המקור מופיעות במאמר הגדרת מסד הנתונים של המקור.
במכונות מקור שפועלות עם גרסאות PostgreSQL שקודמות ל-9.6, מדד עיכוב הרפליקציה לא זמין כברירת מחדל, כי משתמשים שהם לא משתמשי-על לא יכולים לגשת לנתונים הסטטיסטיים של הרפליקציה בתצוגה pg_stat_replication. אם אתם רוצים לעקוב אחרי עיכובים ברפליקציה של מקורות כאלה, אתם יכולים להשתמש בגישות הבאות.
יצירת פונקציה להגדרת אבטחה
האפשרות המומלצת למעקב אחרי עיכוב ברפליקציה במקורות שפועלים בגרסאות PostgreSQL שקודמות ל-9.6 היא ליצור פונקציה של מגדיר אבטחה, שמאפשרת ל-Database Migration Service לשלוח שאילתות לגבי נתונים סטטיסטיים של עיכוב ברפליקציה. איך לעשות את זה?
- מתחברים למסד הנתונים של המקור באמצעות חשבון משתמש-על ומגדירים את הפונקציה
pg_stat_replication_user():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; $$;
- מבטלים את זכויות ההפעלה הציבוריות של הפונקציה ונותנים הרשאות הפעלה רק לחשבון המשתמש הייעודי להעברה:
REVOKE EXECUTE ON FUNCTION pg_stat_replication_user() FROM public; GRANT EXECUTE ON FUNCTION pg_stat_replication_user() TO "MIGRATION_USER_ACCOUNT_NAME";
במכונות באירוח עצמי: משתמשים בהרשאות של משתמש-על
במכונות PostgreSQL באירוח עצמי, אתם יכולים להעניק את ההרשאה SUPERUSER ישירות לחשבון המשתמש הייעודי להעברה:
ALTER USER MIGRATION_USER_ACCOUNT_NAME WITH SUPERUSER;
מעקב ידני אחרי העיכוב ברפליקציה
אפשר גם לעקוב באופן ידני אחרי העיכוב ברפליקציה במכונה המקורית באמצעות השאילתה הבאה:
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;
המאמרים הבאים
במאמר תחילת העבודה עם העברות ל-AlloyDB ל-PostgreSQL מפורטים השלבים להעברת נתונים.
כדי לתכנן את הקישוריות לרשת בין מכונות המקור והיעד, קראו את המאמר שיקולים בנושא רשתות.