web-dev-qa-db-ja.com

postgresレプリケーションのステータスを確認する

誰かがpgsqlのレプリケーションステータスをチェックする手順と、レプリケーションが適切に行われていないと言う状況を提案できますか?

Pgsql 9.0およびpgsql 9.4ではストリーミングレプリケーションを使用しています

ありがとう。

15
Dino Daniel

マスターでは、pg_stat_replicationが進行中のレプリケーションに関するデータを提供します。

select client_addr, state, sent_location, write_location,
        flush_location, replay_location from pg_stat_replication;

Postgresql v10の場合:

select client_addr, state, sent_lsn, write_lsn,
    flush_lsn, replay_lsn from pg_stat_replication;
14
Reinsbrain

PostgreSQLのレプリケーションステータスを表示する

サーバー上

postgres=# select usename,application_name,client_addr,backend_start,state,sync_state from pg_stat_replication ;

usename   | application_name |  client_addr   |         backend_start         |   state   | sync_state 
------------+------------------+----------------+-------------------------------+-----------+------------
replicator | walreceiver      | 192.168.10.132 | 2018-07-06 06:12:20.786918+03 | streaming | async
(1 row)

クライアントで

postgres=# select pg_is_in_recovery();
 pg_is_in_recovery 
-------------------
 t
 (1 row)


postgres=# select pg_last_xlog_receive_location();
 pg_last_xlog_receive_location 
-------------------------------
 0/540C1DB8


postgres=# select pg_last_xlog_replay_location();
 pg_last_xlog_replay_location 
------------------------------
 0/540C1DB8
 (1 row)

postgres=#    SELECT CASE WHEN pg_last_xlog_receive_location() = pg_last_xlog_replay_location()
                  THEN 0
                ELSE EXTRACT (Epoch FROM now() - pg_last_xact_replay_timestamp())
              END AS log_delay;
 log_delay 
-----------
 0
 (1 row)
8
truth

以下のSQLクエリを使用して、通常Postgres v11のステータスをチェックします。

マスター上:

select * from pg_stat_replication;

レプリカ上(私の場合はストリーミングレプリケーション):

select * from pg_stat_wal_receiver;
7
Alexey