Module: PgHero::Methods::Replication

Included in:
Database
Defined in:
lib/pghero/methods/replication.rb

Instance Method Summary collapse

Instance Method Details

#replica?Boolean

Returns:

  • (Boolean)


4
5
6
7
8
9
# File 'lib/pghero/methods/replication.rb', line 4

def replica?
  unless defined?(@replica)
    @replica = select_one("SELECT pg_is_in_recovery()")
  end
  @replica
end

#replicating?Boolean

Returns:

  • (Boolean)


37
38
39
40
41
# File 'lib/pghero/methods/replication.rb', line 37

def replicating?
  with_feature_support(:replicating?, false) do
    select_all("SELECT state FROM pg_stat_replication").any?
  end
end

#replication_lagObject



12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/pghero/methods/replication.rb', line 12

def replication_lag
  with_feature_support(:replication_lag) do
    select_one <<~SQL
      SELECT
        CASE
          WHEN NOT pg_is_in_recovery() OR pg_last_wal_receive_lsn() = pg_last_wal_replay_lsn() THEN 0
          ELSE EXTRACT (EPOCH FROM NOW() - pg_last_xact_replay_timestamp())
        END
      AS replication_lag
    SQL
  end
end

#replication_slotsObject



25
26
27
28
29
30
31
32
33
34
35
# File 'lib/pghero/methods/replication.rb', line 25

def replication_slots
  with_feature_support(:replication_slots, []) do
    select_all <<~SQL
      SELECT
        slot_name,
        database,
        active
      FROM pg_replication_slots
    SQL
  end
end