Mengaktifkan pemantauan penundaan replikasi untuk versi PostgreSQL sebelum 9.6

Halaman ini menjelaskan cara mengaktifkan pemantauan penundaan replikasi saat Anda bermigrasi dari instance sumber yang menjalankan PostgreSQL versi sebelum 9.6. Untuk mengetahui langkah-langkah konfigurasi database sumber yang lengkap, lihat Mengonfigurasi database sumber.

Untuk instance sumber yang menjalankan PostgreSQL versi sebelum 9.6, metrik penundaan replikasi tidak tersedia secara default. Anda dapat menggunakan pendekatan berikut jika ingin memantau penundaan replikasi untuk sumber tersebut.

Membuat fungsi pendefinisi keamanan

Opsi yang direkomendasikan untuk melacak penundaan replikasi bagi sumber yang menjalankan PostgreSQL versi sebelum 9.6 adalah membuat fungsi penentu keamanan yang memungkinkan Database Migration Service mengkueri penundaan replikasi. Ikuti langkah-langkah berikut:

  1. Tentukan fungsi berikut menggunakan akun superuser:
    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. Berikan izin eksekusi kepada pengguna migrasi:
    REVOKE EXECUTE ON FUNCTION pg_stat_replication_user() FROM public;
    GRANT EXECUTE ON FUNCTION pg_stat_replication_user() TO <USER>;

Untuk instance yang dikelola sendiri: gunakan hak istimewa SUPERUSER

Untuk instance yang dikelola sendiri, Anda dapat memberikan hak istimewa SUPERUSER langsung ke USER migrasi khusus.

Memantau penundaan replikasi secara manual

Anda juga dapat memantau penundaan replikasi secara manual menggunakan kueri berikut:

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%';

Langkah berikutnya