為 9.6 之前的 PostgreSQL 版本啟用複製延遲監控功能

本頁面說明如何啟用複製延遲監控功能,以便從執行 9.6 以下 PostgreSQL 版本的來源執行個體,遷移至 AlloyDB for PostgreSQL。如需完整的來源資料庫設定操作說明,請參閱「 設定來源資料庫」。

如果來源執行個體執行的 PostgreSQL 版本低於 9.6,則預設不會提供複製延遲指標,因為非超級使用者無法存取 pg_stat_replication 檢視畫面中的複製統計資料。如要監控這類來源的複製延遲時間,可以採用下列方法。

建立安全性定義者函式

如要追蹤 9.6 以前 PostgreSQL 版本的來源複製延遲時間,建議您建立安全性定義函式,允許資料庫遷移服務查詢複製延遲時間統計資料。步驟如下:

  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";

自行託管執行個體:使用 SUPERUSER 權限

如果是自行託管的 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;

後續步驟