הפעלת מעקב אחרי עיכוב ברפליקציה בגרסאות PostgreSQL שקודמות ל-9.6

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

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

יצירת פונקציה להגדרת אבטחה

האפשרות המומלצת למעקב אחרי עיכוב ברפליקציה במקורות שפועלים בגרסאות PostgreSQL שקודמות ל-9.6 היא ליצור פונקציה של מגדיר אבטחה, שמאפשרת ל-Database Migration Service לשלוח שאילתות לגבי נתונים סטטיסטיים של עיכוב ברפליקציה. איך לעשות את זה?

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

המאמרים הבאים