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 ke AlloyDB untuk PostgreSQL. Untuk mengetahui petunjuk 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 karena non-superuser tidak dapat mengakses statistik replikasi dalam tampilan pg_stat_replication. Anda dapat menggunakan pendekatan berikut jika ingin memantau penundaan replikasi untuk sumber tersebut.

Membuat fungsi pendefinisi keamanan

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

  1. Hubungkan ke database sumber Anda menggunakan akun superuser dan tentukan fungsi 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. Cabut hak eksekusi publik dari fungsi dan berikan izin eksekusi secara eksklusif ke akun pengguna migrasi khusus Anda:
    REVOKE EXECUTE ON FUNCTION pg_stat_replication_user() FROM public;
    GRANT EXECUTE ON FUNCTION pg_stat_replication_user() TO "MIGRATION_USER_ACCOUNT_NAME";

Untuk instance yang dihosting sendiri: gunakan hak istimewa SUPERUSER

Untuk instance PostgreSQL yang dihosting sendiri, Anda dapat memberikan hak istimewa SUPERUSER langsung ke akun pengguna migrasi khusus:

ALTER USER MIGRATION_USER_ACCOUNT_NAME WITH SUPERUSER;

Memantau penundaan replikasi secara manual

Anda juga dapat memantau penundaan replikasi secara manual pada instance sumber 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;

Langkah berikutnya